SK LABS
MikroElektronika Necto 3.0 i AVR
Arduino Uno u MikroE zagrljaju
D. PETROVIĆ
1. maj 2023.

Pojavljivanjem MikroElektronikinog razvojnog okruženja Necto 3.0, dobili smo priliku da programiramo ne samo AVR mikrokontrolere koje srećemo u Arduino kompatibilnim pločama, za koje je podrška postojala i ranije, već i sam Arduino Uno, kao razvojnu ploču. Naravno da nismo časili ni časa da probamo da programiramo nama omiljenu ploču koristeći Necto. MikroElektronika nam je ljubazno izašla u susret, te smo dobili CodeGrip za AVR programator. Za ostalo smo se već snašli.

CodeGrip

CodeGrip je (kao što vam je poznato: SK 3/2022, i.sk.rs/30764), prvi na svetu programator/debager koji omogućava programiranje povezanog mikrokontrolera bežičnim putem. I to bez obzira na to u kom se vi delu sveta nalazite u odnosu na programator. Više puta smo pisali o CodeGripu kao o zasebnom uređaju, ali i kao integrisanom delu Fusion (SK 10/2022, i.sk.rs/31560) razvojnih ploča. CodeGrip se ne prijavljuje pod COM portom, neće tražiti drajvere od računara, a potpuno je plug’n’play na računarima za sva tri vodeća operativna sistema. Programator može da se napaja preko ploče koja se programira, ali isto tako može sam da napaja tu istu ploču, u zavisnosti od potrebe.

CodeGrip postoji u više vrsta, a u zavisnosti od arhitekture mikrokontrolera koji treba da se programira, koristićemo odgovarajući programator. CodeGrip za AVR se fizički ne razlikuje od svoje braće. Crno plastično kućište sa detaljima boje ćilibara, sa računarom može da se poveže preko USB-C kabla ili preko spoljašnje antene i lokalne bežične mreže na 2,4 gigaherca. Tu je pet LED koje indikuju status programatora, njegovu trenutnu povezanost i slično. Sa zadnje strane do SMA priključka antene je i 20-pinski header, preko koga uz odgovarajući adapter ili dupont žicama povezujemo mikrokontroler.

Trenutno, programator može da se koristi za programiranje čak 229 mikrokontrolera, bez obzira na to da li su u pitanju 8-bitni ili 16-bitni. Podržan je veći broj arhitektura: megaAVR, tinyAVR, XMEGA, AVR DB, AVR DA i AT90. Na zvaničnim stranicama u polju za pretragu, koliko smo uspeli da vidimo, podržani su svi Atmelovi mikrokontroleri koje srećemo na Arduino kompatibilnim pločama. Pretraga radi savršeno, jer daje i sve najbitnije podatke mikrokontrolera, kao i podatke bitne za sam programator. Tako, možemo da vidimo podatke o arhitekturi, broju pinova, kapacitetu fleš memorije, RAM-a, radnom taktu, ali i informacijama o programiranju i debagovanju. Zahvaljujući tome, vidimo da na ATmega4809 (SK 4/2022, i.sk.rs/30961) ne može da se obavi debagovanje, kao ni na nekim ATtiny mikrokontrolerima.

ATmega328p

Interesovao nas je ATmega328p, za koji postoji puna podrška. Za programiranje smo, naravno, odabrali klasični Uno, ali smo se, ipak, odlučili za DIP ATmega328p mikrokontroler, koji smo postavili na prototipsku ploču, uz par kondenzatora kapaciteta 22 pikofarada na kristalu od 16 megaherca i otpornik od 10K na ’Reset’ pinu. Pride smo dodali i jednu LED sa pratećim otpornikom na pinu PB0 (D8 u Arduino mapiranju). Nećemo koristiti Arduino mapiranje, jer u Necto ono nema smisla. Dakle, u pitanju je najosnovnija moguća elektronička postavka ovog mikrokontrolera, koga smo ovaj put napajali eksterno sa pet volti. Povezivanje ove postavke sa CodeGripom ide ovako:

Prvo što smo uradili jeste da proverimo da li CodeGrip ostvaruje komunikaciju sa mikrokontrolerom. To smo postigli koristeći CodeGrip Suite. Ovaj MikroElektronikin alat smo više puta pominjali ovde, a osim za postavke samog programatora, on može biti i sve što je potrebno za programiranje. Koristeći Suite, mikrokontroler može da se programira spuštanjem HEX fajla, a tu su i druge opcije, kao što je brisanje fleša, verifikacija i drugo. Interesovala nas je funkcija Detect, koja omogućava CodeGripu da proveri da li je povezani mikrokontroler baš onaj koji je odabran u Suite, kao i da li uopšte može da sa njim ostvari komunikaciju. Kada je to prošlo kako treba, sve ostalo nije problem. Detektovan MCU znači da smo sve povezali kako treba i da žice, ma koliko klimave, ostvaruju dobar kontakt.

Necto 3.0

