Ciao a tutti, sono settimane che sto tentando di capire come mai mi succeda ma non riesco proprio ad arrivare al motivo: utilizzo un programma per la gestione di due canali pwm portati tramite transistor a 0-10v con qualche sonda di temperature db18b20 ed un rtc... in più di un anno non mi ha mai dato problemi, mai un freeze... poi, da quando ho cambiato display e provato a pilotarlo in I2C con un pcf8475 sono iniziati i problemi: si blocca ad orari casuali (me ne accorgo perchè l'ora sul display non viene aggiornata) ma la cosa strana è che capita una volta ogni 2 giorni, poi la volta successiva dopo 1h dal riavvio, ed ancora magari dopo 9h....
Capisco che detto così possa non essere abbastanza esauriente con le spiegazioni ma lo sketch non posso inserirlo poichè è troppo lungo e non posso nemmeno mettere in evidenza la parte di codice che genera il problema poichè non ho idea di quale sia....
premetto che il programma è rimasto tale e quale a quello di un anno fa... l'unica modifica è stata appunto quella del display
il primo dubbio che mi è venuto e su cui vi chiedo un primo riscontro è questo:
il pcf8475 è installato su basetta ramata direttamente sui connettori del display --> ciò significa che i due cavi dell'I2C sono lunghi circa 170cm per connettere i pin A4 e A5 all'integrato. come cavi ho utilizzato degli rj45 (ethernet)... potrebbe essere questa configurazione dei cavi (troppo lunghi) a mandarmi in freeze il programma?
ho anche notato che ogni tanto sul display l'ora cambia in numeri assurdi... ad esempio se sono le 9:45, può capitare che qualche volta per un secondo segni 45:56 per poi tornare all'ora giusta.... io credo che questo possa essere un errore abbastanza serio da poter bloccare tutto il codice perchè l'orologio viene interrogato ogni 2 secondi circa per poter dal un lato aggiornare l'ora sul display e dall'altro per regolare le uscite pwm a certi orari della giornata..
è l'unica cosa che a me viene in mente... perchè il programma prima ha sempre funzionato e di conseguenza non può certo trattarsi di un'errata o cattiva struttura delle connessioni, anche perché tutta la parte hardware è stampata su basetta ramata ed innestata su Arduino.
spero che qualcuno mi possa aiutare prima che impazzisca e ritorni a pilotare il display tramite shift register (dovendo però ridisegnare e ristampare tutto il circuito)