LAKI PINGVINI
ATmega8, ATmega32, ATmega64, ATmega128, ATmega168
AVR egzotika
D. PETROVIĆ
1. maj 2021.

Kada govorimo o Arduino okruženju, uglavnom se misli na AVR porodicu mikrokontrolera, gde se najčešće koriste ATmega328p i ATmega2560. Naravno, Arduino zvanično ima mnogo širi dijapazon mikrokontrolera na svojim pločama i van AVR arhitekture. Ali, workhorse je i dalje Uno, bez naznaka da će se to u skorije vreme promeniti. ATmega porodica mikrokontrolera u osmobitnoj AVR arhitekturi je, sa druge strane, mnogo veća. Neki od ovih MCU su se i koristili na zvaničnim Arduino pločama, poput ATmega168, na primer. Mi smo nabavili nekoliko razvojnih ploča sa mikrokontrolerima iz nadnaslova, a koje se i te kako mogu programirati kroz Arduino IDE, uz odgovarajući programator.

ATmega8

Kao i ATmega328p, i ATmega8 dolazi u DIP28 formatu, ali i u TQFN32 i QFN32 pakovanjima. Četiri pina više na SMD pakovanjima zapravo su dodatni izvodi analogno-digitalnog konvertera. U DIP varijanti ih ima šest desetobitnih, dok ih u SMD varijantama ima po osam. Broj digitalnih GPIO je 14, od kojih samo tri imaju PWM mogućnosti. Imamo još po jedan I2C, SPI i UART. Dakle, na prvi pogled, nema prevelike razlike u odnosu na ATmega328p. Ono što je svakako ozbiljna razlika jeste memorija. I na referentnom Unu mnogi skečevi naprosto nemaju mesta da se smeste, a da Uno radi bez problema. Ovde je memorija još manja: ATmega8 na raspolaganju ima osam kilobajta fleš memorije, 512 bajta EEPROM-a i samo jedan kilobajt SRAM-a. Inače, MCU može da radi na 16 i osam megaherca sa eksternim kristalom, poput onog na Unu. Ovo se direktno odnosi i na radni napon, gde će na 16 megaherca ATmega8 raditi na pet volti, dok sa osam megaherca možemo računati i na 3,3 volta, ali i na pet volti. U označavanju, MCU koji radi na 16 megaherca nosi oznaku ATmega8, dok onaj na osam megaherca nosi oznaku ATmega8L.ATmega8 je malo veći potrošač, sa 3,6 miliampera pri radu.

Naša razvojna ploča je prilično malih dimenzija, sa nužnom elektronikom, a zanimljivo je da kristal na 16 megaherca ima svoj slot i po potrebi ga lako možemo zameniti sa onim na osam megaherca. Mini-USB port se koristi samo za napajanje, iako ispod ima izvedene padove „D+” i „D-”, oni nikuda ne vode. Tu je i DPDT prekidač za uključivanje ploče, kao i selektor radnog napona, ako promenimo kristal na osam megaherca. Imamo još izveden tropinski header za pet volti, GND i 3,3 volta. Kompletan pinout ATmega8 je izveden i možda malo zgusnut. Pinovi su označeni po portovima (B, C i D), dok su zasebno označeni samo AD6, AD7 i AREF. Za ostale pinove moramo se obratiti tehničkoj dokumentaciji. Na ploči još imamo i ’reset’ taster, ali i 10-pinski ISP header, preko koga ploču programiramo.

Prilikom odabira ploče, u Board možemo birati između Arduino NG i ATmega8, s tim što ovaj potonji nudi mnogo više opcija za odabir.

ATmega32

Iako malo veći čip, ATmega32 dolazi sa, ipak, identičnom memorijom kao na 328p. Tu su po jedan I2C, SPI i UART interfejs. Mikrokontroler na raspolaganju ima 32 GPIO, od kojih je osam analognih, dok je od svih digitalnih, PWM moguć na samo četiri kanala. I ovde imamo mogućnost rada na više radnih taktova, gde prema tehničkoj dokumentaciji imamo podatke za osam i 16 megaherca. Kao i kod drugih ATmega, i ovde se to oslikava na radne napone. ATmega32 dolazi i sa JTAG interfejsom, preko koga možemo programirati fleš, EEPROM, osigurače i slično. Potrošnja struje kada je čip aktivan ide do 1,1 miliamper.

Mikrokontroler smo nabavili u obliku razvojne ploče, malo drugačije od one na ATmega8. Na ploči imamo dva 10-pinska hedera, ISP I JTAG. Četiri LED do njih možemo koristiti za testiranja, Blink ili slično. Na žalost, nema oznaka na koje pinove su vezane, pa moramo pratiti trace na PCB. Naš primerak je došao sa LED chaser korisničkim programom. Uz čip dolazi i kristal od 16 megaherca, a imamo još prekidač za uključivanje, selektor radnog napona, kao i mini-USB port koji služi samo za napajanje. Pinout je razveden u dva reda sa dve strane i obeležen je po portovima. Čak nisu razdvojeni ni analogni pinovi. Osim pinouta mikrokontrolera, imamo još i AREF, GND, DVcc i AVcc.

Za odabir ploče ovaj put biramo MightyCore ATmega32. Naš kristal na njoj je od 16 megaherca, pa biramo i njega. Inače, na svakoj od ploča kristal dolazi zaboden u ženski header i lako se može menjati radi testiranja. Mi smo se držali onih koji su došli uz ploče.

ATmega64

Kod ovog mikrokontrolera imamo dosta više prostora što se tiče memorije: fleša ima 64 kilobajta, EEPROM je dva kilobajta i tu su četiri kilobajta SRAM-a. Svakako dosta potentniji čip od mnogih ovde, pa i u odnosu na ATmega328p. Sa svojih 53 GPIO, na raspolaganju nam je osam WPM kanala, osam 10-bitnih ADC, po jedan I2C i SPI, ali i dva UART-a. JTAG interfejs je prisutan, a preko njega možemo programirati fleš, EEPROM, osigurače i slično. Prema tehničkoj dokumentaciji, MCU je predviđen da radi na osam i 16 megaherca, uz različite radne napone.

Razvojna ploča nam je stigla u DIY (do-it-yourself) varijanti, sa 0805 komponentama i bez ikakve dokumentacije koja komponenta gde ide. Bez ikakve oznake na trakama komponenata, što nije problem za otpornike, ali jeste za kondenzatore. Srećom, razvojna ploča za ATmega128 je identična, pa smo je koristili uporedo i uspeli da pogodimo gde šta ide. Na ploči imamo četiri LED koje možemo da programiramo. Tu je i pomenuti JTAG. Kristal koji je došao uz ploču je na 12 megaherca. Ceo pinout je poređan u dva reda sa svake strane, sa oznakama po portovima. Tu je i mini-USB port za napajanje ploče, selektor radnog napona, prekidač za uključivanje i ’reset’ taster.

Pri odabiru ploče, biramo MegaCore ATmega64. Kao i kod drugih ploča iz pomenutih paketa, i ovde imamo mogućnost odabira kristala i još mnogo toga.

ATmega128

Ovaj MCU već dolazi sa „masnom” količinom memorije. U poređenju sa ostalim mikrokontrolerima, razlika je i više nego očigledna. Fleš memorije je kapaciteta čak 128 kilobajta, uz četiri kilobajta EEPROM-a i četiri kilobajta SRAM-a. Od zanimljivosti, izdvojili bismo Qtouch biblioteku koja omogućava inpute osetljive na dodir, naravno, u kapacitivnom obliku. Veći čip znači i veći broj GPIO, a ovde ih imamo čak 53. Od dostupnih, na po osam imamo PWM i ADC. Zatim, tu su standardno I2C, SPI ali i dva programabilna UART-a. Kao i na ostalima, za radni takt važi isto što i za radne napone. JTAG je i ovde prisutan.

Razvojna ploča je malo veća od ostalih, što je razumljivo. I mikrokontroler je veći, sa većim brojem GPIO. Ceo pinout je razveden u dva bočna dvoreda. Oznake su, naravno, kao i na ostalima, po portovima. Dva 10-pinska headera za ISP i JTAG su tu, kao i selektor napona. Mini-USB port je, kao i do sada, tu isključivo zbog napajanja. Uz mikorkontroler je došao kristal na 12 megaherca, a dodaćemo da i ovde imamo četiri LED, dok je na ploči programiran LED chaser.

