Corso Embedded ARM: una shell per il SAMD21

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).

Figura 1: scan code set 2, utilizzato di default dalla maggioranza delle tastiere

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.

Figura 2: scan code degli extended keys

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 PLATINUM. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici MAKER e PLATINUM e potrai fare il download (PDF) di tutti gli EOS-Book, Firmware e degli speciali MONOTEMATICI. ABBONATI ORA, è semplice e sicuro.

Abbonati alle riviste di elettronica

Una risposta

  1. Maurizio Di Paolo Emilio Maurizio Di Paolo Emilio 5 maggio 2017

Scrivi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *