Ho appena acquistato 2 Arduino328 DUEMILANOVE.
Ho fatto un sw che, attraverso l'usb, possa trasmettere ad un pc i valori letti dagli AD.
Funziona tutto quasi perfettamente ma ogni 2..4 giorni mi ritrovo la scheda Arduino con il led verde (uscita digitale 13) che lampeggia velocemente (circa 18Hz) e con la comunicazione bloccata.
Ho provato a premere il pulsante reset ma continua il blocco (durante il reset il led verde si spegne ma appena rilascio il reset riprende a lampeggiare). Questo blocco rimane anche togliendo il connettore USB della connessione al PC.
L'unico modo di uscire da questo stato è quello di togliere l'alimentazione.
Ho già provato a:
impostare tutte le uscite non utilizzate come OUTPUT
inserire un condensatore tra GND e AVREF
mettere tutti gli AD non utilizzati a GND
abilitare il watchdog dell'ARDUINO
inserire un filtro sull'alimentazione esterna (+12V)
Ma malgrado tutto continuano crashare entrambe le schede.
Sembra quasi un bug a livello di bootloader.
Non credo, ormai il boot loader attuale è in giro da un bel pezzo. Al massimo come prova del 9 puoi usare il nuovo boot loader optiboot dell'UNO
hai settato analogReference()?
sicura che non continui ad occupare ram/stack, magari con funzioni ricorsive, malloc, ecc...?
sicura che non occupi tutta la eprom emagari cerchi di accedere ad aree non valide?
starno che tu debba proprio togliere l'alimentazione... con il reset persino il boot-loader viene riavviato, quindi direi che è più un problema esterno all'arduino
Puoi postare il codice e uno schema dei collegamenti?
Grazie per la risposta.
Utilizzo 500 byte di EEprom e ho alcune funzioni che chiamano altre funzioni ma non vado oltre le 4 chiamate annidate.
L'analogReference() in effetti non l'ho settato (ma non è già settato DEFAULT al reset?).
Grazie a tutti per l'aiuto,
probabilmente ho risolto con wtd_disable() nella routine setup().
Avendo sia 2 schede e sia 2 PC ho provato ad avviare entrambe le schede una con watchdog e una senza.
Quella con watchdog è già "crasshata" 2 volte mentre quella senza è da stanotte che continua ad andare.