Egy Kínai AVR ISP története
A héten, Varsányi Péter barátomtól kaptam egy AVR programozót, amit eBay-en filléres kategóriában meg lehet vásárolni. Egyetlen baja, hogy gyárilag nem működik, de működésre lehet bírni. Szóval jöjjön a 920Ft-os AVR programozó története.
A szóban forgó modellt sok néven hirdetik, de a legnépszerűbb megnevezés az USBISP. Fém házban van, jó minőségűnek tűnik és még egy régi Atmel logó is van rajta, és csak 920Ft környékén mozog. Bomba üzlet.

Viszont a probléma az, hogy ennek köze sincs az Atmel-hez. Ez egy jó minőségű USB ASP klón, azzal a különbséggel, hogy a rendszer nem USB ASP programozónak ismeri fel, hanem egy egyszerű HID eszköznek. A HID az USB azon kategóriája, amit a billentyűzetek és az egerek is használnak. Nagyon univerzális eszköz osztály, mert kb. minden megvalósítható vele és nem kell hozzá driver.
Ez szép és jó, viszont ez azt jelenti, hogy a programozó szoftvernek kell ismernie a kommunikáció módját vele. Ez azért problémás, mert így ebben a formában csak egy kínai feltöltő szoftver tudja használni. Így Arduino és egyéb AVR chip-ek programozására nem jó AVR Dude segítségével.
Viszont meg lehet javítani, csak új Firmware-t kell az eszközre tölteni. Ez elsőre bonyolult folyamatnak hangzik, de valójában egyáltalán nem az. Itt bejöhet a tyúk vagy a tojás problémája: feltöltőt vettünk, de hogy feltölteni tudjunk vele, kell először egy feltöltő 😀
Amennyiben rendelkezünk már egy Arduino lappal, akkor gond egy szál se, mert az Arduino lapunk is használható program feltöltőnek. Az alábbiakban a javítás folyamatát Arduino Uno segítségével írom le, de igazából bármilyen AVR programozó jó erre a célra.
- Le kell tölteni az Arduno IDE-t, ha még nem lenne fent a gépen.
- Rá kell tölteni a mintaprogramok közül az Arduino ISP-t a lapunkra. (Fájl -> példák -> 11. Arduino ISP -> Arduino ISP)
- Feltöltés után össze kell kötni a programozót az Arduino lapunkkal. Ehhez az alábbi kapcsolást használjuk:

- Ezzel azonban még nincs vége a hardver módosításának. Ahhoz hogy ténylegesen fel tudjuk tölteni a kódot a programozót szét kell szednünk (a fém ház lecsúszik) és a hátoldalán találunk két via-t ami UP-al van jelölve. Ezen két via-ba egy átkötést kell tennünk, mivel csak ekkor tölthető fel új firmware az eszközre. Én ezt egy 10k ellenállás segítségével tettem meg, mert éppen ez volt kéznél 🙂 Az alábbi képen jól látszik az átkötés beiktatásának helye:
- A módosított firmware (.hex állomány) innen letölthető. Az eredeti USB ASP kód módosításra szorul, mivel nem teljesen 100%-os másolatról van szó, ezért a PORTD lábainak funkcióját át kell állítani. Ezt manuálisan is megtehetjük az eredeti firmware módosításával, de ehhez újra kell forgatnunk a kódot. A módosítandó fájl a main.c állomány, csupán a DDRD regiszter értékét kell átírni 0-ra a ~(1 << 2) értékről:
int main(void) { uchar i, j; /* no pullups on USB and ISP pins */ PORTD = 0; PORTB = 0; /* all outputs except PD2 = INT0 */ /*DDRD = ~(1 << 2);*/ DDRD = 0x00;
- Ezután jöhet a szoftver feltöltése, amihez AVR Dude-ra lesz szükségünk. Ez része az Arduino telepítésnek. Ha az Arduino környezetünk a C:\Arduino mappában található meg, akkor a szükséges avrdude.exe a C:\Arduino\hardware\tools\avr\bin\ mappában van.
- Parancssor segítségével ide navigálunk:
C:\ cd Arduino\hardware\tools\avr\bin\
- Az egyszerűség kedvéért a szükséges .hex fájlt szintén bemásoltam az avrdude.exe mellé.
- A feltöltés első lépéseként a FUSE (konfigurációs bitek a mikrovezérlőben) biteket át kell írni a mikrovezérlőben 0xC9 és 0xEF értékre:
avrdude -C C:\Arduino\hardware\tools\avr\etc\avrdude.conf -p atmega8 -v -c stk500v1 -P COM5 -b 19200 -B 200 -U hfuse:w:0xC9:m -U lfuse:w:0xEF:m
- Ezután következhet a program feltöltése:
avrdude -C C:\Arduino\hardware\tools\avr\etc\avrdude.conf -p atmega8 -v -c stk500v1 -P COM5 -b 19200 -B 1 -U flash:w:20130212_mega8_usbisp.hex
Ha mindent jól csináltunk, akkor a programozón elhelyezett két LED közül a kék fog világítani az eddigi piros helyett. Innentől kezdve az eszköz USB ASP programozó, amit támogat az Arduino környezet is. 🙂
Az USB ASP használatához Illesztőprogram kell, ami a http://zadig.akeo.ie/ címről tölthető le. Az USB ASP hivatalos oldala pedig itt található. A cikk elkészítésében nagy segítség volt a https://www.sciencetronics.com/greenphotons/?p=938 oldal.