ATtiny85 - Poistky

Zápisník experimentátora

Hierarchy: ATtiny85

V predchádzajúcom článku som to zabudol spomenúť. Mikrokontrolér ATtiny85 je dodávaný v továrenskom nastavení na frekvencii 1 MHz. V tomto článku si vysvetlíme, ako toto nastavenie zmeniť a nastaviť vyššiu frekvenciu pomocou poistiek.

Programovanie

Aby ste mohli mikrokontrolér naprogramovať, potrebujete mať:

Nastavenie frekvencie mikrokontroléra

V texte budem vychádzať z toho, že máte nainštalované jadro ATTinyCore. Od toho sa budú odvádzať postupy a publikované obrázky. Na nasledujúcom obrázku je vybraná doska v Arduino IDE. Po jej výbere sa sprístupnia všetky ďalšie doplnkové voľby. V tomto prípade to sú Timer 1 Clock, Chip, Clock, B.O.D. a LTO. Nás pre nastavenie rýchlosti mikrokontroléra zaujíma voľba Clock, pomocou ktorej môžeme nastaviť požadovanú frekvenciu.

V položke menu Clock nájdete niekoľko možností. Pretože má mikrokontrolér ATtiny85 iba 8 vývodov, obvykle použijete iba tie, ktoré sú označené slovom internal. Jedinou výnimkou je 16 MHz PLL, pomocou ktorej môžete nastaviť rovnakú frekvenciu ako na Arduine. Interne je za voľbou ukrytý špeciálny režim mikrokontroléra, ktorý vie generovať aj veľmi vysoké frekvencie, ktoré môžu poslúžiť aj ako hodiny pre mikrokontrolér.

Vyššie frekvencie používate vtedy, keď vám nestačí základná frekvencia 1 MHz. Mikrokontrolér vtedy vykoná viac inštrukcií. Platíte za to cenu v podobe vyššej spotreby energie. V tomto prípade predpokladajme, že potrebujeme frekvenciu 8 MHz a nastavíme ju v menu.

Ďalšou voľbou je výber programátora. Ak máte Arduino, môžete ATtiny85 naprogramovať pomocou neho a vyberiete si položku Arduino as ISP. Ak máte kúpené USBasp, potom si vyberiete túto položku. Oba spôsoby sú porovnateľné a záleží len na vás, ktorý si vyberiete.

Nasleduje posledný krok. V menu si vyberiete položku Vypáliť zavádzač (Burn bootloader). Pomocou nej preprogramujete poistky v mikrokontroléri a prepnete frekvenciu.

Poďme teraz preskúmať, čo sa pri vypaľovaní zavádzača deje. Táto funkcia bola pôvodne určená na nahratie bootloadera do Arduina. Ten zabezpečuje pohodlné programovanie pomocou sériového portu. Súčasne ale aj nastavuje poistky. Poistky sú vyhradená pamäť v mikrokontroléri, pomocou ktorej možno nastaviť správanie mikrokontroléra po štarte. V datasheete je táto oblasť popísaná v kapitole 20.2 Fuse Bytes. Mikrokontroléry rady tiny majú v jadre ATTinyCore bootloader nenastavený a preto táto položka menu iba nastaví poistky.

1 MHz alebo 8 MHz

Keby ste si porovnali nastavenie poistiek pre 1 MHz a 8 Mhz, bol by rozdiel v jedinom bite. Volá sa CKDIV8 a nachádza sa v poistke Fuse Low Byte. Konkrétne nastavenie poistiek si môžete pozrieť aj v Arduine. Pre jadro ATTinyCore sa nachádza v súbore C:\Users\[vaše meno]\AppData\Local\Arduino15\packages\ATTinyCore\hardware\avr\1.1.4\boards.txt. Cesta k súboru sa môže mierne líšiť. Všetko závisí od vašej verzie Windows. Súbor obsahuje mnoho riadkov, ale poistky v ňom ľahko rozoznáte. Obsah súboru som skrátil, aby bolo nastavenie poistiek ľahko identifikovateľné.

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

Pri nastavovaní poistiek treba rozumieť tomu, čo robíte. Neodborným nastavením môžete mikrokontrolér dostať do stavu, kedy sa s ním nebude dať komunikovať. Napríklad ak si vyberiete frekvenciu s externými hodinami, budete musieť pripojiť kryštál, ináč už viac s mikrokontrolérom nepohnete. Pri bežnom používaní vám budú stačiť tie nastavenia, ktoré som spomenul v texte. Pri nich nehrozí, že by ste si nechtiac mikrokontrolér prepli do stavu, v ktorom prestane komunikovať.

Experimenty

Čo sa stane, keď budete mať mikrokontrolér nastavený poistkami na jednu frekvenciu a v menu vyberiete inú frekvenciu? Na prvý pohľad nič nezbadáte. Použite ale program Blik z predchádzajúcej kapitoly a vyskúšajte čo sa stane. V závislosti na zvolenej kombinácii bude LED dióda blikať alebo strašne pomaly, alebo strašne rýchlo. To preto, lebo funkcia delay sa interne riadi podľa nastavenia z menu, ktoré predpokladá, že máte v mikrokontroléri rovnakú frekvenciu. A podľa toho interne ráta čas. A keď sa hodnoty nezhodujú, čas sa v mikrokontroléri zrýchli alebo spomalí, pretože funkcia ráta čas podľa nastavenej frekvencie, od ktorej si vie odvodiť, koľko inštrukcií musí čakať, pokiaľ uplynie daný čas.


03.01.2018


Menu