ATtiny85 a Arduino IDE

Po seznámení s vývojovou deskou Digispark se mi celkem zalíbily MCU ATtiny85. Sympatické mi na nich je to, že mají jen 8 vývodů, takže pro jednoduché projekty nebudou zbytečně komplikovat návrh DPS. Málo vývodů je ale současně i jejich nevýhodou, protože je třeba více přemýšlet nad využitím každého pinu: je celkem složité navrhnout projekt, který něco měří, současně to posílá k zobrazení a popř. ještě komunikuje po sériové lince. Navíc v případě Digisparku toto ještě komplikuje nastálo připojené rozhraní USB s jeho pull-up rezistory. Proto jsem se rozhodl zkusit práci s "holými" čipy ATtiny85.

Nákup MCU na Aliexpress

Protože jsem již z dřívějška měl celkem pozitivní zkušenosti s nákupem IoT techniky na Aliexpressu, první nákup (4 ks) jsem provedl na tomto serveru. Jedno MCU mě přišlo zhruba na $1. Bohužel, když jsem se po dodání procesory snažil oživit, nedařilo se mi. K Arduino IDE a AVRdudess jsem MCU připojoval pomocí ISP programátoru USBasp. Tento programátor jsem měl odzkoušený s ATmegami328, takže jsem věděl, že je funkční, s pořízenými ATtiny mi ale Arduino IDE odmítalo komunikovat. Zkusil jsem tedy připojení k AVRdudess. V tomto nástroji se mi po změně Bit clock na 32kHz podařilo se dvěma MCU spojit, detekovaly se ale jako ATtiny12 (navíc s lock bity nastavenými na 0x06). Další dva čipy se nehlásily vůbec. Stal jsem se tedy zřejmě obětí nějakého čínského podvodníka, který čipy (z toho minimálně 2 původní ATtiny12) přeznačil. Musím uznat, že celkem věrohodně. Po otevření sporu mi Aliexpress vrátil peníze za falešné čipy (těžko soudit, jestli mě podvedl přímo prodejce nebo byl jen o úroveň blíž k podvodníkovi, co podfouknul i jeho).

Nákup MCU na TME

Po neúspěšných pokusech s čipy z Aliexpressu jsem se rozhodl další objednat na tme.eu. Cena u tohoto prodejce je sice o něco vyšší (asi 43 Kč s DPH za DIP8, 32 Kč za SO8-W provedení), ale je zde jistota, že nepůjde o fejky a příjemné bylo i dodání do druhého dne.

Oživení MCU pro práci s IDE

Tak jak mi čipy přišly (tzn. v továrním nastavení) nebyly schopny komunikovat s Arduino IDE. Opět jsem tedy využil AVRdudess, kde se mi (opět po snížení "Bit clock") MCU správně identifikovaly jako ATtiny85. Vyčetl jsem si nastavení pojistek, které odpovídalo továrnímu: 62 DF FF. Protože jsem hodlal ATtiny využívat v co nejvýkonějším režimu (16MHz), nastavil jsem pojistky následovně: F1 DD FE.

Po tomto nastavení již byla komunikace s Arduino IDE funkční, s AVDdudess již MCU komunikoval i při Bit clock = 1.5MHz.

Ještě připomenu, že nastavení pojistek musí korespondovat s nastavením frekvence MCU v Arduino IDE. V opačném případě bude mít procesor problémy s časováním, což se celkem dobře projeví třeba v příkladu Blink.ino, kdy interval blikání LED nebude odpovídat naprogramovaným hodnotám.
K nastavení pojistek pro správnou frekvenci MCU přímo v Arduino IDE slouží volba "Vypálit zavaděč". Ta v případě ATtiny místo zavedení bootloaderu provede právě nastavení pojistek. Jak jsem ale napsal výše, z továrního nastavení mi Arduino IDE s MCU nechtělo komunikovat, pro první změnu pojistek jsem musel využít AVRdudess.

Odkazy

Při oživování mi pomohly tyto informace:
Na nastavení prostředí Arduino IDE k práci s ATtiny25/45/85 jsem se inspiroval zde:
 
Dokumentace k ATtiny + Arduino IDE (SpenceKonde):
 
Obvod pro reset pojistek ATtiny:
...a varianta s nábojovou pumpou:
 
ATtiny85 a SoftwareSerial:
 
ISP programátor s ATtiny85: