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

Postupak za Win8(courtesy of Mr. Dokladal)

 

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 :).

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.

Related Posts

Atmel AVR serija mikrokontrolera – mozak arduina

Atmel AVR serija mikrokontrolera – mozak arduina

Arduino: Analogni ulaz i izlaz

Arduino: Analogni ulaz i izlaz

Arduino detektor stanja promjene (detekcija ruba)

Arduino detektor stanja promjene (detekcija ruba)

Arduino digitalni pullup “povuci gore”

Arduino digitalni pullup “povuci gore”

  • Goran

    svaka čast, čak i macro ti je uspio :)

    • Ivica Zdelarec

      Hvala, još samo treba osvjetljenje pogodit.

  • Goran Mahovlić

    Možda bi bilo dobro da program i dirver skineš i staviš na naš disk na yandex-u tamo stisneš public i on ti da link pa link zaljepiš tu… Nekad stranice sa programima znaju nestati pa je bolje imati svoju kopiju…