Nella lezione su come collegare un display TFT a colori via SPI al SAMD21 abbiamo visto come aggiungere un'interfaccia molto utile ai nostri progetti. In questa lezione impareremo a collegare una tastiera PS/2 che ci consentirà di inviare caratteri al microcontrollore, similmente a quanto abbiamo fatto fin'ora con la UART, ma svincolandoci dal fatto di avere un PC con un terminale seriale a disposizione.
La tastiera PS/2: il protocollo
La tastiera impiega tutto il suo tempo a controllare (in inglese scanning, da to scan) la matrice di tasti che la compone. Alla pressione di un tasto la tastiera invia un codice di 8 bit (un byte), detto scan code, che identifica il tasto che è stato appena premuto: ad esempio premendo il tasto A, la tastiera invia 0x1C; allo stesso modo, quando un tasto viene rilasciato, la tastiera invia un altro codice, questa volta di due byte, uno per indicare che un tasto è stato rilasciato, ed è lo stesso per tutti, 0xF0, e un altro che indica quale tasto è stato rilasciato (lo stesso di quando viene premuto): ad esempio, quando viene rilasciato il tasto A la tastiera invia 0xFO 0x1C. Il codice che viene inviato alla pressione viene chiamato make code, quello che viene inviato al rilascio è detto break code. Ogni tasto ha i suoi codici make e break, e il set completo di codici della tastiera è chiamato scan code set (ne esistono tre, ma la maggior parte delle tastiere utilizza lo scan code set 2 di default, figura 1).
Nonostante la maggior parte dei tasti abbia un codice costituito da un byte, ci sono alcuni tasti il cui scan code è costituito da due o quattro byte: questi vengono detti extended keys e il loro codice si riconosce dal primo byte che è sempre 0xE0 (figura 2). Quando un extended key viene rilasciato il break code inizia per 0xE0, seguito da 0xF0 e dal make code.
Quando un tasto viene tenuto premuto, dopo un certo tempo, la tastiera continua ad inviare ad intervalli regolari il codice del tasto (si dice che il tasto è typematic e il ritardo si chiama typematic delay); se più tasti vengono tenuti premuti, solo il codice dell'ultimo tasto viene inviato ad intervalli regolari (typematic rate) e se viene rilasciato l'invio di codici si ferma, anche se gli altri tasti restano premuti. Non c'è una relazione fra gli scan code della tastiera e i codici ASCII, il modo migliore per associare un tasto a un carattere è utilizzare una look up table, ad esempio un array. Oltre ad inviare scan code, la tastiera è in grado di ricevere ed elaborare comandi, ad esempio per configurare diversi parametri (lo scan code set utilizzato, o il typematic delay/rate), ma in questa lezione ci occuperemo solamente della comunicazione da tastiera a microcontrollore.
Il connettore e i segnali della tastiera PS/2
La tastiera PS/2 utilizza quattro connessioni, e il connettore con i relativi segnali è [...]
ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2780 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.
Qui trovate l’elenco di tutti gli articoli del corso http://it.emcelettronica.com/?s=corso+arm+embedded . Il prossimo mese sarà l’ultima puntata.