2020/05/19

Lo schema della matrice

Lo schema della matrice:

L’ho riprodotto con KiCad utilizzando questo script python per generare la matrice, ma poi son dovuto andare a colpi di perl1 per nascondere varie etichette e valori inutili.

A parte questo inutile dettaglio di elaborazione, si può vedere come tutte e 40 le “posizioni” della matrice siano occupate una volta che si aggiungono i tre tasti di controllo.

Le etichette sui fili (pd0, pd1, … e pc0, pc1, …) dovrebbero riferirsi alle porte D e C (rispettivamente) dell’ATmega 328P. Questo µC ha 23 programmable I/O lines.

La porta C

is a 7-bit bi-directional I/O port with internal pull-up resistors (selected for each bit). […] As inputs, Port C pins that are externally pulled low will source current if the pull-up resistors are activated. […]

If the RSTDISBL fuse is programmed, PC6 is used as an input pin. If the RSTDISBL fuse is unprogrammed, PC6 is used as a reset input.

Mentre la porta D

is an 8-bit bi-directional I/O port with internal pull-up resistors (selected for each bit). […] As inputs, port D pins that are externally pulled low will source current if the pull-up resistors are activated. […]

Queste citazioni vengono dal datasheet.2

Quindi la porta D è completamente usata per la lettura delle 8 righe, mentre della porta C sono usati “solo” 5 pin per la lettura delle colonne.

I pin delle due porte C e D possono avere anche delle funzioni alternative: vari Pin Change Interrupt, analog comparator, ADC input channel, …

A proposito di KiCad e di tool vari

Mio padre aveva KiCad installato3, insieme ad altri tool opensource, ma in realtà gli schemi più recenti sono tutti su un software proprietario (piratato4; ho visto il costo annuo della licenza, e chiaramente non è un investimento fattibile per progetti amatoriali).

Credo che ad averlo attirato verso quel software professionale fosse stata la possibilità di simulare il progetto in modo semplice e immediato, oltre che accurato. Non credo che esista un equivalente pratico nel mondo opensource: GPL EDA mostra delle possibilità ma, a parte gli eventuali limiti, ho visto che non sono molto pratici — o almeno bisogna lavorare di più per sistemare un opportuno workflow

Post scriptum

Come detto altrove per ogni tasto ci sono due “sensori” (interruttori) per sentirne l’inizio e la fine della pressione, utili se si è interessati alla velocità. Mio padre alla fine non l’aveva presa in considerazione. Se l’avesse fatto, avremmo avuto in pratica una matrice 8×10 (con 37×2 posizioni occupate dai tasti delle note, e in teoria 6 posizioni usabili per altrettanti controlli).

Immagino che ci sarebbe stata una complicazione del circuito, oltre che del codice, per poterle gestire, in maniera simile a quello che era stato pensato per poter leggere tutti i potenziometri e anche accendere dei LED.


  1. Di solito uso perl -i.bk -pe ... invece di sed. Prima di capire cosa sostituire con cosa, ho dovuto rendere non visibile un elemento in eeschema e poi fare diff per capire come cambiare la visibilità dell’elemento.↩︎

  2. Microchip ha acquistato l’Atmel.↩︎

  3. Papà riusciva a mantenere vivo e funzionante un computer con Microsoft Windows XP. Detestava la Microsoft, e ancora di più i suoi sistemi “moderni”. Probabilmente Windows XP era l’ultimo Windows che riteneva un minimo decente, almeno in paragone a ciò che arrivò dopo!↩︎

  4. Piratato ma doveva essere una versione funzionante su Windows XP…↩︎

Nessun commento:

Posta un commento

Commenta solo per dare un contributo utile, una critica costruttiva o fare un'osservazione acuta. Non commentare solo per dire che esisti anche tu o che ti piace o dispiace quello che hai letto e visto su questo blog.