Lettura tastiera qwerty con bascom

Sezione dedicata al sistema di sviluppo BASCOM-AVR per i micro AVR
At90s, Attiny, Atmega e Xmega

Lettura tastiera qwerty con bascom

Postby quark30 » 15 Sep 2012, 20:21

salve,
avrei necessità di inserire dati (numeri e parole) in un programma utilizzando una piccola tastiera qwerty, tipo quella dei pc.
la scheda prevede la presenza di un lcd 20x2 + una tastiera qwerty italiana.
c'è un modo per interfacciarsi ai microcontrollori avr usando il bascom?
..........spero di si.. :oops:

ciao e grazie
quark30
 
Posts: 20
Joined: 30 Jul 2012, 11:15

Re: Lettura tastiera qwerty con bascom

Postby flz47655 » 16 Sep 2012, 10:00

Ciao,
Da http://en.wikipedia.org/wiki/PS/2_connector il connettore PS/2 sembra interfacciabile senza problemi:

Data signal Serial data at 10 to 16 kHz with 1 stop bit, 1 start bit, 1 parity bit (odd)

Quindi non dovresti avere problemi di performance a ricevere dati dalla tastiera, devi cercare informazioni sul protocollo (che sembra comunque molto semplice) per concretizzare il tutto

Ciao
flz47655
 
Posts: 639
Joined: 19 Jan 2012, 21:16

Re: Lettura tastiera qwerty con bascom

Postby quark30 » 16 Sep 2012, 10:13

flz grazie dell'aiuto cmq
ma non è questa l'informazione che cerco...
so benissimo quali sono i segnali della tastiera ma quello che voglio sapere è se è possibile leggere ed interpretare i dati dei keycode da essa trasmessi con il bascom per poterli inserire in un programma come se scrivessi in un monitor. ok?
quark30
 
Posts: 20
Joined: 30 Jul 2012, 11:15

Re: Lettura tastiera qwerty con bascom

Postby flz47655 » 16 Sep 2012, 10:41

Ciao,

alla domanda "c'è un modo per interfacciarsi ai microcontrollori avr usando il bascom?" la risposta è si

alla domanda "è possibile leggere ed interpretare i dati dei keycode da essa trasmessi con il bascom per poterli inserire in un programma come se scrivessi in un monitor" la risposta è si

Tutto è possibile (fermo restando i limiti prestazionali e di memoria), con il bascom hai un insieme funzionalmente completo di istruzioni e puoi realizzare qualunque funzione logica via sw.

Il problema è come fare, per questo ti consigliavo di studiare il protocollo (non è complicato) per poter capire come leggere i dati dei keycode.

Ciao
Last edited by flz47655 on 16 Sep 2012, 12:32, edited 1 time in total.
flz47655
 
Posts: 639
Joined: 19 Jan 2012, 21:16

Re: Lettura tastiera qwerty con bascom

Postby quark30 » 16 Sep 2012, 11:17

flz scusa ma perchè questi toni forti e sottolineati?
io sono qui per chiedere se e come si fa ad usare la tastiera utilizzando il bascom.
vorrei sapere se ci sono istruzioni già pronte all'uso per poterle utilizzare nel codice che sto scrivendo.

la mia domanda è :"c'è un modo per interfacciarsi ai microcontrollori avr usando il bascom?"
è chiaro che nella mia domanda è sottinteso "come si fa".

tu mi puoi aiutare?
quark30
 
Posts: 20
Joined: 30 Jul 2012, 11:15

Re: Lettura tastiera qwerty con bascom

Postby Fagos » 16 Sep 2012, 11:28

ciao
so che si può fare
se ho capito bene, bisogna innanzitutto configurare la porta dove è attaccata la tastiera, tipo:

Config Keyboard = Pind.2 , Data = Pind.4 , Keydata = Keydata

poi altro non saprei....
User avatar
Fagos
 
Posts: 100
Joined: 31 Aug 2011, 15:01

Re: Lettura tastiera qwerty con bascom

