blogy logo
login PRIHLÁS SA
BLOG deadawp
ČLÁNKY
DISKUSIE
2
SLEDOVAŤ BLOG
Programátor
deadawp



ATtiny85 Digispark - programovanie, použitie
pridal deadawp 28.12. 2023 o 23:29 (naposledy upravené 29.12. 2023 o 0:36)



Tak, ako som v predchádzajúcom článku spomínal, ATtiny85 na Digispark custom doskách je možné programovať priamo cez USB. Doska má plôšky, ktoré odpovedajú zapojeniu do USB-A konektora počítača. Na doske však nájdeme aj 5V pin pre priame napájanie, prípadne aj Vin pin pre napájanie vyšším napätím. Samotný LDO je  78M05, verzia ATtiny čipu je Atmel ATtiny85-20F, väčšinou štandardne vidieť ATtiny85-20SU, ale rozdiel tam bude skôr možno v prevedení puzdra švábu. Ako je však možné takto programovať dosku, keď sa na doske nenachádza USB-UART prevodník a ATtiny85 normálne programovanie cez USB nepodporuje?

Vďačí zato bootloaderu, ktorý nie je štandardný. Micronucleus bootloader (pomenovaný po svojom tvorcovi) implementuje minimálne USB rozhranie, ktorým je možné cieľový mikrokontróler programovať. Nie je dizajnovaný iba pre ATtiny85, ale aj pre iné mikrokontroléry AVR z rodiny ATtiny, ale aj ATmega. Bootloader vyžaduje, aby počítač cez ktorý sa cieľový mikrokontróler programuje mal nainštalovaný ovládač libusb. Platí to iba pre Windows, Linux a OS X podporuje tieto ovládače štandardne. Bootloader taktiež zvyšuje taktovaciu frekvenciu ATtiny a štandardne využíva 16,5 MHz, čo je viac, ako vieme dosiahnuť so štandardným bootloaderom u ATtiny, ktorý sme si ukazovali minule s nastavením interného oscilátora na max 8 MHz.

Dnes si ukážeme, ako si nainštalovať podporu pre Digispark ATtiny85 v prostredí Arduino IDE. V prvom rade však potrebujeme porozumieť, aké limity a podmienky budeme potrebovať pred nahrávaním programu. Po hardvérovej stránke je nutné zabezpečiť, aby na piny PB3 a PB4 nebola pripojená žiadna periférie počas nahrávania programu, inak sa program nenahrá. Nakoľko Digispark doska neobsahuje externý oscilátor, môžeme využívať všetkých 5 dátových pinov (6-ty je RST).

V prvom rade si potrebujeme v Arduino IDE nainštalovať podporu pre Digispark. To dosiahneme nakopírovaním JSON linku: http://digistump.com/package_digistump_index.json. Názov balíka ako takého je Digistump. Po otvorení Manažéra dosiek vieme pod tým názvom balík nájsť a doinštalovať ho. Následne doinštalujeme ovládače z adresy: https://www.best-microcontroller-projects.com/digispark-attiny85-arduino-install.html#Warning_on_digistump_operation.


Po pripojení Digisparku do počítača budeme počuť zvuk pripojeného Plug n Play zariadenia, avšak v Správcovi zariadení, ani v Arduino IDE neuvidíme COM port. Je to v poriadku. V správcovi zariadení môžeme Digispark nájsť ako Neznáme zariadenie. V Arduino IDE môžeme po otvorení dostupných dosiek vidieť dosku Digispark, alebo Digispark Pro. Pro verzia je osadená kontrolérom ATtiny167, ktorý nevyužijeme.

Z dostupných dosiek vidíme, že môžeme zvoliť taktovaciu frekvenciu 16,5 (štandard), 16, alebo 8 MHz, či 1 MHz. Obecne platí, čím vyššia frekvencia, tým vyššie požadované napätie, ale zato rýchlejšie vykonávanie programu. Môžem s určitosťou povedať, že pod 3V nebude Digispark fungovať s taktovacou frekvenciou 16,5 MHz. Ako však vidíme, u nízkych taktovacích frekvencií, ktoré sú v zozname na výber, prídeme o možnosť programovania cez USB. Potom by sme museli už cez piny nahrávať externým programátorom / Arduinom.



Spotreba v tomto režime, možno s ohľadom aj na extra elektroniku je viac ako u ATtiny85, ktoré som skúšal posledne. Standalone ATtiny85 s identickým programom malo spotrebu cez 2 mA pri taktovacej frekvencii procesora 1 MHz. Digispark s identickým programom, ale 16,5 MHz taktom má spotrebu tesne pod 20 mA, na druhú stranu má aj onboard indikačnú Power LED.

