Home › Forum › Le librerie ospitate nel sito › PCF8575 expander digitale I/O i2c a 16bits › PCF8575 e Micro su Matrici
- Questo topic ha 1 risposta, 2 partecipanti ed è stato aggiornato l'ultima volta 2 mesi, 1 settimana fa da
Renzo Mischianti.
-
AutorePost
-
-
11 Marzo 2025 alle 23:39 #32260
Salve, Grazie x il lavoro !
Ho acquistato i chip e scaricato la sua libreria dopo aver letto l’articolo, perchè volevo realizzare con un Pro/Micro e più interfaccie PCF8575 uba specie di multitastiera, praticamente più
interfaccie a matrice di vari pannelli di un cocpit utilizzando una sola CPU.
Ho realizzato da prima la matrice a provata diretta sul Micro, e visto che tutto era ok sono andato avanti per farla leggere ak PCF8575.
La matrice è fatta da circa 8 colonne e 7 righe, come primo progetto i pulsanti portavano a massa.
Percui ciclo for tutte le colonne alte some set up e poi le abbassavo in sequenza ed andavo a leggere le righe singolarmente, con un incrementale per individuare il pulsante.
Più un array per verificare lo stato antecedente in modo da rilevare solo i fronti di salita o discesa.
Sul micro nessun problema, collegato al PCF sono iniziati i problemi. Ho introdotto dei ritardi sia da quando mando alto la colonna che dopo aver chiamato la lettura, altrimenti non ne voleva sapere.
Una volta trovati indicativamente dei tempi che potessero andare , però la matrice si comporta in modo strano, sembra diafonia su i fili, delle righe vanno , altra blinkano tra on ed off ecc ecc.
Così l’ho rifatta, visto che le uscite pilotano corrente , ho cambiato logica, messo dei pull up da 1 k sulle uscite e portate a messa e poi le alzo separatamente con un BAT come diodo per disaccoppiare. Ho risolto poco però.
Sempre problemi di diafonia, in base a come muovo i cavi, circa 30 cm succedono magie.
Ho visto leggendo l’articolo che è possibile fare una lettura del buffer dell’ IO tipo shift register e poi andare a lavorare sulle singole posizioni. Così ho pensato OK, aumento i tempi, peggo in una sola volta e poi estraggo dalla singola lettura.
Ma nulla , come lancio il readall sia in low memory che normale, il pro/micro si pianta.
Dunque le domande sono multiple, la n1 meglio che lasci perdere non nasce per fare una cosa del genere?
La 2 metto resistenze di pull up di valori più bassi, anche se tiro più corrente diminuisco la diafonia e risolvo?
La 3 , devo cambiare micro il 32u4 meglio destinarlo ad altre cose?
Grazie anticipatamente
RiccardoP.S. allego anche il codice che stò usando per fare la varie prove
Attachments:
You must be logged in to view attached files. -
14 Marzo 2025 alle 09:06 #32264
Ciao Riccardo,
così di primo acchito ti direi
– Potresti provare a leggere simultaneamente più righe o colonne anziché farlo una alla volta. Questo può ridurre i tempi di latenza e limitare la diafonia.
– Aggiungere condensatori di disaccoppiamento: Se la diafonia persiste, prova a mettere dei condensatori da 100nF tra GND e VCC vicino ai pin I/O.
– Se il microcontroller è limitato in memoria, potresti considerare l’uso di un buffer esterno o ottimizzare la logica di lettura della matrice per farla più efficiente.
Ciao Renzo
-
-
AutorePost
- Devi essere connesso per rispondere a questo topic.