ATmega168

Ovaj mikrokontroler je stari znanac, u smislu da je korišćen u Arduino Duemilanove pločama, ali i na Arduino Pro Mini, o čemu smo ranije često pisali, pa čak smo ih i koristili u par DIY projekata. MCU dolazi sa osam analognih pinova 10-bitne rezolucije. Tu su I2C, SPI i UART interfejsi, ali i šest PWM digitalnih pinova. U suštini, jako je sličan modelu ATmega328p, osim po količini memorije. Ovde imamo 16 kilobajta fleš memorije, 512 bajta u EEPROM-u i jedan kilobajt SRAM-a. To je dosta više od ATmega8, ali i za koju nijansu manje od Una. Takođe može da radi na 16 i osam megaherca, što uslovljava i radne napone od 3,3 i pet volti. Ovaj mikrokontroler u radu troši do 1,8 miliampera, na nižem taktu kristala.

Mi smo ga nabavili na razvojnoj ploči identičnoj onoj sa ATmega8. Sa kompletno identičnom elektronikom, istim rasporedom pinova i džampera, kao i 10-pinskim ISP headerom. Razlika je u tome što smo ga dobili sa kristalom na osam megaherca. Stoga, džamper za odabir napona ide na 3,3 volta.

Za odabir ploče možemo zabrati između pomenutih Arduino Pro Mini, Duemilanove ili ATmega168 iz paketa o kom možete pročitati u nastavku teksta. S obzirom na kristal od osam megaherca, biramo taj i u okviru postavki ploče.

USBAsp

Programator koji ćemo koristiti je USBAsp i najčešće se koristi za programiranje bootloadera kroz Arduino IDE. Naravno, možemo ga koristiti i za programiranje korisničkog programa mikrokontrolera. Inače, i sam USBAsp je zasnovan na ATmega8 mikrokontroleru, a radi na 12 megaherca. Na njemu imamo i džamper za izbor radnog napona (3,3 ili pet volti). Pre korišćenja, potrebno je instalirati drajvere, za šta koristimo Zadig softver. U padajućem meniju biramo USBAsp, a Zadig će instalirati odgovarajući. Nakon toga bi u Device Manageru, pod Universal Serial Bus Devices, trebalo da se pojavi USBAsp. Podrazumeva se da je programator sve vreme priključen na računar. Nakon toga, idemo na Tools: Programmer i tu biramo USBAsp. Korisnički program prebacujemo tako što biramo odgovarajuću ploču kao i do sada, ali za upload idemo na Sketch: Upload Using Programmer. Skeč će se prebaciti kao i kada to radimo sa, recimo, Unom, klasičnim putem.

ATmega paketi

Da bismo uopšte koristili ove mikrokontrolere kroz Arduino IDE, potrebno ih je dodati u IDE. ATmega8 i ATmega168 mogu se koristiti kroz Arduino NG i Arduino Duemilanove, međutim, još elegantnije rešenje svodi se na dodavanje kompletnog paketa podrške kroz Boards Manager. Na taj način, osim podrške za mikrokontrolere, imamo i mogućnost eventualnog programiranja bootloadera. MCUDude je obavio odličan posao i sve što treba da uradimo jeste da idemo u File: Preferences i u polje Aditional Boards Manager URLs dodamo sledeće linije razdvojene zarezom:

https://mcudude.github.io/MegaCore/package_MCUdude_MegaCore_index.json

https://mcudude.github.io/MightyCore/package_MCUdude_MightyCore_index.json

https://mcudude.github.io/MiniCore/package_MCUdude_MiniCore_index.json

Nakon toga, idemo na Tools: Board: Board Manager i kucamo redom „MegaCore”, „MightyCore” i „MiniCore” i svaki od paketa instaliramo. Nakon toga će se svi mikrokontroleri pojaviti u odabiru ploča. Sa ova tri paketa dobijamo podršku za još veći broj mikrokontrolera, van ovih koje sada predstavljamo. Odabirom bilo kog od ovih mikrokontrolera dobijamo širok dijapazon opcija, počevši od velikog broja dostupnih kristala, opcije za EEPROM, kompajler i bootloader.

Programiranje

