Page
Stránky / Nezaradené stránky /
Arduino možno použiť na programovanie iných mikrokontrolérov. Obvykle sa to dá využiť v prípade, že chcete namiesto celého arduina využiť mikrokontroléry ATmega328P alebo ATtiny85. Vtedy pomocou niekoľkých prepojovacích vodičov a vhodného programu v Arduine dokážete programovať samostatné mikrokontroléry.
Na nasledovnom obrázku je to, čo sa snažíme dosiahnuť. Nahradiť kompletné Arduino za jeho miniatúrnu náhradu, ktorá bude blikať LED diódou. Ako náhradu použijeme mikrokontrolér ATtiny85-20PU.
Na obrázku je vidno, že na jeho zadrôtovanie toho veľa netreba. Pripojíme napätie a zem a potom už ostáva iba použiť jeden digitálny výstup na ovládanie LEd diódy. Náklady sú približne jedno euro, spotreba prúdu minimálna (v tomto prípade 3 mA keď nesvieti, 6 mA keď svieti). Mikrokontrolér používa interný oscilátor, ktorý je v tomto prípade nastavený na 1 MHz, čo na blikanie v pohode stačí.
Aby sme však mohli zapojiť ATtiny85-20PU, potrebujeme k tomu Arduino. Pomocou neho budeme obvod programovať. Návod predpokladá, že máte nainštalované IDE 1.6.X.
Spustíme si IDE a v menu použijeme príkaz File/Examples/ArduinoISP. Otvorí sa program ArduinoISP, ktorý si nahráme cez USB priamo do Arduina. Samotný program nie je potrebné nejako podrobnejšie skúmať, ale je dobré si všimnúť, že okrem samotného programovania ISP používa na komunikáciu aj tri LED diódy.
Odfotil som to len v takomto zapojení, aby bolo vidno, že to tak naozaj funguje. Na obrázku je pripojený PIN9 na jednu LED.
Definície sú potrebné preto, lebo v IDE po nainštalovaní nie sú a nebolo by možné priradiť význam k jednotlivým pinom. Definície doplníte podľa popisu na stránke ATtiny85.
Ak sa vám to správne podarilo, uvidíte v IDE v menu Tools/Boards nové položky, ktoré umožňujú programovať nové mikrokontroléry. My sa budeme v ďalšom texte venovať ATtiny85 (internal 1 MHz clock), čo je továrenské nastavenie.
Damellisovo jadro nie je jediné, ktoré sa venuje ATtiny85. Treba spomenúť, že existujú aj prepracovanejšie jadrá a obsahujú aj ďalšie mikrokontroléry rady ATtiny.
Mikrokontrolér má nasledovné rozmiestnenie pinov.
Na jeho programovanie potrebujeme prepojiť:
Teraz už ostala len finálna fáza, ktorou je naprogramovanie mikrokontroléra. Otvorte si program File/Examples/01. Basics/Blink a zmeňte v ňom led z 13 na 0, pretože ATtiny85 nemá toľko digitálnych pinov.
Ak všetko dopadlo dobre, odpojte programovacie vodiče a zapojte cez rezistor na PIN0 diódu. Ak ste to zvládli, dióda bude blikať.
Všetko zabezpečí funkcia menu Tools/Burn Bootloader. Podľa nastavenia boardu prepne fuses mikrokontroléra. Po prepnutí fuses je mikrokontrolér vynulovaný a treba do neho poslať program znovu. ATtiny85 možno bez problémov nastaviť na 1 MHz (továrenské nastavenie) a 8 MHz. Iné nastavenia si vyžadujú použitie kryštálu. Tieto dve fungujú s internými hodinami. Ak som správne pochopil dokumentáciu a dešifroval nastavenie fuses v súbore board.txt, jediný rozdiel medzi nimi je ten, že oba majú hodiny na 8 MHz, len jednomegová verzia má k tomu zapnutú deličku 8.
Ak si položíte otázku, či je možné poslať program s boardom na 1 MHz do mikrokontroléra s fuses na 8 MHz, tak odpoveď znie, že to možné je. Všetko bude pracovať, len počítanie času bude zrýchlené alebo spomalené. Je to preto, lebo interne je počítanie času robené cez rátanie tikov. IDE prenesie do kompilátora nastavenie F_CPU, ktoré sa dosadí do makra #define clockCyclesPerMicrosecond() ( F_CPU / 1000000L ) a od tohoto sa počítajú časové údaje.
Poviem to zjednodušene. Počas experimentovania som mal pripojené diódy, tranzistory a potenciometre aj na piny 0, 1 a 2. Zatiaľ sa mi nestalo, že by tam vznikla kombinácia, ktorá by zabraňovala programovaniu. Ale na Internete možno nájsť zmienku o tom, že to občas aj nemusí ísť.
Malo by sa to stať vtedy, keď napríklad pripojíte napriamo niektorý pin na GND alebo Vcc. Vtedy nie je možné sťahovať úrovne napätia na danom pine a programovanie sa neuskutoční.
ISP programátorom je možné ľahko naprogramovať aj tento mikrokontrolér, ktorý je základom pre Arduino Uno. Postup je v podstate identický s programovaním menšieho čipu. Na jeho programovanie potrebujeme prepojiť:
Ak má byť mikrokontrolér na frekvencii 16 MHz, je potrebné ešte pripojiť kryštál a dva kondenzátory. Presný postup skladania na bezkontaktnom poli je na samostatnej stránke.
Teraz už ostala len finálna fáza, ktorou je naprogramovanie mikrokontroléra. Otvorte si program File/Examples/01. Basics/Blink a zmeňte v ňom led z 13 na 0, pretože ATtiny85 nemá toľko digitálnych pinov.
Ak všetko dopadlo dobre, odpojte programovacie vodiče a zapojte cez rezistor na PB5 diódu. Ak ste to zvládli, dióda bude blikať. Je možné tento krok aj predradiť samotnému programovaniu a potom budete počas programovania vidieť, že dióda poblikáva v rôznom rytme.
Postup programovania nájdete v samostatnom článku.
20.06.2016