La maggior parte dei microcontrollori (ad es. AVR, MSP430, PIC, ecc.) Supporta una serie di diverse modalità di sospensione. La modalità di sospensione "più profonda" è quella che pretende il consumo di energia più basso (ad esempio "Spegnimento", "Spegnimento"), ma tutti i sistemi di clock sono in genere arrestati in queste modalità e mi sembra che l'unico modo per " sveglia "da loro avviene tramite stimolo esterno (es. interruzione cambio pin, reset chip). Mi sto perdendo qualcosa? Esistono metodi incredibilmente a bassa potenza per generare un segnale di sveglia periodica per un MCU?
Supponendo che il mio obiettivo sia minimizzare il consumo di energia (cioè dormire profondamente il più a lungo possibile, rimanere svegli il più brevemente possibile), mentre mi sveglio periodicamente per eseguire una funzione, qual è il modo comune per ottenere questo tipo di comportamento? Per semplificare ulteriormente le cose, supponiamo che la mia funzione sia apolide (non devo ricordare nulla del passato per eseguirla).
Ho avuto un certo successo usando il WDT sull'MSP430 per ottenere questo effetto. Ho appena reso la mia routine principale la mia funzione, con l'ultima riga che consente al timer watchdog di scadere dopo un certo periodo e passare a LPM4.5 o qualunque sia la modalità "deep sleep". Il risultato netto è che la funzione viene eseguita, la MCU si spegne, il WDT scade e il chip si reimposta, fino alla nausea. Sembra funzionare, chiedendosi solo se esiste un modo "migliore" o "più elegante" o "più efficiente dal punto di vista energetico" per ottenere questo tipo di comportamento?
Non ho ancora provato questo approccio con un AVR, ma penso che il WDT sia più "assetato di potere" negli AVR che sull'MSP430, quindi potrebbe essere meno attraente per lavori a bassa potenza. Forse non esiste un approccio "universale" alla bassa potenza e devi usare gli strumenti offerti da una determinata linea di prodotti? So che la nuova linea picoPower ha molte funzionalità whiz-bang come Event System e Sleep Walking che in alcuni casi difficilmente richiedono che la CPU sia completamente sveglia se riesci ad adattare la tua applicazione a quella struttura ...
OK abbastanza del mio girovagare, lascia qui cosa dovresti dire :)
Modifica Anche esempi concreti che illustrano le tecniche sarebbero fantastici!