Původně se jednalo pouze o malý test režimu spánku na AVR mikrokontolérech. Průměrná spotřeba (s LED diodou zapnutou 3ms každé 4s) je okolo 15 µA, takže na dva alkalické AA články může blikat několik let, na jeden CR2032 článek může blikat přes rok.
Schéma zapojení (klikněte pro plné rozlišení)
Pokud chcete blikat pouze s jednou diodou, odstraňte R2, D2 a použijte firmware pro jednu LED (ke stažení na konci stránky).
Jedná se o extrémně jednoduchý obvod, obsahuje pouze několik málo součástek (2 LED, 2 rezistory, kondenzátor a jeden mikrořadič ATtiny13). Použití mikrořadiče na blikání s LED je doslova kanón na vrabce, ale je to nejjednodušší způsob dosažení nízké spotřeby.
ATtiny13 a většina ostatních mikrořadičů obsahuje časovač nazvaný "watchdog", jedná se o časovač, co běží nezávisle na zbytku mikrořadiče. Může mikrořadič resetovat, spustit přerušení a vzbudit mikrořadič ze spánku (deep sleep). Tento mikrořadič také podporuje několik režimů spánku, zde se používá hluboký spánek (deep sleep), kdy se vypnou prakticky všechny části mikrořadiče a znova se spustí pouze externím přerušením (INT0, PCINT) či watchdogem. V tomto režimu mikrořadič bere pouze okolo 4µA (se zapnutým watchdogem).
Firmware je napsán v assembleru a přeložený pomocí AVRA. Kód je okomentovaný v angličtině. Po zapnutí se nastaví watchdog na interval 4 sekundy a mikrořadič přejde do nekonečné smyčky, kde se dokola nastavuje režim spánku a spouští instrukce SLEEP.
Jakmile watchdog vykoná přerušení, tak se z příslušného registru vymaže bit Sleep Enable, zapne se LED, počká se 3ms, vypne se LED a program se opět vrátí do smyčky, kde se uspí a čeká na další přerušení. U verze s dvěma LED je použitý ještě jeden registr, který se s každým bliknutím inkrementuje a zamaskuje. Tento registr určuje, která LED má bliknout, takže blikají na střídačku.
Nastavení pojistek (fuses) je: HFUSE=0xFF, LFUSE=0x7B (SPI povoleno, BOD vypnuto, 128kHz interní oscilátor s dobou spuštení 14 cyklů + 64ms).
Mikrořadič většinu času spotřebovává pouze 4 µA. Se zapnutou LED je tento proud okolo 12 mA (s napětím baterie 3V a napětím LED 2V). Obvod funguje díky nízkému napájení pouze s některými LED (doporučuji červenou či žlutou, MUSÍ být vysokosvítivé). Je zde i krátká (prakticky zanedbatelná) doba, kdy je mikrořadič aktivní a LED nesvítí, spotřeba je okolo 200 µA.
Pokud budeme počítat s časem zapnutí 3ms se spotřebou 12000 µA a časem vypnutí 3997 ms se spotřebou 4 µA, můžeme spočítat průměrnou spotřebu:
(4*3997+12000*3)/4000=12,997
nižší než 15 µA. Jeden CR2032 článek má 3 volty a kapacitu cca 200 mAh, jeden alkalický článek AA má 1,5 voltu (musí se použít dva v sérii) a kapacitu okolo 2000mAh. Při 15 µA by mohl článek CR2032 vydržet okolo 13333 hodin (=555 dní), a alkalické baterie teoreticky přes 5000 dní, ale pravděpodobněji dříve vytečou. Ke stažení je i 10 ms, 35µA verze - LED by měly blikat silněji a doba výdrže na dvě AA baterie stále zůstane v řádu let. V praxi se napětí snižuje, jak se baterie vybíjí (a v důsledku se snižuje i proud a intenzita LED). Napětí musí být pro správnou funkci minimálně cca 2,5V, je možné, že se baterie nevyužijí úplně.
Pro absolutní začátečníky: Mikrořadič je potřeba před použitím naprogramovat, jinak zařízení nebude fungovat! Při programování buďte opatrní na nastavení pojistek (fuses), při špatném nastavení mikrořadič již nemusí jít přeprogramovat normální metodou!
Pokud k naprogramování mikrořadiče chcete použít AVRDUDE, můžete použít tento příkaz (za podmínky, že pracovní adresář obsahuje správný HEX soubor, "FILENAME.hex" nahraďte za název souboru):
avrdude -p t13 -c usbasp -B50 -U flash:w:FILENAME.hex -U hfuse:w:0xFF:m -U lfuse:w:0x5F:m