Proces nahrávania firmvéru do Digisparku je iný, keďže COM port k dispozícii nemáme. Je nutné Digispark odpojiť z USB portu, kliknúť na nahrávanie programu. Program sa skompiluje a nastane nahrávacia fáza, ktorá má dĺžku 60 sekúnd. Počas tejto doby je nutné pripojiť Digispark do USB portu a program sa automatizovane nahraje.

O stave nahrávania vás normálne informuje štandardné okno v Arduino IDE. Tento proces nahrávania má ešte jednu odlišnosť oproti nahrávaniu minule. Všimli ste si to? Doska má síce reset pin pre hardvérový reset, ale nevyužíva ho. Spolieha sa nato, že doska ihneď po pripojení napájania je na krátky čas v programovacom stave a práve v tom časovom okne nastane nahrávanie cez uploader z Arduino IDE.

Taktiež som skúsil vykompilovať identický program ako minule so standalone ATtiny85 a porovnával som aj napr. pamäťové nároky. Čo sa týka RAM pamäte, tam bol rozdiel len 1B. Pre flash bol rozdiel asi 100B. V oboch prípadoch menej zaberal program kompilovaný pre Digispark dosku.


Nevýhody:
Digispark nie je blbuvzdorný. Do USB-A portu ho viete založiť aj naopak, na štýl USB-C :-), keďže nemá rámček okolo ako napr. USB kľúč. Doska tak nebude napájaná, trošku mi trvalo kým som pochopil, čo sa deje, keď som tápal, prečo sa mi nerozsvietila indikačná LED dióda a nepočul som zvuk pripojeného USB zariadenia.

Vyššia spotreba s ohľadom na standalone ATtiny85 bez bižutérie okolo...

Výhody:
Daný Bootloader má ešte viac výhod. USB podporu využíva aj pre HID zariadenie, ktorým si viete emulovať napríklad klávesnicu. Digispark veľkosti 50 centovky tak môžete využiť v rôznych projektoch, napr. aj ako kľúč pre odomýkanie Windowsu na počítači, kedy po pripojení do USB môže Digispark stlačiť Enter, napísať vaše heslo a potvrdiť ho Enterom (keylogger by ho zrejme štandardne zachytil, teda bezpečnosť nechám na vás).

Taktiež sa zdá, že Digispark balík podporuje Wire knižnicu pre priamu podporu I2C zbernice. Príklady pre Digispark obsahujú aj I2C scanner s Wire knižnicou. Toto je jeden z najhlavnejších problémov u ATtiny, kedy sa program pre štandardné Arduino / ESP32, či ESP8266 s hardvérovou I2C zbernicou nevykompiluje pre ATtiny, ktoré ju nepodporuje. Musí sa to potom rôzne lepiť cez TinyWire, ktorou sa I2C zbernica emuluje. Nevyskúšal som to, ale budem predpokladať, že by to fungovalo, čo by bol v porovnaní s normálnym ATtiny85 gamechanger... Taktiež sú to príklady aj s teplotným senzorom a LCD displejom komunikujúcim cez I2C rozhranie s knižnicou Wire. Paradigma sa zdá byť identická s programom pre Arduino, ESP32 a pod.



Prístupov 4951
Kvalita článku
hlasov 0

PRÍSPEVKY
SLEDOVAŤ
Prosím prihláste sa pre možnosť pridania komentáru.
Prihláste sa, alebo použite facebook login facebook login
ĎALŠIE ČLÁNKY V BLOGU
Update grafov, ukážkových kódov - Hladin...
[ 16.11.2024] (príspevkov 0)
XIAO ESP32-C6 od Seeed Studio
[ 10.11.2024] (príspevkov 0)
ESP-IDF v4.4.2 prechod na v5.2
[ 5.11.2024] (príspevkov 0)
Krabička pre RFID DOMINATOR 2.0
[ 18.10.2024] (príspevkov 0)
Známe neduhy - Ecotec 1.6E Opel/GM Chevr...
[ 8.10.2024] (príspevkov 0)
Cold-start BQ25570 vs BQ25504 od Texas I...
[ 2.8.2024] (príspevkov 0)
EG21-G - MQTT pripojenie na Thingsboard
[ 5.6.2024] (príspevkov 0)
Quectel EG21-G - HTTP request
[ 17.5.2024] (príspevkov 0)
Tip na darček k jubileu 60
[ 29.4.2024] (príspevkov 0)