Postby flz47655 » 16 Sep 2012, 12:52

Ciao,
Scusami non volevo "urlare" ma rendere più leggibile la risposta, forse ho esagerato però con le formattazioni (ho rimediato)
Istruzioni (librerie) già pronte non saprei.. innanzitutto se è una tastiera USB un adattatore USB->PS/2 potrebbe semplificarti la vita.

Ho letto che il protocollo è molto semplice da implementare e più che cercare qualcosa di già pronto volevo spingerti nella direzione un pò più impegnativa di capire come funziona il protocollo e e scrivere quindi del codice per interagire con la tastiera.

Provo a darti qualche informazione sul protocollo PS/2 (molto simile al protocollo seriale):
Quando si preme un tasto viene "movimentata" la linea del clock. Sui fronti di discesa del clock la linea dati rappresenta i bit del tasto che in tutto sono 11, il primo è uno zero, poi 8 bit del codice (LSB) poi il bit di parità (dispari) e infine il bit di stop (sempre 1).

Se hai già usato gli interrupt del micro potresti utilizzarli per rispondere alla pressione dei tasti lasciando libera la MCU di fare altri compiti quando nulla è stato premuto.

Hai ora un idea di come implementare il codice?
Per iniziare potresti implementare il codice senza interrupt per poi migliorarlo con gli interrupt, se proprio non hai ancora idee prova a vedere una possibile implementazione http://nocommercialpotential.posterous. ... 2-keyboard che anche se non è bascom puoi considerare come pseudo-codice

Trovi maggiori informazioni sul protocollo al link http://www.computer-engineering.org/ps2keyboard/

Se hai molta fretta purtroppo devi aspettare che qualcuno posti del codice già pronto

Ciao
flz47655
 
Posts: 639
Joined: 19 Jan 2012, 21:16

Re: Lettura tastiera qwerty con bascom

Postby quark30 » 18 Sep 2012, 10:49

ciao ragazzi,
sono ancora alle prese di questa applicazione e sto tentando varie strade per arrivare alla meta.
ho studiato il protocollo ma la cosa mi sembra complessa....
purtroppo non resco a capire come leggere i dati dalla tastiera dopo aver configurato la connessione.
devo abilitare interrupt o cosa?
come faccio a realizzare la corrispondenza tra i codici prelevati dalla seriale PS2 e i caratteri ascii?

qualcuno potrebbe darmi una mano?
grazie tante
quark30
 
Posts: 20
Joined: 30 Jul 2012, 11:15

Re: Lettura tastiera qwerty con bascom

Postby deluca » 20 Sep 2012, 08:23

@quark30, ciao
non so se allegandoti il codice ti aiuto,
cmq prendilo come spunto per le tue prossime applicazioni
esso è configurato per un atmega328p, quello di arduino uno per interderci....
In questo esempio i dati dalla tastiera qwert vengono convertiti in caratteri ascii e reindirizzati sulla la seriale.

NB. Una porzione di codice è scritta in assembly per ottimizzare il codice di intercettazione dei tasti premuti.
Al pind.2 del micro va il clock della tastiere, mentre al pind.3 va il data.

Code: Select all
'*******************************************************************************
'  programma per interfacciare una tastiera PS2 e reindirizzarla sulla seriale
'  ------------------------
'  autore: Giovanni De Luca - INFN-LNS
'*******************************************************************************
$regfile = "m328pdef.dat"
$crystal = 16000000
$hwstack = 32
$swstack = 32
$framesize = 32
$baud = 115200

Config Keyboard = Pind.2 , Data = Pind.3 , Keydata = Keydata

Dim S As String * 50
Dim B As Byte

'in questo esempio la tastiera viene reindirizzata sulla seriale
$serialinput = Kbdinput

Print "PS2 Keyboard test"
'----------------------------[ main ]-------------------------------------------
Do

  Input "Name: " , S
  Print S
  'aspetta F1 per uscire dal loop
  Do
    B = Getatkbd()
  Loop Until B <> 0