Necto u verziji 3.0 donosi nove iskorake koje naprosto niko od konkurencije ne stiže da isprati. Već smo više puta naglasili da je veličanstven osećaj ako znamo da iza svega stoji domaća pamet. Necto AI Assistant je Q&A sistem koji se hrani velikom bazom podataka u vezi sa tehničkom dokumentacijom, vezanom kako za hardver, tako i za softver. Assistant je predviđen da nas spasi mukotrpnog preturanja po kilometarskim PDF-ovima tehničke dokumentacije. Dovoljno je komunicirati sa asistentom prirodnim jezikom, a on će ponuditi listu potencijalnih odgovora. Takođe, može da se odabere neka od funkcija u kôdu ili menadžeru biblioteka da bi se dobila pomoć. Dovoljno da se zapitamo, kome treba chatGPT? Drugi novitet je Application Output koji je u uskoj vezi za Planet Debug. Treći je Custom Board Tool, alatka koja i nas interesuje. Ova alatka omogućava dodavanje sopstvenog hardvera u okviru Nectoa, pa, čak, i sa njegovom slikom i parametrima od značaja. O ovom ćemo u nekom od narednih brojeva, jer planiramo da napravimo jednu, po mnogo čemu jedinstvenu ploču (dotle, stay tuned). Noviteti se nastavljaju preko dodatnih grafičkih elemenata u Designeru, kao i u gomili sitnih poboljšanja u mikroSDK, a ponajviše u brzini kompajliranja. Pogled na roadmap za Necto kaže da je u planu i podrška za microPython, što nas posebno raduje i svakako ćemo napisati koji red kad za to dođe vreme. Ono što MikroElektronika ne kaže, ali mi znamo, jeste puna namenska podrška za Arduino Uno razvojnu ploču.

Da bi se neki mikrokontroler programirao u Necto, prvo je potrebno oformiti odgovarajući Setup, kao pred-okruženje u kome ćemo navesti koji mikrokontroler ćemo programirati kojim programskim jezikom i kojim programatorom. Prilikom postavki Setupa, za kompajler biramo mikroC AI for AVR. Za Board biramo Arduino Uno Rev3. Ovde pod Generic AVR Board može da se izabere bilo koji drugi od dostupnih mikrokontrolera, poput 32u4 sa Leonarda, 2560 sa Mege, ali i „čist” ATmega328p. Pod MCU postoji odabir između ATmega328 i ATmega328p, oba u SPDIP. Ovo je malo čudna odluka, jer Uno nismo primetili sa MCU bez p u oznaci, ali svakako jesmo u TQFP, koga ovde nema. Razlike između DIP i TQFP postoje u par dodatnih pinova. Tek, biramo ATmega328p i ispod u vidžetu idemo pod Advanced, da bismo postavili neophodna setovanja mikrokontrolera. Prvi je radni takt, koji je ovde 16 megaherca. Fuse postavljamo pod Select Clock Source, a mi biramo treću Ext. Crystal Osc. 8.0- MHz stavku. Sve ostalo ostaje isto, sem što postavljamo Set za Serial program downloading (SPI) enabled, jer ćemo MCU i programirati koristeći SPI interfejs. Takođe, za Divide clock by 8 internally stavlja se Clear da ne bi LED-ica treptala van časovnika. Dalje, idemo za Display, No Display i na kraju programator. Od dostupnih, tu su CodeGrip, GDB general i mikroProg for AVR, kao raniji MikroElektronikin programator. Biramo CodeGrip i kod njega idemo na Target Options. Ovde su postavke za brisanje fleša, verifikacije, protokola, a nas interesuje brzina programiranja - Speed, gde stavljamo 100 kiloherca. Nakon snimanja, možemo da programiramo naš mikrokontroler. Jedan Blink skeč (da se izrazimo u Arduino terminologiji) izgledao bi ovako:

#include "drv_digital_out.h"

static digital_out_t led1_pin;

int main(void)

{

 digital_out_init(&led1_pin, PB0);

 while (1)

 {

  digital_out_toggle(&led1_pin);

  Delay_ms(1000);

 }

 return 0;

}

Potrebno je, pre svega, uključiti biblioteku koja će raditi sa digitalnim izlazima. Nakon toga, deklarišemo određeni pin kao Output, u našem slučaju PB0 . Odlična funkcija za ono što nam treba jeste digital_out_toggle(), uz jednu sekundu zastajanja. Tek, nakon par sekundi, LED na pinu PB0 je počela da trepće. Ovo je svojevrsni „Hello World!!!” u elektroničkom smislu.

