Arduino CRASH

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.

Sono disperata non so cosa fare.

Grazie di cuore a tutti.

Sabrina

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 ancora
Sabrina

ciao Sabrina
Il ATmega328 ha 1024 byte die EEprom.
Mandaci lo sketch perché senza peschaimo nel buio.
Ciao Uwe

non'è che usi millis o micros? o qualcosa di simile che dopo un pò và in overfolw?

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.

Grazie di cuore a tutti.
Sabrina