Úsporné režimy procesora
Zo stránky SensorWiki
Záverečný projekt predmetu MIPS / LS2026 - Gordii Chornyi
Zadanie
Cieľom tohto projektu je oboznámenie s zabudovanymí úspornymí režimami procesora.
Hardware v tomto projekte je doska ACROB s mikrokontroler ATmega328P.

Literatúra:
- How to optimize Arduino for low power design
- Sleep Modes and Power Management
- Dokumentacia k ATmega328P
Analýza a opis riešenia
Arduino doska može byť použitá v strojoch, ktoré s spoliehaju na externý zdroj energie a hlavné na uchovanú energiu v akumulatori. Prístup ku externému zdroju môže byť nepravidelný a nie je tak efektívny, ako by sme chceli.
V takejto situácii chceme, aby komponenty stroja využívalí čo najmenej energie a zaroveň zachovávali požadovanú efektivnosť a potrebné schopnosti.
V tomto momente, pravdepodobne, nastane problem: Chceme zobrať malu dosku s malou spotrebou energie, ale pre správnu prácu stroja musime zobrať väčšiu dosku, s väčšou spotrebou, s požadovaným výkonom a funkciami.
Ako jeden zo spôsobov vyriešiť problem veľkej spotreby energie je použiť jeden z úsporných režimov.
Nam sú dostupné 6 úsporných režimov:
- - Idle
- - ADC noise Reduction
- - Power-down
- - Power-save
- - Standby
- - Extended standby

Idle
Vypína iba procesor, čo dáva dosť veľa možnosti zobudenia signal z vonku aj z vnutra. Ak chceme máme možnosť vypnuť analógový komparátor v prípade, že ho nepotrebujeme.
ADC noise Reduction
Veľmi podobný ako Idle s rozdielom v tom, že vypína aj SPI a USART. Toto umožňuje zväčšiť kvalitu merania ADC prevodnika.
Power-down
Vypína skoro všetko. Zobudenie je možne iba cez (TWI) 2-wire serial interface, Watchdog, prerušenie na pinoch INT0 a INT1 z vonka, prerušenie z ostatných pinov.
Power-save
-
Standby
-
Extended standby
-
Algoritmus a program
Algoritmus programu využíva toto a toto, základné funkcie sú takéto a voláma ich tuto... Výpis kódu je nižšie...
#include <avr/io.h>
int main(void)
{
unsigned int measuredValue;
while (1)
{
/* relax */
}
return(0);
}
#include <avr/io.h>
void adc_init(void); // A/D converter initialization
unsigned int adc_read(char a_pin);
Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x zdrojaky.zip:
Zdrojový kód: zdrojaky.zip
Overenie
Ako ste overili funkciu, napríklad... Na používanie našej aplikácie stačia dve tlačítka a postup používania je opísaný v sekcii popis riešenia. Na konci uvádzame fotku hotového zariadenia.

Video:
Čo by som urobil inak
Zamyslite sa spätne nad problémom, ktorý ste riešili a napíšte, čo sa vám nepodarilo a nabudúce by ste spravili inak.
Kľúčové slová 'Category', ktoré sú na konci stránky nemeňte.