Da pojasnimo malo podešavanja u Necto, posebno u vezi sa CKSEL i SUT Fuse bitovima. U suštini, morao bi se pratiti datasheet ATmega328P. Opcije u Nectou prate one u tehničkoj dokumentaciji za CKSEL i SUT Fuse. Lista clock opcija u Necto počinje od najniže vrednosti CKSEL i SUT Fuse bita (0000 i 00), pa raste ka najvišima (1111 i 11), kako se spuštamo dole kroz padajući meni opcija. Prvo se uvećavaju SUT bitovi od 00 do 11, da bi se, potom, uvećala vrednost CKSEL bita, a SUT bitovi vratili na 00. Onda se SUT bitovi ponovo uvećavaju do 11, posle čega se uvećavanje CKSEL vrednosti ponavlja, a SUT vraća na 00. U zavisnosti od odabrane brzine programiranja, a u korelaciji sa radnim taktom samog MCU, verifikacija može da potraje. To je i razlog zašto smo brzinu programiranja podigli na 100 kiloherca, jer predefinisana brzina dovodi do jako spore verifikacije. Razumemo da ovaj MCU može da ima više opcija za setovanje, pogotovo u sprezi sa radnim taktom koji može biti različit, ali ako smo odabrali Uno, na njemu je sve fiksno. Tako, smatramo da bi ove postavke za definisanu razvojnu ploču isto tako morale da budu predefinisane. Nadamo se da će se ovo desiti u nekoj od narednih nadogradnji. Sloboda izbora Fuse bitova je razumljiva u Generic.

• • •

Zašto smo prednost dali MCU-u na prototipskoj ploči u odnosu na Uno? Arduino Uno ima jedan kondenzator od 100 nanofarada na nezgodnom mestu, koji pravi problem kod debagovanja sa CodeGrip i Necto. Naime, Uno je predviđen da se programira preko UART interfejsa, gde DTR linija UART čipa „odradi” svoj deo posla i resetuje ATmega328p. Ovaj kondenzator na ’Reset’ liniji ima funkciju ako će se Uno programirati kroz Arduino IDE i ATmega16u2 na njemu (ili CH340 i slično). On ne smeta da se Uno programira kroz Necto, već smeta samo prilikom debagovanja. Rešenje je da se Reset pin prespoji.

MikroElektronika nastavlja krupnim koracima da nudi svoje razvojno okruženje i zajednici koja ga, inače, možda ne bi koristila. To što nam je omogućeno da programiramo jednu Arduino ploču kroz Necto nije jedini plus. Jednom Arduino Unu je, uz Necto i Arduino Click Shield, na raspolaganju preko 1400 Click pločica za razvoj projekata. To i činjenica da svaka Click pločica ima krajnje funkcionalnu biblioteku, stavljaju Necto čak i ispred Arduino IDE-a, i to što se tiče Una, kao osnovne Arduino razvojne ploče.

CodeGrip

VCC-TGT

GND

ISP_MOSI

ISP_CLK

ISP_MISO

RESET

ATmega328p

5V

GND

PB3

PB5

PB4

RESET


PRETHODNI TEKST
SLEDEĆI TEKST
Najčitanije
Igre
Telefoni
Hardver
Softver
Nauka
Aktuelno štampano izdanje
APRIL 2024
Gigabyte Radeon RX 7900 GRE Gaming OC 16G
Zlatni zeka
Model koji je izvorno namenjen kineskom tržištu, i koji se tamo pojavio još prošlog leta, lepo je popunio prazninu između modela RX 7800 XT i RX ...
Asus ROG Zephyrus G16 (GU605MY-QR085X)
Najkompaktnija zverka
Uz sve kompromise, ovo je verovatno najsnažniji laptop smešten u manje od dva kilograma i 18 milimetara visine...
Honor Watch 4
Savršeno upakovan
Sat koji donosi veoma malo pravih noviteta, ali kod kog je uklapanje poznatog i očekivanog dovedeno do savršenstva...
Mobile World Congress 2024
Ovde i AI ima AI
Utisak je da MWC „na nogama” drže isključivo velike kineske kompanije, a praksa predstavljanja flegšip telefona na sajmu je sve ređa...
Inovativni motori i reaktori
Bolji pogon
Električni motori uskoro stižu u putničke avione, samo da se reši nekolicina konstruktorskih prepreka...
Honor Magic 6 Pro
Magična Šestica
Sistem kamera oslanja se na tehnički sofisticiran dizajn sa promenjivim otvorom blende...
Apple, AI i nova tužba za monopol
Kisela ili slatka jabuka
Apple će uvek da koristi sopstveno rešenje, ukoliko može da ga napravi dovoljno brzo i kvalitetno...
Dragon’s Dogma 2
Nastavak dvanaest godina stare igre koja odavno ima kultni status, naoko, jednostavan akcioni RPG koji se trudi vas angažuje, ali i pomalo namuči...
Rise of the Ronin
Rise of the Ronin izuzetno podseća na Ghost of Tsushima, kako po izgledu, tako i po konceptu...
Highwater
Ugodan koktel postapokaliptične komike i poetične melanholije...
Microsoft Windows 3.0
Prisećamo se treće iteracije operativnog sistema baziranog na grafičkom korisničkom okruženju, koja je konačno mogla da izađe na crtu takmacima...
© 2024 Svet kompjutera. Sva prava zadrzana.
Novi broj - Arhiva - Forum - O nama