AVR High Voltage Serial Programmer
AVR High Voltage Programmer
Ako ovo napravimo biti će ujedno poučno i korisno.
Korisno je zato što ovaj programira brzo, može overridati svaki write protect AVR-a, i iskoristiti RESET pin kao običan I/O, to je zgodno za male AVR-ove sa samo 8-14 pinova.
Poučno je zato što koristi puno hackova i trikova. Ima relativno malo dijelova za ono što pruža, lako su nabavljivi, pločica je 1-strana (pa je sami možemo proizvesti) a sve je open source. U softwareu se implementira USB protokol, pretvarač napona 5->12V i još puno toga, većinom u C-u (ima i malo asemblera za USB link layer) i binary stane u 8KB.
Ko skuži kako taj software radi znaće puno o mikrokontrolerima.
To je ovo: AVR Doper. Malo sam mu preravio šemu (korekcija kod jumpera za Provide ISP Supply, schottky dioda kod 5/12V pullup) i malo pretumbao neke otpornike pa ću napraviti ovakvu štampanu pločicu :-) Izmjene jedno popravljaju (sitnice, naponi) a drugo kvare (samo za target na 5V, više ne radi za 3.3V), pa bih drugima ipak preporučio da se drže originala. Ionako bi sve to trebalo skroz redizajnirati ali to ćemo drugi put. Bitno je da se ima hardware koji radi sa originalnim firmwareom (AVR-Doper.2008-11-27.tar.gz).
Možemo ovo "peglati" ali treba pazit jer su vodovi tanki i blizu su jedan do drugoga pa bi možda bilo bolje pločicu napraviti foto-postupkom.
Treba nam
- 1-strana bakrena virtroplast pločica 8x10cm sa foto-slojem
(ima naljepnicu preko foto sloja)
- laserski printer (sa dobrim otiskom)
- paus-papir ili prozirna folija za laser
- kvarcno staklo veličine otprilike 17x11 cm
- 10 kvačica za veš
- UV lampa (tamno-plava štedna žarulja/neonka, trebalo bi je bit u chipoteci)
- razvijač: NaOH otopina u vodi (natrijeva lužina, može neki
preparat iz dućana u narančastoj boci za čišćenje WC-a na kojem sitno piše da se sastoji samo od oko 20-30% NaOH a ostalo je voda vjerojatno)
- nagrizanje: HCl (solna kiselina iz dućana, također izvrsno za čišćenje WC-a,
oko 40% HCl ostalo voda)
- ubrzivač nagrizanja: H2O2 (vodikov peroksid 30%, oko 100kn za
litru treba naručit prethodno u apoteci, oće vidit osobnu iskaznicu. I on dobro čisti WC)
- plitka plastična ili staklena posuda malo veća od pločice, 17x11cm ili 9x11cm
- mala bormašina koja može primiti tanko svrdlo od 0.8 mm
- svrdlo 0.9mm ili 1mm
- dobro dođe vodootporni flomaster za popravit greške na pločici
- pila za željezo za pilit pločicu
- DASA kompatibilni programator na protoboardu iz prošlog projekta
Pomoću DASA sflashao sam firmware u ATMEGA8 i verificirao ga cijelog (flash i fuses), sve je dobro. Čak pali diodu na PB0. Probao sam na protoboardu spojiti samo taj AVR, kristal 12MHz i to sve kao USB interface uštekati u PC. Obavezno treba pullup otpornik na USB D- liniji, bez njega nema ništa. A sa njim, stvar se prijavljuje kao USB uređaj 16c0:05e1 i registrira virtualni serijski port /dev/ttyACM0 :-) Fantastično!
S obzirom da na
protoboardu
nisam koristio 74126 modoficirao sam firmware
tako da radi s direktnim signalima i uredno programira ATTINY84 u high voltage
serial i običnom ISP modu.
Još samo da napravimo pločicu i taj ATMEGA8 će postati Doper drugim AVR-ovima.
AVR Doper ne podržava high voltage parallel programming ali zato može poslužiti ovo
Novosti - isprintao sam avr-doper na laser, ispeglao na pločicu i nagrizao kiselinom (solna+peroxid) i dobio kakve-takve vodove. Izbušio rupe i zalemio dijelove, osim 20-pinskog konektora jer nema za kupit onaj koji ima pinove u ravnini pločice, a okomita verzija ne stane zbog 8-pinskog podnožja, fali oko 0.5mm što se može zrašpat al za sada ću probat nabavit odgovarajući 20-pinski.
Nakon malo krpanja pločice jumperom od oko
5mm kod otpornika 68Ω, stvar se prijavila na usb bus.
Nakon lemljenja zaboravljene nožice jednog tranzistora,
pojavio se napon 12.3V na kondenzatoru booster kruga.
Stvar je isprogramirala ATTINY84 u HVSP modu što je glavna funkcija
dopera. Ni ISP mod nije radio od prve. Bio je kratki spoj na vodovima
ispod 74126, kojeg sam zgrebo sa skalpelom i sad konačno sve radi.
Evo kako igleda avr-doper
i
LED dioda je većinom ugašena. Svijetli samo kad se čita ili piše po AVR-u. Opcijom avrdude-a se bira mod ISP (-c stk500) ili HVSP (-c stk500hvsp). Mogu biti spojena oba istovremeno. Kad se koristi HID mod, avrdude preko libusb komunicira s avr-doperom (-P avrdoper) ali mi to radi na debian-u samo ako sam root. Navodno da se može napravit neki udev rule da ide kao user, nešto sam probao na brzinu, ali nije tako jednostavno.