ATtiny85 - Poistky

Zápisník experimentátora

Hierarchy: ATtiny85

V předchozím článku jsem to zapomněl zmínit. Mikrokontrolér ATtiny85 je dodáván v továrním nastavení na frekvenci 1 MHz. V tomto článku si vysvětlíme, jak toto nastavení změnit a nastavit vyšší frekvenci pomocí pojistek.

Programování

Abyste mohli mikrokontrolér naprogramovat, potřebujete mít:

Nastavení frekvence mikrokontroléru

V textu budu vycházet z toho, že máte nainstalované jádro ATTinyCore. Od toho se budou odvádět postupy a publikované obrázky. Na následujícím obrázku je vybrána deska v Arduino IDE. Po jejím výběru se zpřístupní všechny další doplňkové volby. V tomto případě to jsou Timer 1 Clock, Chip, Clock, B.O.D. a LTO. Nás pro nastavení rychlosti mikrokontroléru zajímá volba Clock, pomocí které můžeme nastavit požadovanou frekvenci.

V položce menu Clock najdete několik možností. Protože má mikrokontrolér ATtiny85 pouze 8 vývodů, obvykle použijete pouze ty, které jsou označeny slovem internal. Jedinou výjimkou je 16 MHz PLL, pomocí které lze nastavit stejnou frekvenci jako na Arduine. Interně je za volbou ukryt speciální režim mikrokontroléru, který umí generovat i velmi vysoké frekvence, které mohou posloužit i jako hodiny pro mikrokontrolér.

Vyšší frekvence používáte tehdy, když vám nestačí základní frekvence 1 MHz. Mikrokontrolér tehdy provede více instrukcí. Platíte za to cenu v podobě vyšší spotřeby energie. V tomto případě předpokládejme, že potřebujeme frekvenci 8 MHz a nastavíme ji v menu.

Další volbou je výběr programátora. Pokud máte Arduino, můžete ATtiny85 naprogramovat pomocí něj a vyberete si položku Arduino as ISP. Pokud máte koupeno USBasp, pak si vyberete tuto položku. Oba způsoby jsou srovnatelné a záleží jen na vás, který si vyberete.

Následuje poslední krok. V menu si vyberete položku Vypálit zavaděč (Burn bootloader). Pomocí ní přeprogramujete pojistky v mikrokontroléru a přepnete frekvenci.

Pojďme nyní prozkoumat, co se při vypalování zavaděče děje. Tato funkce byla původně určena na nahrání bootloaderu do Arduino. Ten zajišťuje pohodlné programování pomocí sériového portu. Současně ale také nastavuje pojistky. Pojistky jsou vyhrazená paměť v mikrokontroléru, pomocí které lze nastavit chování mikrokontroléru po startu. V datasheetu je tato oblast popsána v kapitole 20.2 Fuse Bytes. Mikrokontroléry řady tiny mají v jádru ATTinyCore bootloader nenastavený a proto tato položka menu pouze nastaví pojistky.

1 MHz nebo 8 MHz

Kdybyste si porovnali nastavení pojistek pro 1 MHz a 8 Mhz, byl by rozdíl v jediném bite. Jmenuje se CKDIV8 a nachází se v pojistce Fuse Low Byte. Konkrétně nastavení pojistek si můžete prohlédnout iv Arduine. Pro jádro ATTinyCore se nachází v souboru C:\Users\[vaše jméno]\AppData\Local\Arduino15\packages\ATTinyCore\hardware\avr\1.1.4\ boards.txt. Cesta k souboru se může mírně lišit. Vše závisí na vaší verze Windows. Soubor obsahuje mnoho řádků, ale pojistky v něm snadno rozeznáte. Obsah souboru jsem zkrátil, aby bylo nastavení pojistek snadno identifikovatelné.

attinyx5.name=ATtiny25/45/85
attinyx5.bootloader.extended_fuses=0xFF
attinyx5.menu.chip.85=ATtiny85
attinyx5.menu.chip.85.build.mcu=attiny85
attinyx5.menu.chip.85.upload.maximum_size=8192
attinyx5.menu.chip.85.upload.maximum_data_size=512
attinyx5.menu.clock.8internal=8 MHz (internal)
attinyx5.menu.clock.8internal.bootloader.low_fuses=0xE2
attinyx5.menu.clock.8internal.build.f_cpu=8000000L
attinyx5.menu.clock.8internal.bootloader.file=empty/empty_all.hex
attinyx5.menu.clock.1internal=1 MHz (internal)
attinyx5.menu.clock.1internal.bootloader.low_fuses=0x62
attinyx5.menu.clock.1internal.build.f_cpu=1000000L
attinyx5.menu.clock.1internal.bootloader.file=empty/empty_all.hex

Při nastavování pojistek třeba rozumět tomu, co děláte. Neodborným nastavením můžete mikrokontrolér dostat do stavu, kdy se s ním nebude dát komunikovat. Například pokud si vyberete frekvenci s externími hodinami, budete muset připojit krystal, jinak už více s mikrokontrolérem nepohnete. Při běžném používání vám budou stačit ty nastavení, které jsem zmínil v textu. Při nich nehrozí, že byste si nechtěně mikrokontrolér přepnuli do stavu, ve kterém přestane komunikovat.

Experimenty

Co se stane, když budete mít mikrokontrolér nastaven pojistkami na jednu frekvenci a v menu vyberete jinou frekvenci? Na první pohled nic nezpozorujete. Použijte ale program Blik z předchozí kapitoly a vyzkoušejte co se stane. V závislosti na zvolené kombinaci bude LED dioda blikat nebo strašně pomalu, nebo strašně rychle. To proto, že funkce delay se interně řídí podle nastavení z menu, které předpokládá, že máte v mikrokontroléru stejnou frekvenci. A podle toho interně počítá čas. A když se hodnoty neshodují, čas se v mikrokontroléru zrychlí nebo zpomalí, protože funkce počítá čas podle nastavené frekvence, od níž si umí odvodit, kolik instrukcí musí čekat, pokud uplyne daný čas.


03.01.2018


Menu