Ho una scheda Arduino ATMega328 personalizzata che generalmente funziona a 5V @ 8MHz (usando il profilo Arduino Pro 3.3V 8MHz e il bootloader). Il motivo principale per cui utilizzo questa configurazione è che posso mettere la scheda in modalità sleep quando l'alimentazione principale viene disconnessa e inizia a scaricarsi dalla batteria (3 V da una cella a bottone). Le sorgenti 5V e 3V sono diodi OR insieme e l'ingresso 5V è collegato a INT0. Nel codice, quando rileva che INT0 è diminuito, inizializza la modalità di sospensione e tutto si spegne, ad eccezione del timer del watchdog che mantiene un ciclo di 1Hz per mantenere un conteggio interno e controllare che il chip debba essere ripristinato. Questo funziona ben quando 5V prima applicazione, quindi viene inserita la batteria, poi5V è disconnesso. Va a dormire e quando viene ripristinato il 5V si sveglia e vedo che non ha perso il conto.
Tuttavia, il problema si presenta alla prima applicazione di 3V . Onestamente non sono sicuro che si stia persino avviando. Ma quello che dovrebbe fare è avviare, controllare se INT0 (Digital 2) è basso e, in tal caso, andare a dormire. Osservando l'assorbimento di corrente, vedo che si accende fino a pochi mA per un paio di secondi, quindi scende a circa 0,3 mA (ancora più alto di quanto dovrebbe essere in modalità di sospensione). Ma quando riapplico 5V, niente . L'assorbimento di potenza torna indietro ma non risponde (tramite seriale FTDI).
C'è forse qualcosa che mi manca che non può essere avviato su 3V ... in teoria dovrebbe funzionare bene.
Aggiornamento: ho lasciato cadere un LED su D13 e ho provato lo schizzo delle palpebre. Funziona bene quando si inizia da 3 V o 5 V. Tuttavia, quando eseguo il mio firmware e lo avvio da 3 V, il LED inizia a lampeggiare selvaggiamente. Non ho idea di cosa lo stia causando dal momento che non ho nemmeno impostato D13 come qualcosa nel mio codice. Ma mi fa pensare che abbia a che fare con il bootloader ...