Sunday, October 7, 2012

PICkit2 i programiranje AVR-a


Na ideju za ovaj post sam došao prelistavajući forum na kom već imam solidan staž. :)
Naime, jedan kolega sa foruma je postavio pitanje vezano za ovu temu, i pokušavajući da natera dotični PICkit2 (u daljem tekstu PK2) da programira AVR mikrokontrolere, naišao je na par problema. Da se to ne bi ponavljalo, rešio sam da napravim jedan mali tutorial (al' na srpskom :) ) za sve buduće kolege koji budu imali sličnu ideju...

Elem, za početak je potrebno da imate jedan PICkit2 (ili neki njegov klon koji možete i sami napraviti), jedan AVR mikrokontroler (svi tutoriali su sa ATmega8, pa ću i ja iskoristiti jedan takav) i par softverskih alata da ovo dvoje ukombinujete...

Prvo je potrebno napraviti tzv. bridge konekciju (upariti dva serijska porta), naravno, softverski. Za to vam je potreban neki "Null modem emulator", "Virtual Serial Port Emulator", itd... Jedno od rešenja koje na raznim tutorialima na netu možete naći jeste "com0com" emulator. Ja lično nisam uspeo (i na netu sam naišao na dosta neuspelih pokušaja) da nateram moj PICkit2 da sa njim programira AVR-ove, stoga taj emulator nećemo ni koristiti (ako neko bude imao želju da baš sa com0com emulira COM portove, neka mi se javi ili ostavi komentar, rado ću mu poslati uputstva). Emulator sa kojim je meni sve ovo proradilo je "Virtual Serial Port Driver". Problem je što ovaj emulator nije džaba (ako neko uspe da nađe haknutu verziju, rešio je najveći problem). Drugi emulator sa kojim nisam imao problema (a džaba je) jeste "Virtual Serial Port Emulator". Još jedan emulator koji radi, a napisan je za Windows Vista i kasnije (Windows 7, Windows 7 x64...) jeste "Free Virtual Serial Ports".

Drugi alat koji je potreban jeste PK2AVRISP (program koji tera PK2 da se ponaša kao AVRISP(mk2) ili STK500(mk2) AVR programator). 

Sada je sve spremno, pa, da počnemo:

Nakon instalacije i pokretanja "Virtual Serial Port Emulator"-a, dobijamo sledeći prozor




U meniju Device izabrati Create nakon čega dobijamo sledeći prozor




U polju Device Type izabrati Pair i kliknuti Next



Pojavljuje se prozor u kojem je potrebno izabrati koje portove želimo da uparimo (kod mene su to COM4 i COM5 jer već posedujem 1 hardverski COM port COM1, i dva virtuelna uparena COM2 i COM3). Možete izabrati bilo koji od ponuđenih i kliknuti na Finish.



Ako je sve u redu, treba da vam se pojavi prozor kao na slici iznad.

Ovim smo završili najzahtevniji deo cele procedure uparivanja PK2 i AVR-a.

Sada je potrebno podesiti alat za programiranje AVR mikrokontrolera. Lično koristim avrDude i stoga ću opisati kako se on podešava (inače, kontrolere je moguće programirati i iz AVR Studio-a, CodeVision-a i ostalih alata za programiranje AVR kontrolera).
Za avrDude koristim GUI (avrDude je alat za rad u konzoli), koji izgleda ovako



U polju Programmer izabrati Atmel AVR ISPAtmel AVR ISP mkII, Atmel STK500 ili Atmel STK500 version 2.x firmware (kod mene radi sa STK500v2).
U polju Port izabrati jedan od COM portova koje ste prethodno uparili (u mom slučaju to je COM2).
U polju Device izabrati kontroler koji se programira (na početku smo rekli da će to biti ATmega8).

I ovaj deo smo završili. Još nam ostaje da povežemo PK2 i ATmega8. Šema povezivanja prikazana na slici






Nakon povezivanja programatora i kontrolera, ostaje nam još da priključimo PK2 na računar, pokrenemo PK2AVRISP i ako je sve u redu pojaviće se sledeći prozor



U polju Serial port izabrati drugi od COM portova koje smo uparili (u mom slučaju to je COM3) i TO JE TO! :) Ovim je podešavanje završeno i vaš PK2 je sada u mogućnosti da programira i AVR mikrokontrolere.

Saturday, April 21, 2012

Notepad++ i WinAVR (AVR-GCC)

Većina vas koji koristite WinAVR prinuđeni ste da svoje programe pišete u Programmer's Notepad-u (PN) koji standardno dolazi uz WinAVR. Iskreno, meni se od početka nije sviđao PN i pokušavao sam na razne načine da ga prilagodim sebi, ali (skoro) bezuspešno... Onda sam došao na ideju da pokušam da nateram NotePad++ (Npp) da radi sa WinAVR-om (tačnije AVR-GCC-om) zbog mogućnosti promene vizuelnog izgleda samog programa, označavanja sintakse, raznih dodatnih pluginova...

Dakle, sve što je potrebno jeste da na računaru imate instaliran WinAVR i Notepad++.

Nakon instalacije, pokrenite Notepad++. Izaberite "temu" koja vam najviše odgovara (Settings → Style Configurator). Zatim u polju Language izaberite  C, u polju Style izaberite TYPE WORD i u polje User-defined keywords dodajte sledeće:

uint8_t uint16_t uint32_t int8_t int16_t int32_t



Sada je potrebno da "nateramo" Npp da radi sa WinAVR-om.
Idemo na Plugins → Plugin Manager → Show Plugin Manager.
Ukoliko nije instaliran, instalirati NppExec plugin


Nakon instalacije Npp će zahtevati da se restartuje - dozvolite mu! ;)
Sada ćemo napisati par skripti da kompajliranje, brisanje i programiranje (kao u PN).
Idite na Plugins → NppExec → Execute (ili jednostavni pritisnete F6 na tastaturi) i unesite sledeće:




Sačuvajte skripte pod imenom "WinAVR Clean", "WinAVR Compile", "WinAVR Program" (ovo je samo predlog).
Sada je neophodno podesiti još par sitnica. Idite na Plugins → NppExec → Advanced Options i čekirajte "Place to the Macros Submenu"


Zatim izaberite skripte koje smo napisali u polju "Associated script" dodajte ih klikom na "Add/Modify" (obratite pažnju da promenite ime skripte u Item name polju!).
Restartujte Npp i nakon ponovnog pokretanja skripte će se pojaviti u meniju Macros.


Sada nam preostaje samo da uredimo konzolu u kojoj će se ispisivati poruke. Treba da dodamo reči koje želimo da budu naglašene u konzoli.
Idemo na Plugins → NppExec → Console Output Filters (ili jednostavno Shift + F6) i dodamo sledece filtere: *error:*, *warning:*, *rc=-1*, *content mismatch*, *Error: Could not find*, *#*, *Reading l*, *Writing l* (ako imate još neke filtere slobodno ostavite komentar).


I to bi bilo to! Sada možete da uživate u pisanju programa za AVR u Npp okruženju! :)

@edit:
Pošto je za kompajliranje .c fajlova neophodan makefile, dodajemo prečicu do tzv. makefile editora (windows shella wish).