Atmel AVR – početak

Atmel AVR – početak

U ovom članku objasnit ćemo osnovne pojmove vezane uz hardware Atmelovih AVR mikrokontorolera i izraditi jednostavan developement setup koji se može do mile volje nadograđivati koliko god to specifikacije samog mikrokontrolera dozvoljavaju. Najpraktičnijima za razvoj pokazali su se AVR-ovi iz ATmega 48/88/168/328 serije. Ovi mikrokontroleri nude širok spektar opcija, tako da se mogu koristit skoro za svaku namjenu. Raspon napona napajanja i mala potrošnja te više stand-by modova omogućavaju korištenje samo jedne Li-ion ili Li-Po baterije za napajanje. Odlikuje ih i velik broj digitalnih, kao i ‘analognih’ ulaza i izlaza. Po tri različita timera sa raznim opcijama i mogućnost povezivanja USART, SPI i I2C serijskim protokolima. Brojke prije zadnje 8-ice u oznaci serije označavaju količinu programske memorija u kilobajtima dakle, ATmega 168 raspolaže sa 16 kilobajta memorije, a 328 sa 32kb. Iako su svi mikrokontroleri iz ove serije kompatibilni i po registrima i po rasporedu nožica, za razvojnu platformu preporučam baš 168 ili 328, pogotovo ako namjeravate ubaciti neki grafički LCD. Još treba uzeti u obzir da najmlađa sestrica 328 raspolaže i sa dvostruko više EEPROM-a(1kb) i RAM-a(2kb) od 168-ice. Ovi mikrokontroleri se nude u različitim kućištima, od kojih za početak preporučam DIP kućište koje se može direktnu upiknuti u breadboard. TQFP kućište osim svoje male veličine nudi i dva dodatna ADC(‘analogna’) ulaza, što je nekad dovoljno da čovjeka natjera na prelazak na SMD. Neki možda još uvijek prezaju od SMD tehnologije, ali više o tome u nastavku ‘kako sam se prestao brinuti i zavolio SMD’.

Nakon što se opskrbite sa nekoliko 328-ica(ne, jedna nije dovoljna), za sam početak dovoljno je nabaviti još samo par sitnica od kojih su glavne breadboard i USB programator. Od breadboardova preporučam izvedbu sa 830 rupa, a od programatora USBasp. Osobno sam se sa AVR-om počeo baviti jer nije bilo potrebno kupovati skupi programator, već je blio dovoljno spojit ga na paralelni port računala sa par žica i otpornika. Iako takav pristup i danas funkcionira, toplo preporučam da pogledate USBasp

 Radi se o open source programatoru, tako da ako imate volje, možete skinuti PCB layout, izraditi pločicu i kod prijatelja koji već ima programator ubaciti .hex u USBasp-ov ATmega88. Čisto sumnjam da će se to ikome isplatiti s obzirom da se gotovi programatori prodaju za oko 3 dolara na ebay-u. Zato, naručite odmah dva, jer si ne možete priuštiti čekanje od dva-tri tjedna ako izgubite jedan. Za korištenje ovog programatora u windowsima potrebno je updaetati drivere sa USBasp stranice[http://www.fischl.de/usbasp/]. Dakle u ‘Device manageru’ pronađete USBasp uređaj i kliknete naUpdate driver.

Ako i nakon ovog postupka ‘Device manager’ prijavljuje problem, potrebno je Windowse ‘uvjeriti’ da mogu vjerovati ovim driverima korištenjem jednostavnog programa[http://www.ngohq.com/?page=dseo]. Nakon što pokrenete program, potrebno je odabrati opciju ‘Sign a system file’ te kopirati lokaciju drivera (npr: “C:\…\usbasp-windriver.2011-05-28\libusb0.sys”). Nakon toga ne zaboravite kliknuti ‘Enable test mode’ u programčiću i resetirati računalo. Mali heads-up, izgleda da u nekim verzijama Windowsa nakon ovog postupka USBasp radi samo na onom USB portu u koji je bio uštekan tijekom postupka !!! Zato, nabaviti male-to-female USB kabl, i to poduži :).

DSO_comp

[toggle title=”Postupak za Win8(courtesy of Mr. Dokladal)“]

Da bi zaobišli verifikaciju potpisa drivera na Win8 potrebno je napraviti sljedeće korake:

1) Potrebno je ući u Settings menu koji se nalazi s desne strane ekrana

2) “Change PC Settigns”

3) Zatim “General” koji se nalazi s desne strane ekrana, te na dnu u “Advanced startup” odabrati “Restart Now”

4) “Troubleshoot”

5) “Advanced options”

6) “Startup Settings”

7) “Restart”

8) “Disable Driver Signature Enforcement” odnosno F7

 

Zatim napraviti update drivera. Ovaj proces potrebno je ponoviti svaki put kod korištenja USBasp programera.

[/toggle]

 

[notification type=”warning”]Mali heads-up, izgleda da u nekim verzijama Windowsa nakon ovog postupka USBasp radi samo na onom USB portu u koji je bio uštekan tijekom postupka !!! Zato, nabaviti male-to-female USB kabl, i to poduži :).[/notification]

Nakon instalacije drivera, USBasp je potrebno spojiti sa megicom. Na sljedećoj slici prikazan je raspored pinova 10-pinskog konektora, i pozicije odgovarajućih nožica na Atmegi 328.

USBasp

 

Za uštekavanje programatora u bread, potrebno je izraditi jednostavan adapter. Za izradu ovakvog adaptera praktično je koristiti perforirane pločice za prototipe sa linijama. Takvu pločicu je potrebno izrezati tako da u nju stane jedan 2×5 header konektor, i dva komadiča SIL konektora sa pet pinova. Zatim je potrebno prekinuti vezu linija između dva reda 2×5 konektora. To je najlakšte napraviti uz pomoć malene turpijice. Ako koristite SIL letvu standardne dužine, potrebno je pinove utisnuti tako da budu u ravnini sa plastikom na jednoj strani. Time ćete osigurati dobar spoj sa breadboardom, a uostalom i urednije izgleda. Toplo preporućam da koristite konektor 2×5 sa kućištem umjesto golog pin headera. Uštedit ćete si dosta vremena kada nakon par mjeseci neaktivnosti izuvčete bread iz prašine.

Picture 5

Na sljedećoj slici prikazan je primjer ožićenja Atmege sa konektorom programatora. Dodana je i ledica koja će nam poslužiti samo za demonstraciju nakon upisivanja testnog programa koji će je natjerati da problinka.

Picture 7

Za ‘točenje’ programa u Atmel preporučam zgodan programčić Khazama [http://khazama.com/project/programmer/]. Za probu možemo utočiti program za blinkanje ledice[https://github.com/ArchStanton/AtmelAVR-pocetnica]. U padajućem izborniku AVR: , ili pod File-> AVR->Mega odaberemo mikrokontroler koji koristimo. Zatim kliknemo File-> Load FLASH file to Buffer, odgovarajuće dugme na  alatnoj traci ili Ctrl+L na tipkovnici, i odaberemo ”Blinky.hex” file. Nakon toga trebamo još kliknuti na Command-> Write FLASH Buffer to Chip ili Ctrl+F da bismo utočili program na Megu.

Khazama_obrada

I eto ga. Sada imamo sve što je potrebno za programiranje AVR-a, i u sljedećem nastavku poćinjemo sa konkretnim programiranjem. Za programiranje ćemo koristiti C compiler, tako da se ne trebamo navlačiti sa asemblerskim kôdom, i teorijom mikroračunala. Sljedeći put ćemo objasniti manipuliranje bitovima, i princip rada sa registrima, pa bi bilo zgodno da se opskrbite sa barem 8 LED-ica, i odgovarajućim otpornicima.