LAKI PINGVINI Na MikroE način
Usaradnji sa našim prijateljima iz Mikroelektronike, dobili smo priliku da vam predstavimo kompletan MikroE sistem. U par navrata smo se, možemo slobodno reći, površno družili sa razvojnim pločama ove beogradske firme. MikroElektronika nam je izašla u susret i stavila na raspolaganje sav neophodan hardver i softver da bismo probali programiranje jednog STM32 mikrokontrolera, koristeći Uni Clicker kao ploču/nosač, CodeGrip programator, ali i Necto Studio razvojno okruženje, uz Mikro SDK 2.0. Dakle, onako kako je sve to i zamišljeno. Pa, da krenemo redom. Domaći programator/debugger koji je po mnogo čemu jedinstven u svetu... MikroElektronika ima ozbiljan dizajnerski tim koji osmišljava pakovanja, dizajn brošura, tehničke dokumentacije i slično. Sam vizuelni utisak kada se raspakuje neki njihov uređaj, pa makar to bila i klik pločica, ostavlja bez daha (bar nas kojima je elektronika fetiš - prim. aut.). Vodilo se računa o, naizgled, nebitnim detaljima i već prilikom raspakivanja se oseća onaj premium look koji posebno do izražaja dolazi kod prvog susreta sa samim uređajem u kutiji. Završna obrada je na krajnjim granicama mogućeg, koliko se za jednu elektroničku pločicu to može reći. U svakom slučaju, ništa slično nismo sreli, a imali smo prilike da radimo sa pločama mnogih renomiranih proizvođača. CodeGrip Krenućemo od programatora. CodeGrip je programator/debager, po mnogo čemu jedinstven u svetu. Trenutno postoji nekoliko ovakvih programatora za različite arhitekture, počevši od ARM, PIC, TIVA, KINETIS i STM32 koji smo mi dobili. Vizuelno se programatori ne razlikuju. Samo plastično kućište crne boje relativno je malih dimenzija, sa amber tankom gumom sa donje strane za bolje prianjanje programatora za sto. Boja ćilibara i crna su kod novijih generacija proizvoda MikroElektronike postale zaštitni znak. Uz programator se dobijaju dvostruki USB-C kabl, zatim USB-A na USB-C adapter, CodeGrip JTAG/SWD 20-pin na 10-pin adapter, kao i Wi-Fi antena sa SMA priključkom. CodeGrip je programator kome se kroz softver može pristupiti preko USB kabla, ali i putem lokalne bežične mreže. To je prvi takav programator/debager u svetu i za sada jedini. Napomenućemo da se registracioni kodovi za pristup Wi-Fi funkcijama posebno doplaćuju. I bez Wi-Fi, programator će raditi savršeno. Programator se pri povezivanju sa računarom ne prijavljuje pod COM portom i neće tražiti drajver. Koristi se USB 2.0 HS preko HID protokola, što omogućava veće brzine, te plug’n’play na sva tri vodeća operativna sistema. Druga posebnost programatora jeste to što može da se napaja preko računara ili strujnog adaptera preko USB-C priključka, ali i preko ploče koju programira koristeći 2x5 header. Ovo drugo je posebno važno u korelaciji sa Wi-Fi funkcijom programatora. CodeGripu i target mikrokontroleru se na taj način može pristupiti sa bilo koje lokacije na planeti Zemlji (gde ima interneta i električne energije, naravno). Ako će se CodeGrip napajati preko target ploče, prilikom dizajniranja, napon ka programatoru bi trebalo da se nalazi u rasponu između 2,5 i 10 volti. Postoji i opcija da se ploča napaja preko programatora, ali samo u retkim slučajevima: programator nije predviđen da isporuči veću količinu struje. JTAG/SWD header na CodeGripu je 2x10, a u zavisnosti od target ploče, koristiće se odgovarajući adapter; mi smo dobili 2x5 SWD. Osim pobrojanih priključaka za antenu, flet ribon i USB-C kabl, na programatoru se nalaze još pet statusnih LED. One govore o tome da li se CodeGrip napaja, koji je od dva linka u upotrebi (USB, Wi-Fi), zatim, tu su još Active i Data. Programator može da se koristi i za third party ploče, ali odgovarajuće arhitekture, i uz odgovarajuće adaptere. Iz razumljivih razloga, šeme, softver i slično u vezi CodeGripa nisu dostupne korisnicima. Znamo samo da je u pitanju 32-bitni MCU. CodeGrip koji vam mi ovaj put predstavljamo je stand-alone verzija. Kod velikih razvojnih ploča (Fusion, recimo) CodeGrip dolazi integrisan. Svaki CodeGrip dolazi sa jedinstvenim serijskim brojem i MAC adresom. Koristeći neki od MikroElektronikinih alata možemo da pristupimo većem broju programatora odjednom, ali isto tako jednom programatoru sa više računara. CodeGrip za STM32, koji smo mi dobili, trenutno ima podršku za preko 850 mikrokontrolera STM32 porodice čipova, a podržane su Cortex M0, M3, M4 i M7 arhitekture. Jasno je da će ovaj broj u narednom periodu dalje rasti. Uz CodeGrip ide CodeGrip Suite koji može biti i sve što je potrebno za flešovanje jednog mikrokontrolera i ova alatka je besplatna. Suite se preuzima sa zvaničnih stranica, a interfejs je koncipiran klasično. Leva bočna traka sadrži meni sa podopcijama. U centralnom delu se prikazuju podaci ili opcije na koje može da se utiče. Iznad je traka sa prečicama, dok je pri dnu statusna traka. Ako bi se Suite koristio za direktno učitavanje korisničkog programa na mikrokontroler, u prvoj stavki menija Target MCU pod Options se bira sam mikrokontroler, ali i opcije u vezi sa samim povezivanjem. Recimo, za naš STM32 se pod protokol bira SWD, shodno vezi između njega i CodeGripa. Ovde još mogu da se biraju brzina, način resetovanja target MCU-a i drugo. Pod SWO Trace(serial wire output) mogu da se prate SWO poruke. SWO je deo ARM CoreSight Debug modula, a koji može da se nađe kod velike većine Cortex M3, M4 i M7 jezgara. Programming odeljak prikazuje sve već postavljene parametre ka ciljanom mikrokontroleru, a ujedno nudi i opcije preko kojih MCU može da se detektuje, flešuje pripremljen HEX fajl, uporedi sadržaj iz memorije mikrokontrolera sa source fajlom, obriše čip i drugo. Codegrip donosi opcije skeniranja dostupnih CodeGrip programatora, njihovo podešavanje, prvenstveno Wi-Fi i radnih režima između Station i AP, ali i unošenje pomenute licence da bi Wi-Fi kao opcija uopšte bila aktivna. Posebno se doplaćuje SSL licenca. Nije zgoreg pomenuti da se može birati između spoljne i unutrašnje antene, kao i TX snage. Pod Power je opcija Outputs, gde može da se dozvoli programatoru da napaja target MCU, a samim tim i da se odabere napon. Ispod je i polje gde će biti ispisan izmeren napon target MCU-a, bez obzira na način napajanja. Dalje se nadovezuju sekcije Options i Help. Uni Clicker Uni Clicker slobodno možemo da nazovemo malom matičnom pločom/nosačom. PCB dimenzija 85×85 milimetara, u maniru Flip&Click (SK 12/2021, i.sk.rs/30455,) donosi funkcionalnosti sa obe strane. Dobro poznat raspored četiri mikroBus podnožja o kojim smo ranije već pisali je tu. Svako podnožje ima svoju LED i taster kojima se može upravljati. Koristeći jedan ovakav Uni Clicker uz četiri od dostupnih preko 1150 klikova, moguće je napraviti čak preko 74 milijarde različitih kombinacija i to samo za jedan mikrokontroler. Da, dobro ste pročitali. Pritom je broj klikova iz dana u dan sve veći. Oznake podnožja govore o funkcijama, pinout za svako podnožje je, iz razumljivih razloga, obeležen na samoj MCU kartici. Sa ove strane je još i taster za ’reset’ mikrokontrolera, kao i PWR i CHG LED-ice. Tasteru ’Reset’ se malo teže prilazi ako su popunjeni mikroBus 1 i 2 klikovima. Na poleđini (ili licu, zavisi kako se gleda), je podnožje MCU kartica. Na ovaj način na Uni Clicker može da se postavi neka od preko 110 MCU kartica, pritom i različitih arhitektura, pa i proizvođača samih mikrokontrolera. Mi smo dobili STM32, ali se mogu koristiti i MCU-ovi kompanija NXP, Texas Instruments, Microchip. Uni Clicker dolazi sa 2x5 PROG/DEBUG headerom i jasno obeleženim VCC pinom. Ovde se pločica/nosač povezuje sa CodeGripom ili nekim drugim programatorom, ne nužno i MikroElektronikinim. Ako, pak, ide CodeGrip ili stariji mikroProg o kome je ranije bilo reči, tada je potrebno mikroprekidač do headera staviti u poziciju OFF, za third party programatore treba ga prebaciti u položaj ON. Postoji još jedan veći prekidač kojim ploču uključujemo. Ploča može da se napaja preko USB-C priključka standardnim adapterom ili Li-Po/Li-Ion baterijom preko JST priključka. Između dva mezzanine konektora nalazi se pregršt komponenata, pored ostalih, i kola za upravljanje baterijom, ali i MCP1501 naponski referentni bafer. Do njega je i otpornik od nula oma kojim se može birati između 3V3 i 2,048V. Na dva krajnja oboda pločice su jednoredi headeri gde se završavaju pinovi mikrokontrolera, a izdeljeni su u grupe: interrupt, PWM, UART, I2C, SPI, digital, analog, ETH, CAN, a tu je i PWR. Sam sistem povezivanja i komunikacije između ploče nosača i MCU kartice jasno je definisan prema standardu. MikroElektronika ovaj standard naziva SiBRAIN. Cilj je da se na ploče nosača (Uni Clicker, Fusion, easyPic) ove kartice lako postavljaju, ali i menjaju. SiBRAIN kartice obezbeđuju potpunu kompatibilnost ugrađenog mikrokontrolera u odnosu na ploču/nosača i to bez obzira na tip i arhitekturu MCU-a. STM32 MCU card MCU kartica koju smo dobili na sebi nosi mikrokontroler STM32F407ZGT6. Već smo više puta pisali o označavanju čipova iz STM. Čip pripada ARM Cortex-M4 arhitekturi, dolazi sa jednim megabajtom fleš memorije, 192 kilobajta SRAM-a i taktom od 168 megaherca. Mikrokontroler dolazi sa čak 140 GPIO (LQFN144), 15 komunikacijskih interfejsa (3xI2C, 3xSPI, 2xCAN, 2xUART, SDIO, itd). Kao napredne funkcije izdvajamo USB 2.0 device/host/OtG, te Ethernet. S obzirom na različito postavljene mezzanine konektore, karticu nije moguće fizički postaviti pogrešno. Inače, ove MCU kartice se koriste i kod Fusion razvojnih ploča. Iz tog razloga je označen pinout za čak pet mikroBus podnožja, iako ih na Uni Clickeru ima samo četiri. Na kartici još može da se primeti nepopunjen PTH CAN konektor van dva glavna bočna. Necto Studio Za programiranje STM32 mikrokontrolera koristili smo Necto Studio. MirkoElektronikino razvojno okruženje može da se koristi potpuno besplatno u probnom periodu od 90 dana. Licenca može da se kupi zauvek ili, recimo, jednom mesečno, po potrebi. Izbor je na korisniku. Drugi izbor za razvojno okruženje bio bi mikroC Pro for ARM. Kao, ipak, početnici u MikroElektronikinim alatkama, nakon početnog „šta sada” efekta, vrlo brzo smo došli do upravljanja LED na ploči. Pritom je trebalo proći nekoliko koraka da bi uopšte moglo da se programira. To samo govori koliko je okruženje intuitivno i svako ko je imao prilike da programira makar jedan mikrokontroler, neće imati problema ni ovde, iako je potrebno početno uhodavanje koje zavisi od nivoa iskustva. Necto je alatka namenjena profesionalcima i podržava veći broj arhitektura (čak sedam), veći broj programskih jezika (mikroC, mikroPascal i mikroBasic), kao i platformi. Necto je prvi IDE za embedded razvoj u svetu prilagođen za Mac OS, a da nije od strane proizvođača mikrokontrolera. Alat donosi nekoliko ugrađenih dodatnih alatki, kao što su Converter, HID Bootloader, UART Bootloader, HID Terminal, i drugo. U potpunosti se oslanja na mikroSDK, kao jedini software development kit na svetu koji podržava različite arhitekture. Sam editor u određenoj meri podseća na VS. Tu su syntax highlighter, automatska identifikacija, editovanje više linija, zumiranje kôda i drugo. Najznačajnija je izvorna podrška za sve biblioteke iz MikroElektronikine kuhinje. Ovo se posebno odnosi na biblioteke vezane za klikove. Programski jezik mikroC takođe je delo Mikroelektronikinih softveraša i prilagođen je njihovim kompajlerima, ali i obrnuto. Samo okruženje, naravno, nudi podršku za sve razvojne ploče i mikrokontrolere ovog proizvođača, kao i programatore, ali isto tako su podržana i third party rešenja. Jedno od zanimljivih rešenja Necto alatki je meMake. Sistem za bildovanje keširaće prvi build, a kod svake sledeće ispravke će se bildovati samo ispravljen deo, što umnogome ubrzava rad. Posebno treba napomenuti da, uz Wi-Fi CodeGrip i ugrađene alatke za debagovanje u Necto, može da se pristupi debagovanju od bilo kuda na planeti. MikroElektronika nudi odličan remote servis Planet Debug, integrisan u Necto Studio. Servis preko Necto Studia i CodeGripa omogućava direktno programiranje i debagovanje udaljenom mikrokontroleru. Uz jednu IP kameru, mogućnostima nema kraja. Prema rečima profesora Dogana Ibrahima, servis je trenutno najsofisticiranija real-time udaljena inženjerska laboratorija na planeti Zemlji. Necto Studio zaslužuje poseban tekst, mi, ovako, naprosto ne možemo da pomenemo sve njegove funkcije. Naša MCU kartica je postavljena na Uni Clicker, a CodeGrip sa njima preko ribon kabla. Ceo setup napajamo preko USB-C na Uni Clickeru preko adaptera (pet volti, jedan amper). CodeGrip se uveliko ušuškao u našu bežičnu lokalnu mrežu. Pri pokretanju Necto Studia sačekao nas je početni ekran odakle možemo da otvorimo novi projekat, otvorimo postojeći, neki od primera, instaliramo neki od paketa ili biblioteka, pristupimo udaljenom hardveru i slično. Sam korisnički interfejs ne nudi ništa novo. Leva bočna traka vodi ka editoru, dalje se nižu bilder, programer, debager, simulator i dizajner. Manje-više to i jeste redosled kojim bi trebalo ići. Debugger i Simulatror su opcije na koje treba posebno obratiti pažnju. Gornja traka sadrži menije File, Edit, Project, Debugger, Programmer, Tools, Licences i Help. Ovo poslednje bi trebalo pročešljati u samom startu druženja sa Necto. Tu su pojašnjenja svega u vezi sa IDE, mikroC, a ni tutorijali nisu izostavljeni. Prvi korak bio bi New project. Proces vodi kroz korake pravljenja šablona neophodnog za određeni mikrokontroler, ali i sam projekat. Na kraju je odabir samog setupa, što podrazumeva programski jezik (u našem slučaju mikroC), SDK (mikroSDK), ploča (Uni Clicker), MCU (STM32F407ZG), no display i na kraju programator. Necto se može koristiti i za STM32 M4 Clicker o kojem smo ranije pisali (SK 1/2022, i.sk.rs/30606). Jedan od upita je i ekran, a upit ima smisla kod Fusion razvojnih ploča. U vezi sa CodeGrip, pojaviće se uz opis o načinu povezivanja. U našem slučaju Wi-Fi uz IP adresu. Programiranje u Necto nakon početnog uhodavanja vrlo je intuitivno. Sintaksa je nešto sa čim se srećemo gotovo svakodnevno. Za C jezik, u osnovi, drugačije i ne može da bude. Za svaki projekat počinjemo od „kostura” sa jasno definisanim i iskomentarisanim definicijama, funkcijama i slično. Mesto gde se magija dešava je void main() koji u kosturu sadrži samo dve funkcije, application_init() i application_task(). Ako bismo gledali kroz prizmu Arduino IDE, prva funkcija bila bi void setup() dok bi druga bila void loop(). Dodavanje biblioteka vrši se sa #define, gde se desnim klikom pa GoTo Definition dolazi do same biblioteke u drugom tabu. Tu se mogu videti sve funkcije, sve je dokumentovano i pojašnjeno. Desni deo Studia donosi nekoliko tabova. Projekt menadžer izlistava strukturu celog foldera projekta. Menadžer biblioteka izlistava dostupne biblioteke, što ugrađene, što instalirane. Dalje se nižu debager, Code Explorer, Resource manager. O servisu Planet Debug napisali smo koji red iznad. Na samom kraju je Package menadžer, preko koga se instaliraju biblioteke za svaku klik pločicu. Inače, paket sa bibliotekom i primerom nalazi se na libStock stranicama MikroElektronike i može da se preuzme direktno odatle. Kod instaliranih biblioteka se nudi opcija Open Example, gde dobijamo primer koji radi out-of-the-box. ![]() U primeru koji ovde vidite koristili smo dve klik pločice koje smo dobili ranije i o kojima smo već pisali. To su OLED C i Pressure 4. Uz spajanje dva primera iz biblioteka i par naših „wanna be a programmer” linija smo dobili prikaz temperature i relativne vlažnosti vazduha. Mislimo da program ne treba pojašnjavati. // INCLUDES #include "board.h" #include "oledc.h" #include "oledc_font.h" #include "pressure4.h" #include "conversions.h" static oledc_t oledc; static pressure4_t pressure4; // konverzija void FloatToStrSimple(float f, char * txt, char dec) { unsigned long n; short i = 0, j, tmp = 0, len = dec; unsigned long p[10] = {1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000}; n = f * p[dec]; if (n < p[dec]) tmp = 1; do { if (i == dec) { txt[i++] = ’.’; continue; } txt[i++] = n % 10 + ’0’; n /= 10; } while((len-- > 0) || n); if (tmp) txt[i++] = ’0’; txt[i] = ’’; for (j = i - 1, i = 0; i < j; i++, j--) tmp = txt[i], txt[i] = txt[j], txt[j] = tmp; } //----------------------------------------------- void application_init() { // Click initialization. oledc_cfg_t cfg; pressure4_cfg_t cfg1; oledc_cfg_setup( &cfg ); OLEDC_MAP_MIKROBUS( cfg, MIKROBUS_1 ); oledc_init( &oledc, &cfg ); oledc_default_cfg( &oledc ); oledc_fill_screen( &oledc, 0xFDE0 ); oledc_rectangle( &oledc, 5, 5, 91, 91, 0x0000 ); Delay_ms( 1000 ); pressure4_cfg_setup( &cfg1 ); PRESSURE4_MAP_MIKROBUS( cfg1, MIKROBUS_2 ); pressure4_init( &pressure4, &cfg1 ); pressure4_default_cfg( &pressure4 ); Delay_ms( 100 ); } void application_task() { Delay_100ms(); double tmp; int temp; uint8_t temp_char[10]; uint8_t pres_char[10]; tmp = pressure4_get_temperature( &pressure4 ); temp = pressure4_get_pressure( &pressure4 ); Delay_100ms(); oledc_set_font( &oledc, guiFont_Tahoma_10_Regular, 0x0000 ); oledc_text( &oledc, "T:", 20, 25 ); oledc_text( &oledc, temp_char, 30, 25 ); oledc_text( &oledc, "P:", 20, 55 ); oledc_text( &oledc, pres_char, 30, 55 ); float_to_str(tmp, temp_char); float_to_str(temp, pres_char); FloatToStrSimple(tmp, temp_char, 2); FloatToStrSimple(temp, pres_char, 2); oledc_set_font( &oledc, guiFont_Tahoma_10_Regular, 0xFFFF ); oledc_text( &oledc, "T:", 20, 25 ); oledc_text( &oledc, temp_char, 30, 25 ); oledc_text( &oledc, "P:", 20, 55 ); oledc_text( &oledc, pres_char, 30, 55 ); Delay_ms( 2000 ); } void main(void) { application_init(); while (1) { application_task(); } } • • • Nakon, sada već, prilično vremena provedenog u Mikroelektronikinom okruženju možemo slobodno da kažemo da se sa sličnim sistemima nismo sretali. Svaki segment koji smo ovde opisali funkcioniše savršeno. Svaki segment je izuzetno fleksibilan, intuitivan, usmeren isključivo ka olakšavanju razvoja projekta, što je i osnovna filozofija firme. Uni Clicker u ovakvom setupu možemo da preporučimo i mejkerima, ne samo profesionalcima. Tim pre što Uni Clicker, MCU kartice i klikovi ne spadaju u red preskupih komada hardvera, iako jesu premium proizvodi. Cene nekih klikova iz razumljivih razloga „kvare prosek”, ali za to ne možemo da krivimo MikroElektroniku, već cenu samih komponenata na njima. Ako se CodeGrip u punom formatu učini skupim (programator plus licence), postoje alternativna rešenja, mada ni blizu po funkcionalnosti. Cena programatora pada u vodu, ako znamo da sa CodeGrip dobijamo pristup hardveru na daljinu, koji možemo da preprogramiramo, debagujemo i drugo. U svakom slučaju, domaća firma je na našem stolu zasijala u punom sjaju, a mi vam za naredni broj pripremamo još jednu poslasticu. Do tada, stay tuned!
|
||||||||||
Najčitanije
Igre
Telefoni
Hardver
Softver
Nauka
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... South of Midnight Magična igra koja izgleda kao živa bajka, animirana u stilu filmskog serijala „Spiderverse”... |
||||||||||