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.
Aby ste mohli mikrokontrolér naprogramovať, potrebujete mať:
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.
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ť.
Č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