buonasera a tutti.
seguo tale forum da tempo con soddisfazione percè c'è sempre da imparare e non si mai visto tutto.
ho progettato una scheda di controllo dove utilizzo un ATMEGA1284.
alimentazione a 5Vcc e BOD a 4.3V.
ho un LCD 2x20 che mostra informazioni di stato.
è installata in un sistema di monitoraggio ambientale per ambiente domestico,
interfaccio sonde e rilevatori di vario genere. tutto in bassa tensione. tutto isolato con trasformatori di segnale o sistemi ottici.
ho già installato una decina di schede da qualche mese e non ho problemi.
programmo e verifico con AVR Studio 7 e AVRISP mkii
proteggo il chip da future riprogrammazioni o letture ... così forse non mi copiano il firmware.
su una scheda sto sperimentando un problema che non mi so proprio spiegare:
1 - testando il tutto per giorni in laboratorio non sperimento nessun problema
2 - installato dal cliente, per una decina di minuti tutto OK.
3 - spento e riacceso
4 - il programma parte, comincia l'inizializzazione e varie info sono mostrate correttamente sul display
5 - inspiegabilmente compare una riga che può essere stampata solo nel loop principale. La scritta è precisa, definita, senza caratteri strani, nella sua posizione. poi scompare.
6 - continua l'inizializzazione con altre info di stato sul display mostrate correttamente
7 - entra nel loop principale e stampa quanto dovuto per una frazioen di secondo
8 - e resetta in quanto interviene il watch dog a 4 secondi.
9 - e così per sempre
faccio uso di interrupt per generarmi la base dei tempi 1uS, e gestire qualche contatore.
sempre con interrupt gestisco un ricevitore infrarossi.
tale comportamento è stabile, sempre lo stesso da quando si è presentato.
che ci sia luce o no, che ci siano neon o no (infrarosso).
cambio il chip con un uno nuovo, stesso identico firmware ed EEPROM.
tutto funziona come dovuto ed adesso sono 7 giorni che tutto è stabile.
il chip incriminato "corrotto" lo monto in laboratorio su una scheda identica a quella dove si è presentato il problema.
identico comportamento: inizializzazione, compare una riga che può essere generata solo nel loop principale, ritorna all'inizializzazione nella corretta sequenza, e poi watch dog.
con un altro chip, tale scheda funziona correttamente.
perciò è il chip che ha il firmware "corrotto".
qualcuno ha mai sperimentato qualcosa di simile?
corrotto il firmware?
se così fosse non vorrebbe stampata una riga bella definita che può essere generata solo nel loop principale ... saranno 100 istruzioni assembler.
purtroppo il chip è protetto e non posso scaricare il firmware e la eeprom per controllare.
corrotto l'indirizzo di rientro da interrupt?
... ma l'inizializzazione ha solo un intermezzo dove viene stampata tale riga non pertinente, dopo continua correttamente, e la gestione interrupt non stampa nulla.
... lo stesso firmware finora non ha mai manifestato tale problema.
cosa potrei controllare?
qualche idea?