Loop
End
'-------------------------------------------------------------------------------
Kbdinput:
$asm
 push r16            ; save used register
 push r25
 push r26
 push r27

Kbdinput1:
 rCall _getatkbd     ; Call the Function
 tst r24             ; check For zero
 breq Kbdinput1      ; yes so try again
 pop r27             ; we got a valid key so Restore registers
 pop r26
 pop r25
 pop r16
 $end Asm
Return

B = Getatkbd()
'-------------------------------------------------------------------------------
Keydata:
'codici Tasti normali lower case
Data 0 , 0 , 0 , 0 , 0 , 200 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &H5E , 0
Data 0 , 0 , 0 , 0 , 0 , 113 , 49 , 0 , 0 , 0 , 122 , 115 , 97 , 119 , 50 , 0
Data 0 , 99 , 120 , 100 , 101 , 52 , 51 , 0 , 0 , 32 , 118 , 102 , 116 , 114 , 53 , 0
Data 0 , 110 , 98 , 104 , 103 , 121 , 54 , 7 , 8 , 44 , 109 , 106 , 117 , 55 , 56 , 0
Data 0 , 44 , 107 , 105 , 111 , 48 , 57 , 0 , 0 , 46 , 45 , 108 , 48 , 112 , 43 , 0
Data 0 , 0 , 0 , 0 , 0 , 92 , 0 , 0 , 0 , 0 , 13 , 0 , 0 , 92 , 0 , 0
Data 0 , 60 , 0 , 0 , 0 , 0 , 8 , 0 , 0 , 49 , 0 , 52 , 55 , 0 , 0 , 0
Data 48 , 44 , 50 , 53 , 54 , 56 , 0 , 0 , 0 , 43 , 51 , 45 , 42 , 57 , 0 , 0

'codici Tasti shiftati UPPER case
Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
Data 0 , 0 , 0 , 0 , 0 , 81 , 33 , 0 , 0 , 0 , 90 , 83 , 65 , 87 , 34 , 0
Data 0 , 67 , 88 , 68 , 69 , 0 , 35 , 0 , 0 , 32 , 86 , 70 , 84 , 82 , 37 , 0
Data 0 , 78 , 66 , 72 , 71 , 89 , 38 , 0 , 0 , 76 , 77 , 74 , 85 , 47 , 40 , 0
Data 0 , 59 , 75 , 73 , 79 , 61 , 41 , 0 , 0 , 58 , 95 , 76 , 48 , 80 , 63 , 0
Data 0 , 0 , 0 , 0 , 0 , 96 , 0 , 0 , 0 , 0 , 13 , 94 , 0 , 42 , 0 , 0
Data 0 , 62 , 0 , 0 , 0 , 8 , 0 , 0 , 49 , 0 , 52 , 55 , 0 , 0 , 0 , 0
Data 48 , 44 , 50 , 53 , 54 , 56 , 0 , 0 , 0 , 43 , 51 , 45 , 42 , 57 , 0 , 0
'-------------------------------------------------------------------------------

fammi sapere.
Ciao
Il mio sito: http://www.delucagiovanni.com ......e la chat: chat/
User avatar
deluca
Site Admin
 
Posts: 1104
Joined: 19 Jun 2011, 10:44
Location: 95123 - Catania (Italy)

Re: Lettura tastiera qwerty con bascom

Postby quark30 » 21 Sep 2012, 18:12

cioè deluca sei proprio grande !!!!
grazie per il codice non so come ringraziarti, spero un giorno potrò ricambiare.
era proprio quello che mi interessava trasformare la tastiera qwerty in un codificatore ascii via uart.
penso dovrò fare qualche piccola modifica ma per il resto mi sembra troppo perfetto.
adesso provo a montare il tutto, compilo programmo e ti faccio sapere quanto prima.

grazieeee veramente tanto
ciao
quark30
 
Posts: 20
Joined: 30 Jul 2012, 11:15


Return to BASCOM-AVR

Who is online

Users browsing this forum: No registered users and 6 guests

cron