Probali smo sve ploče sa osnovnim primerima, kao što je, recimo, Blink ili DigitalReadSerial, pa čak i naše testove računanja broja Pi, kao svojevrstan benčmark. Testovi su nam pokazali razliku u radnom taktu i količini memorije.

Za Blink smo probali ono što nude paketi, kao primere baš za ove mikrokontrolere. Recimo, Blink skeč smo adresirali prema portovima:

void setup() {

DDRB = B11111111; //svi pinovi B porta input

PORTB = B00000000; //svi pinovi B porta LOW

}

void loop() {

PORTB = B00000000; //pin B0 LOW

delay(1000);

PORTB = B00000001; // pin BO HIGH

delay(1000);

}

Ovde se obraćamo PB0 portu. U tehničkoj dokumentaciji ne postoje paralelne oznake porta i samog pina. Međutim, ako znamo da je na ATmega328p PB0, zapravo, digitalni pin „8”, jasno je da u klasičnom Blink skeču možemo adresirati pin i kao „8” i dobiti isto. Za prikaz podataka na serijskom terminalu, naravno, ne možemo koristiti mini-USB port, već nam treba neki UART adapter, a mi smo koristili standardni FTDI. Povezivanje ide klasično na RX/TX linije ovih ploča, s tim što se oznake od ploče do ploče razlikuju. Tako, na ATmega8 ploči oznake serijskog interfejsa su D0 i D1, dok su, recimo, na ATmega128 to PD0 i PD1. Suština je, naravno, ista.

Ovo su vrlo zanimljive ploče sa malo drugačijim mikrokontrolerima u odnosu na one na koje smo navikli. Za manje iskusne postoji rešenje kroz Arduino IDE, te smatramo da ih treba uzeti u obzir za neke eventualne naredne projekte.


PRETHODNI TEKST
SLEDEĆI TEKST
Najčitanije
Igre
Telefoni
Hardver
Softver
Nauka
Aktuelno štampano izdanje
MAJ 2025
Microsoft Majorana 1
Kvantna topologija
Topološki kvantni računar otporan je na uticaj kosmičkog zračenja, ali i dalje mora da se ohladi skoro do apsolutne nule...
AMD Ryzen 9 9950X3D
Jedan, da svima vlada
Ako vam je potreban najbrži procesor, i za igranje, i za ozbiljnije zadatke, Ryzen 9 9950X3D nema konkurenciju...
Gigabyte GeForce RTX 5070 Ti Aero OC 16G i GeForce RTX 5070 Ti Gaming OC 16G
I za kreativce, i za igrače
Sasvim sposoban da se nosi sa 4K rezolucijom u svim igrama i pruži sasvim pristojne performanse, dok u 1440p apsolutno blista...
Asus ROG Strix Scar 18 (G835LX)
Fantastična zver i kako je kupiti (3)
Laptop namenjen onima koji „ne žale pare” da imaju ono što je trenutno najbolje i najbrže...
Deset najboljih Microsoft PowerToys alatki
Najbolji od najboljih
PowerToys Run je alatka kojoj treba da se okrenete ukoliko vam sistemska rutina za pretragu ne odgovara...
Apple iPhone 16e
Malo muzike za mnogo para
Problem nije samo cena i slabiji grafički podsistem, već i trajanje baterije...
Cemu 2.6
Wii U emulacija
Cemu omogućava pokretanje i privođenje kraju oko 57 procenata igara „napisanih” za Wii U...
.rs: nove usluge eUprave - novi propisi - najava 5G
Mnogo eNoviteta
U novom esDnevniku roditelji će dobijati notifikacije za ocene i izostanke...
Trgovinski rat Istoka i Zapada
Velika igra, nesagledive posledice
Kao u igri „kukavice”, dve supersile kreću se velikom brzinom jedna prema drugoj, izazivajući drugu da prva skrene...
Blue Prince
Jedinstveni dijamant i jedna od najoriginalnijih igara u poslednjih nekoliko godina...
Tempest Rising
Skupa i ambiciozna fotokopija legendarnog RTS klasika Command & Conquer...
South of Midnight
Magična igra koja izgleda kao živa bajka, animirana u stilu filmskog serijala „Spiderverse”...
© 2025 Svet kompjutera. Sva prava zadrzana.
Novi broj - Arhiva - Forum - O nama