DŮLEŽITÉ UPOZORNĚNÍ!
Policie České republiky a šéfcensor Ústavu pro studium totalitních režimů Jaroslav Čvančara varují: citovat jakékoli texty z tohoto blogu způsobuje vážné nebezpečí trestního stíhání! Četba na vlastní nebezpečí!

20. 9. 2010

Arduino: poprvé intimně

Když tedy mé Arduino Mega dorazilo, mohu konečně začít s experimenty – zatím se ovšem raději nebudeme pouštět do žádných větších akcí, závislost by se měla budovat postupně.

Téměř okamžitě po rozbalení zjišťuji, že jde o tak nový model, že s ním nebude bez úprav fungovat většina běžných arduinových aplikací, avšak tím se nenechám vyvést z míry: o to bude seznamování zajímavější.

Podle mé zkušenosti jsou komplexní vývojová prostředí, včetně hardwarových debuggerů a emulátorů, tím méně užitečná, čím elementárnější je laděný procesor. Práce s nimi jen málokdy přinese užitek úměrný ceně a složitosti a kromě toho enormně rychle zastarávají; uživatel často investuje do vývojových prostředků víc, než kolik mu za celou svou užitečnou životnost přinesou.

Pro mikrořadiče typu Atmel ATmega v zásadě postačí assembler a simulátor, ve kterém se v případě potřeby dají odsimulovat jednotlivé algorithmy. Vývoj bývá obvykle rychlý a hladký. Pro složitější ladění jsou simulátory stejně jen omezeně užitečné, už kvůli svým inherentním nedostatkům. Např. u AVR Studia, jak jsem odhalil, ještě než mi Arduino dorazilo, nefungují podle katalogového popisu výstupní komparátory čítačů (což posléze test na živém Arduinu potvrdil).

Proto se snažím najít něco, čím mohu nalít program do procesoru a podle potřeby ho naswitchovat (nafusovat). K tomu zcela postačuje program avrdude, který má Fedora přímo v distribuci, a i když nefunguje zcela tak, jak by měl, je použitelný. Doplňuji udev rule ATTRS{idProduct}=="6001", ATTRS{idVendor}=="0403", MODE="666", NAME="arduino", aby mi Arduino nepřeskakovalo mezi porty, a pokračuji v testech.

Pro seznámení s novou hračkou jsem se rozhodl naprogramovat si Arduino jako programátor dalších atmelů. Na první pohled se to jeví jako zbytečná složitost, ale není tomu tak: proč bych se měl omezovat na jeden mikrořadič, který je navíc zapájený v desce a je obtížně přístupný, když si s jeho pomocí mohu naprogramovat, kolik atmelů budu potřebovat, a to ICSP, tedy přímo v obvodu? Je to řešení bezpečnější a zároveň levnější (cena za atmel je dnes pod 50 Kč a dál klesá).

Hledám proto, který programátor bych mohl Arduinem nejsnáze emulovat. Vybírám AVR ISP, již starší, ale velmi jednoduchý ISP programátor. Jeho software je pro mne ovšem šokem: neznalost základních programovacích technik, neporozumění programovanému hardwaru, hrubé chyby, nedodělky… Pár hodin se v programu vrtám, mažu, přepisuji, předělávám a voilà, výsledkem je první naprogramovaný ATtiny85 s triumfálně blikající LEDkou na nepájivém kontaktním poli.

Dvě technické poznámky pro ty, které by konverse zajímala detailněji:
  1. AVR ISP má hodiny připojené na pin PB7, nicméně u Arduina jsem je přesunul na PB3, protože na sedmičce je zároveň LEDka L, kterou nedůvtipný konstruktér pověsil na port přímo, bez oddělovacího transistoru, takže by nebylo možné od naprogramovaného obvodu se odpojit. Na PB7 namísto toho pouštím signál 4 MHz z čítače pro programování atmelů, které potřebují externí hodiny.
  2. Program by byl ještě jednodušší, kdyby se dal využít některý ze tří volných USARTů, které potřebný režim standardně zvládají, ale to není možné, protože žádný z hodinových signálů (XCKn) není vyveden na konektor. Samozřejmě, theoreticky by se dal vývod připájet přímo k čipu, ale vzhledem k roztečím mezi vývody 0,5 mm by nejpravděpodobnějším výsledkem experimentu byla jenom Velká Odporná Slitá Kapka Cínu. Tohle by se muselo pájet pod mikroskopem!

Jsem tedy hotov, pro dnešek končíme. Budu-li mít někdy náladu, naprogramuji si ještě tzv. vysokonapěťový programátor (vysokým napětím je myšleno 12 V, které se přivádějí na \RESET), jímž se dá s atmely dělat ještě o trochu víc než běžným ISP, ale určitě už se po zkušenostech nebudu pouštět do žádné adaptace a programátor si prostě napíšu na zelené louce, podle protokolu příslušného emulovaného zařízení.

(Omlouvám se za kvalitu fotografie, ale přestala mi fungovat čtečka paměťových karet, takže jsem musel vzít zavděk podstatně horší fotografií z mobilu.)

Aktualisováno.
Čtečka resuscitována, takže několik ilustračních fotografií: 1, 2, 3, 4.

3 komentáře :

  1. Doporučuji nepoužívat čtečku, ale propojení mezi foťákem a compem.

    OdpovědětVymazat
  2. To moje Sony F-88 (která má výborný makro-režim) bohužel nezvládá, je to už museální věc.

    OdpovědětVymazat
  3. :o) Muzeální věc je Flexaret mého otce nebo by byla moje Exa Ia (kdyby mi kdysi nespadla ze stativu na zem).

    Ale jinak se tedy omlouvám za blbou radu, to mě nenapadlo.

    OdpovědětVymazat

Kursiva: <i>text</i>
Tučně (když už to musí být…): <b>text</b>
Odkaz: <a href = "http://adresa">název odkazu</a>, tedy <a href = ""></a>

Poznámka: Komentáře mohou přidávat pouze členové tohoto blogu.