0,00 €

V košarici ni izdelkov.

0,00 €

V košarici ni izdelkov.

More
    DomovRevijaProgramiranjePametni mikrokontrolerji z arhitekturo ARM (5)

    Pametni mikrokontrolerji z arhitekturo ARM (5)

    Svet elektronike colorAvtor: dr. Simon Vavpotič
    2019_278_31

    32-bitne ARM mikroarhitekture prinašajo v svet mikrokontrolerjev veliko zmogljivost in nešteto novih možnosti uporabe. Kaj so pametni mikrokontrolerji, kaj zmorejo in kako jih uporabljamo?

    Nemalokrat se sprašujemo, zakaj lahko pametni telefoni, ki so pogosto manjši od prenekatere mikrokontrolerske preizkusne ploščice, poganjajo sodobne operacijske sisteme in izvajajo skoraj toliko procesov in aplikacij kot klasični namizni računalniki, povprečen 8-bitni ali 32-bitni mikrokontroler pa po zmogljivosti še vedno primerjamo s hišnimi računalniki s konca osemdesetih in začetka devetdesetih let preteklega stoletja. Odgovor na to vprašanje dajejo ARM procesorska jedra, katerih dizajn je mogoče licencirati in ga vgraditi v lastne dizajne procesorskih ali mikrokontrolerskih čipov, s katerimi se da na eni silicijevi rezini združiti vrhunsko periferijo in (sorazmerno) velike pomnilnike z zmogljivim procesorskim RISC jedrom (ali jedri), kakršna so uporabljena tudi v pametnih telefonih.

    V prejšnjem delu članka smo spoznali, da lahko ATSAMV71 deluje kot pogon za masovno hrambo podatkov (MSD, angl. massive storage device), pri čemer smo za razhroščevanje uporabili terminal preko navideznih COM vrat, ki smo jih vzpostavili s pomočjo CDC gonilnika in programatorja na ATSAMV71 Xplained Ultra razvojni plošči. Lotili smo se tudi združevanja različnih USB funkcionalnosti, pa tudi CDC komunikacij in ugotovili, kako komuniciramo preko COM vmesnikov. Obenem smo uporabili tudi USART, ki je fizični vmesnik za zaporedno komunikacijo po RS232 protokolu.

    Tokrat se bomo najprej lotili migracije in poenotenja projektov iz Atmel razvojnih okolij v Microchip MPLAB X razvojno okolje, ki je skoraj samoumeven korak, s katerim bomo lahko programsko opremo za vse mikrokontrolerje pod Microchipovim okriljem razvijali v enotnem razvojnem okolju. Nato se lotimo še priprave ugnezdene programske kode za lastno HID napravo ter aplikacijske programske kode za njeno uporabo z osebnim računalnikom.

    MPLAB X IDE s Harmony 3 tudi za SAM in AVR
    Da Microchip počasi združuje razvojna okolja in prevajalnike za programska jezika C in C++ za svoje mikrokontrolerje, je bilo opaziti že v začetku poletja. Zato je danes v Microchip MPLAB X 5.xx iz Atmel Studia že mogoče migrirati vse projekte za Microchip AVR in Microchip SAM mikrokontrolerje. Obenem je pričakovati, da bodo pri Microchipu počasi zaustavili razvoj na Microsoft Visual Studiu zasnovanega Atmel Studia. Tako se bodo morali tudi ljubitelji bivših Atmelovih mikrokontrolerjev navaditi na javansko razvojno okolje, kar pa ni nujno slabo, saj je v njem na voljo več primerov uporabe in vzorčnih aplikacij, ki so funkcionalno enake za vse podprte mikrokontrolerje. Nenazadnje, je bil v začetku septembra že na voljo programerski vmesnik Microchip MPLAB X IDE v5.25, ki podpira vseobsegajočo programsko knjižnico Microchip MPLAB X Harmony v3.0.

    Microchip MPLAB Harmony 3 se, poleg dodane podpore za Microchip SAM in Microchip AVR mikrokontrolerje, od svoje druge različice razlikuje predvsem po modularnosti in po tem, da ni več na voljo v enotni namestitveni datoteki. V Microchip MPLAB X IDE (različica 5.x) ga namestimo z enotnim javanskim vtičnikom Microchip MPLAB Harmony 3 Configurator, ki vključuje Microchip MPLAB Harmony 3 Downloader. Z Microchip MPLAB Harmony 3 Downloaderjem nato s spleta prenesemo obvezne in opcijske module MPLAB Harmony 3.

    Prenos iz spleta je enostaven, saj v začetku izberemo datotečno mapo iz katere želimo prenesti module iz GitHuba, nato pa Microchip MPLAB Harmony 3 Downloader prenese seznam razpoložljivih modulov, med katerimi lahko odznačimo opcijske. Za prenos vseh modulov bomo na disku potrebovali okoli 12,5 GB pomnilnika, h kateremu ga moramo dodati vsaj še enkrat toliko za prevajalnike za programska jezika C/C++ in programske knjižnice za 8, 16 in 32-bitne mikrokontrolerje.

    Prenos modulov Microchip MPLAB Harmony 3 iz GutHuba je podoben prenosu z namenskim orodjem SVN, vendar Microchip MPLAB Harmony 3 Downloader vsebuje tudi namestitveni podprogram, ki vse prenesene module v zadnjem koraki poveže s programerski vmesnik Microchip MPLAB X IDE, v katerem nastavi tudi vse potrebne referenčne poti do knjižničnih datotek. Če se nameščanja Harmony 3 lotimo ročno, nam to le s težka uspelo.

    Povejmo še, da programer, vajen Microchip MPLAB X IDE, bistvenih razlik v različici 5.x glede na prejšnje različice (do 4.x) ne bo zaznal, saj je Atmelovo znanje dobro integrirano v novo okolje in lahko pri namestitvi Microchip MPLAB X IDE opazi predvsem namestitev dodatnega gonilnika za povezavo s programatorji za Atmelove mikrokontrolerje. Pri izbiri prevajalnika za programska jezika C/C++ pa lahko izbiramo med starim prevajalnikom (ARM) in skupnim prevajalnikom XC32 (denimo različica 2.3), ki podpira tudi ostale Microchipove mikrokontrolerje.

    Ročni prenos in arhiviranje Harmony 3

    Čeprav je v GitHubu vsa programska koda in njene najnovejše različice prosto dostopna vsem uporabnikom Interneta tudi v obliki instantnih arhivov zadnjih različic datotek, je pri resnem razvoju navadno vseeno bolje poseči po preizkušenih izdajah modulov Microchip MPLAB Harmony 3, ki jih najdemo v zavihki Releases vsakega od modulov. Kljub temu njihova ročna vključitev v razvojno okolja Microchip MPLAB X ni enostavna. Ko module ročno razširimo z ustreznim orodjem (npr. WinZIP), jih moramo še pravilno povezati, da jih bi prevajalnik za C/C++ znal pravilno uporabiti. Vendar bomo podrobna navodila, kako to narediti zaman iskali v spletu.

    Namesto tega raje na računalnik, ki ima dostop do spleta, namestimo Microchip MPLAB X IDE in v izbrano datotečno mapo prenesemo del ali celoten Microchip MPLAB Harmony 3. Če to mapo strnemo z orodjem za stiskanje datotek (npr. WinZIP), dobimo sorazmerno majhno stisnjeno datoteke s celotno namestitvijo Harmonija, ki jo lahko brez večjih težav prenesemo na druge računalnike brez stalnega dostopa do spleta.

    Na ta način si lahko ustvarimo tudi varnostno kopijo, ali referenčno razvojno okolje, ki je namenjeno razvoju ugnezdene programske opreme posameznega industrijskega izdelka, pri katerem je nadzor nad različicami uporabljenih programskih modulov še kako pomemben.

    Programski moduli Harmony 3
    Pri Microchipu so pripravili tudi skupne primere programske kode, ki so jih razdelili v naslednje namestitve: jedro (CORE), Microchip MPLAB Harmony 3 Configurator (MHC), podporni modul za preizkusne plošče (BSP), podporni modul za kriptografijo (CSP), podporni modul za Bluetooth (BT), kriptografski modul (CRYPTO), grafični modul za mikrokontrolerje, ki podpirajo kompleksno grafiko (GFX), primeri aplikacij za grafični modul (GFX_APPS), omrežni modul s podpro za TCP/IP (NET), modul USB s primeri uporabe (USB), avdio modul s primeri uporabe (AUDIO), modul za krmiljenje koračnih in drugih električnih motorjev (MOTOR_CONTROL), podporni modul za naprave za čipe za zaznavanje dotika (TOUCH), modul z operacijskim sistemom FreeRTOS (CMSIS-FreeRTOS), moduli za brezžično komunikacijo WiFi (wolfssl, wolfMQTT, wolfssh) s pomočjo dodatnega brezžičnega modula proizvajalca Wolf. Poseben modul Development packs (DEV-PACKS), ki vsebuje nastavitve za različne razvojne plošče in nam s tem bistveno olajša delo.

    Družina mikrokontrolerjev MPLAB® X BSP Dev.Packs Core CSP
    SAM A5D2 Ne Da Da Da Da
    SAM 9×61 Ne Da Da Da Da
    SAM S70/E70/V70/V71 Da Da Da Da Da
    SAM G551 Da Da Da Da Da
    SAM D5x/E5x Da Da Da Da Da
    SAM D20/D21 Da Da Da Da Da
    SAM C20/C21 Da Da Da Da Da
    SAM L21/L221 Da Da Da Da Da
    SAM L10/L111 Da Da Da Da Da
    PIC32 MZ DA Da Da Da Da Da
    PIC32 MK Da Da Da Da Da
    PIC32 MZ EF Da Da Da Da Da
    PIC32 MX Da Da Da Da Da

    Tabela 1: Z Microchip MPLAB Harmony 3 podprti mikrokontrolerji

    Lastni HID vmesnik
    Za napravo s poljubno funkcionalnostjo, ki ne zahteva hitrega prenosa podatkov, se navadno splača uporabiti HID (angl. human device interface) vmesnik, ki omogoča implementacijo različnih funkcij, s katerimi lahko iz PCja upravljamo različne funkcionalnosti in zajemamo izmerjene vrednosti. Taki napravi sta tudi vsem dobro znani računalniški miška in tipkovnica. Vsekakor pa nista edini, saj po tem principu delujejo tudi vremenske postaje, sistemi za upravljanje doma itn. Je pa res, da uporabljata računalniška miška in tipkovnica vnaprej določen nabor funkcij HID, ki za druge naprave ni predpisan, ampak moramo sami razviti posebne aplikacije.

    Naslednje vprašanje je, kako iz uporabniških aplikacij v različnih operacijskih sistemih dostopamo do lastnih mikrokontrolerskih funkcionalnosti preko standardnega gonilnika HID. Pri nekdanjem Atmelu so razvili lastno programsko knjižnico tipa DLL v programskem jeziku C, ki jo moramo vključiti svoj program, da lahko dostopamo do lastnih HID funkcij, vendar v Internetu ne najdemo njene izvorne kode. Pri Microchipu so se odločili za nekoliko drugačno vzorčno implementacijo, vendar pa je celotna programska koda dostopna programerjem. Zato je kot dobrodošlo, da Microchip MPLAB Harmony 3 prinaša enotne primere izvorne kode za izdelavo ugnezdene programske opreme in podporne aplikacijske programske opreme za vse mikrokontrolerje. Nekoliko nerodno je le, da zaenkrat še niso izdelani za vse glavne razvojne plošče z mikrokontrolerji SAM in AVR. Čeprav imamo lahko zato pri prilagoditvah primerov za svoje razvojne plošče precej dodatnega dela, nam Microchip MPLAB Harmony 3 Configurator z vgrajenim nastavitvenim uporabniškim vmesnikom in programskim generatorjem zelo poenostavi delo.

    Res, da lahko ustrezne projekte uvozimo tudi iz Atmel Studija, vendar pri tem ostane njihova programska logika nespremenjena. Zato so funkcionalno enaki kot, če bi jih prevedli v Atmel Studiu, s čemer s programerskega stališča nismo dosti pridobili. Zato pa so toliko zanimivejši standardni Microchipovi primeri z dodano podporo za SAM in AVR mikrokontrolerje.

    Sprememba nastavitev
    Primer hid_basic demonstrira uporabo SAM E70 mikrokontrolerja na razvojni plošči Atmel SAM E70 Xplained evaluation kit kot enostavnega HID vmesnika, žal pa zmogljivejša razvojna plošča Atmel SAM V71 Xplained Ultra kit z SAM V71Q21B mikrokontrolerjem v času nastajanja tega članka še ni bila podprta. Zato moramo najprej mikrokontroler SAM E70Q21B zamenjati za SAM V71Q21B. Iz glavnega menija Microchip MPLAB X IDE, kjer lahko izbiramo med možnim podrazličicami razvojnih plošč s podobnimi mikrokontrolerji, izberemo opcijo Customize…, nakar v pojavnem oknu izberemo SAM V71Q21B in shranimo novo nastavitev. Za nadaljnje nastavitve uporabimo Microchip MPLAB Harmony 3 Configurator.

    Pri predelavi hid_basic za omenjeno razvojno ploščo moramo upoštevati predvsem drugačno razporeditev priključkov, obenem pa z Microchip MPLAB Harmony 3 Configuratorjem dodati še prednastvitve za omenjeno razvojno ploščo. Spremeniti moramo tudi nastavitve taktov, tako da ustrezajo novemu mikrokontrolerju, obenem pa nam ni potrebno spreminjati programske kode. Pri tem si lahko pomagamo z nastavitvami v datoteki samv71_xplained_ultra.h, ki je del primera USB DEVICEGENERIC_EXAMPLE za Atmel Studio. Najdemo v jo v imeniku (../src/ASF/sam/boards/ samv71_xplained_ultra) v Solution Explorerju.

    Tu lahko vidimo, da Atmel SAM V71 Xplained Ultra kit kot osnovni vir taktnih impulzov uporablja glavni 12 MHz kristalni oscilator z zagonskim časom 15,625 ms, za natančno merjenje časa in enostavne funkcionalnosti pa ima na voljo še sekundarni kristalni oscilator z 32,768 kHz. Pri tem ne potrebuje notranjega RC oscilatorja, ki je uporabljen v osnovnem primeru.

    Z nastavitvami vmesnika USB imamo sorazmerno mamo dela. Za hitre komunikacije po standardu USB HS (high speed), uporabljamo 40x frekvenčni množilnik, ki iz takta glavnega kristalnega oscilatorja (12 MHz= izpelje najvišji, 480 MHz, takt za USB HS. Ob tem povejmo, da jedro mikrokontrolerja deluje pri največ 300 MHz.
    Zdaj se lotimo še prednastavitve priključkov mikrokontrolerskega čipa, ki ga lahko izvedemo z orodje Pin Configuration. K sreči sta priključka za podatkovno povezavo USB vmesnika z računalnikom (HSDP za signal D+ in HSDM za signal D-) fiksna, zato se nam z njima v programski kodi ni potrebno ukvarjati. Največ dela pa imamo z vhodom USB_VBUS_SENSE, ki zaznava prisotnost napetosti na vodilu USB. Tega moramo prestaviti iz priključka PB8 na priključek PC9, in vključiti upor proti napajanju. Slednja zagotavlja pravilno delovanje tudi, ko je USB kabel odklopljen.

    Kot izhod VBUS_HOST_EN moramo uporabiti še priključek PC16. VBUS_HOST_EN omogoča spremembo načina delovanja vmesnik USB, tako da postane SAM V71 gostitelj naprav USB po protokolu USB OTG. Poudarimo, da je pri SAM E70 je PC16 vhodni priključek, pri SAM V71 pa izhodni.

    V naslednjem koraku nastavimo delovanje dveh testnih mikrostikal, ki sta pri Atmel SAM V71 Xplained Ultra kit na drugih priključkih kot pri Atmel SAM E70 Xplained evaluation kit. SWITCH0 je na priključku PA9, SWITCH1 pa na PB12. Pomembno je, da za obe izberemo nastavitev funkcije SWITCH_AL, ki programskemu generatorju pove, da mora programsko kodo pripraviti tako, da sta stikali aktivni v nizkem stanju. Dodatno za obe stikali nastavimo še upor proti napajanju ter odstranjevanje odskakovanje kontaktov ob pritisku na mikrostikalo (debounce).

    Zadnji korak je pregled nastavitev LEDic LED0 in LED1, ki ostaneta enako nastavljene kot pri primeru za Atmel SAM E70 Xplained evaluation kit. Nastavitve lahko zdaj shranimo, če iz menija MHC izberemo opcijo Save State ali Save State As. Shranjevanje v novo datoteka je smiselno le, če bomo še kdaj želi uporabiti stare nastavitve.

    Od izhodiščne programske kode…
    Microchip MPLAB Harmony 3 Configurator med svojim delovanjem pripravi predloge za spremembe obstoječe programske kode (primer hid_basic) v vseh programskih datotekah in njihovih glavah (headers). Vendar sprememb ne izvede kar avtomatično, ampak jih predlaga, o njihovi implementacijo a se moramo odločiti sami. Pri tem moramo upoštevati, da Microchip MPLAB Harmony 3 Configurator včasih ne pozna vsega konteksta in moramo določene programske strukture ohraniti. Denimo, če zamenjamo mikrokontroler za podporo delovanju USB predlaga osnovno rešitev, v katero bi morali ponovno vnesti osnovne podatkovne funkcije za obravnavo sporočil USB. Vendar nam teh predlogov popravkov ni treba sprejeti. Po drugi strani, moramo sprejeti predloge popravkov, ki se nanašajo na spremembe vlog in načina delovanja priključkov mikrokontrolerskega čipa. Vendar moramo pri tem ohraniti imena, ki so že uporabljena v programu. K sreči lahko ta, denimo, USB_VBUS_SENSE, prestavimo iz enega na drug priključek kar v Microchip MPLAB Harmony 3 Configuratorju. Zato moramo prejeti predvsem spremembe prednastavljenih vrednosti krmilnih registrov vhodno-izhodnih priključkov. Slednje zajema nastavitev smeri delovanja (vhod/izhod), nastavitev upora pri napajalni napetosti ali proti masi, nastavitev preprečevanja odskakovanje kontaktov, nastavitev prekinitev ob prehodu stanja vhoda iz nizkega v visoko stanje ali obratno, nastavitev začetni vrednosti izhodnih priključkov, …
    Ko uredimo vse omenjeno, lahko poskusimo s prevajanjem programske kode, vendar bomo ob prvem poskusu lahko naleteli tudi na napake predvsem v primerih, ko ima naša razvojna plošča drugačne resurse od tiste, ki je uporabljena v primeru. Denimo, če ima naša razvojna plošča dve mikrostikali, v primeru pa so uporabljena štiri, bomo morali programsko kodo spremeniti taka, da bo delovala kljub temu, da je mikrostikal manj. V tem primeru bomo, denimo, nekatere akcije avtomatizirali, da bo potrebnega manj uporabniškega posredovanja, ali pa bomo uporabili kombinacijo dveh mikrostikal, ali vgradili zaznavo dvoklika. Upoštevati moramo tudi morebitni spremenjeno aktivno stanje mikrostikal. Če je, denimo, na novi razvojni plošči aktivno stanje nizko, prej pa je bilo visoko, moramo to pravilno upoštevati tudi v programski kodi. V nasprotnem morda predelan primer ne bo (pravilno) deloval. Še posebno pozornost velja nameniti tipkam, s katerimi lahko vplivamo na prenos podatkov, denimo prekinemo povezavo USB. Take funkcije lahko izpustimo, v nasprotnem pa moramo skrbno preveriti, da funkcija pravilno zajema aktivno stanje tipke.

    Podobno je tudi z LEDicami, pri katerih moramo paziti predvsem, da ustrezne priključke nastavimo kot izhodne ter izberemo smiselne začetne vrednosti, ki naj bi ustrezale vrednostim programske kode za originalno razvojno ploščo, saj bomo le tako lahko preko njih pravilno spremljali delovanje programske kode. Denimo, če se LED prižge ob vzpostavitvi USB povezave, naj bi bilo tako tudi na novi razvojni plošči, saj nas obrnjen smisel delovanja kaj hitro zmede in morda zato ob morebitnih težavah pri nadaljnjem razvoju programske kode ne bomo analizirali pravega dela programske kode.
    AKo smo že pri USB, omenimo še, da ima vrednost USB_VBUS_SENSE, s katero program lahko preveri, ali je razvojna plošča povezana z USB vtičnico gostiteljske naprave (npr. osebnega računalnika) tudi velik pomen pri zaščiti USB vmesnikov gostiteljske naprave in z nji povezanih naprav. Če računalnik ugasnemo, na USB vodilu ne sme ostati ali se pojaviti napetost na nobenem od priključkov (niti na podatkovnih linijah, kot sta D+ in D-). To funkcionalnost lahko zanesljivo zagotovimo le z vhodnim priključkom, iz katerega beremo vrednost USB_VBUS_SENSE. Zato je zelo pomembno tudi, da pravilno zajemamo vrednost USB_VBUS_SENSE, ki mora biti 1 le, ko je USB povezava vzpostavljena in sta obe povezani napravi pripravljeni za delovanje.

    … do želenih funkcionalnosti
    Microchipov primer hid_basic je za programerja veliko enostavnejši za predelavo od Atmelovega. V njem najdemo skeletno programsko kodo, v katero z lahkoto dodamo lastne programske funkcije. Skeletno programska koda omogoča branje vrednosti enega od mikrostikal ter prižiganje in ugašanje LED na razvojni plošči. V datotečni mapi <namestitveni imenik Microchip MPLAB Harmony 3>/usbappsdevicehid_basicbin najdemo tudi že prevedeno izvedljivo aplikacijo, GenericHIDSimpleDemo.EXE, za PC z operacijskim sistemom Windows XP ali novejšim, s katero lahko preizkusimo omenjene funkcionalnosti, na da bi morali programirati tudi aplikacijo za PC.

    Aplikacija se pritisku na tipko Connect poveže z USB napravo (VID=0x4D8 in PID=0x3F), nakar omogoča postavljanje diod (tipka Toggle LED(s)) in branje stanja mikrostikal (tipka Get Pushbutton State). Čeprav je njeno delovanje sorazmerno enostavno, mora za dostop do naše USB HID naprave uporabljati sistemske storitve. Vendar bomo te opisali v naslednjem nadaljevanju. Za »posladek«, si lahko ogledate izseka programske kode Program 1 in Program 2, ki prikazujeta glavni program ugnezdene programske kode USB HID naprave in primer implementacije enostavne funkcije (funkcija 0), ki PC vrne različico ugnezdene programske opreme.

    Prihodnjič
    Tokrat smo spoznali pomen Microchip MPLAB Harmony 3 Configurator ter izdelali lastno HID napravo, zmanjkalo pa nam je prostora, da bi podrobneje analizirali delovanje USB COM vmesnikov po protokolu CDC. Opisali bomo tudi pisanje aplikacij za PC z različnimi programskimi razvojnimi okolji in programskimi jeziki (Visual Basic, C/C++,… ), kot je Microsoft Visual Studio. Izdelali bomo tudi HID vmesnik za neposredni dostop do funkcionalnosti SAM V71Q21B mikrokontrolerja.

     


    Kako do vtičnika Microchip MPLAB Harmony 3 Configurator?
    Zadnjo različico vtičnika Microchip MPLAB Harmony 3 Configurator lahko v programerski vmesnik Microchip MPLAB X IDE v iz GitHuba (www.github.com/Microchi-MPLAB-Harmony/mhc/releases) naložimo z orodjem upravljanje vtičnikov Plugins Download, ki ga najdemo v meniju Tools, ali pa ga v obliki javanske arhivske datoteke com-microchip-mplab-modules-mh3.nbm prenesemo iz spleta v izbrano datotečno mapo v svojem računalniku, od koder vtičnik namestimo v Microchip MPLAB X IDE. Po namestitvi sta v podmeniju Embedded menija Tools na voljo Microchip MPLAB Harmony 3 Configurator in Microchip MPLAB Harmony 3 Downloader.

     

    Kako deluje MPLAB Harmony 3 Configurator?
    Čeprav osnovni koncept ostaja isti, tretja različica prinaša nove funkcionalnosti, stare pa so preglednejše in stabilnejše. Osrednjo vlogo ima še vedno urejevalnik programskih modulov in njihovih nastavitev, le da je zdaj v ospredju grafična predstavitev modulov in podmodulov, ki sestavljajo vgrajeno programsko opremo. Nekatere nastavitve, ko so nastavitve delovnih taktov v mikrokontrolerju lahko urejamo tabelarično ali grafično. V meniju MHC, ki se pojavi takoj, ko naložimo Microchip MPLAB Harmony 3 Configurator, najdemo podmeni Tools, v katerem so zbrana orodja: Clock Configuration, DMA Configuration, MPU Configuration, NVIC Configuration in Pin Configuration, namenjena lažjemu upravljanju kompleksnih funkcionalnosti. Začetniku pride še posebej prav Clock Configuration, saj je nastavljanje vrednosti v drevesnem meniju včasih preveč in so nepregledno urejene, še posebej, če se nekatere možnosti izključujejo. V grafičnem urejevalniku so hkrati prikazana tudi logična zaporedja generatorjev taktov ter taktnih delilnikov in množilnikov. Urejevalnik hkrati vrednosti taktov, zaradi katerih mikrokontroler zanesljivo ne bo pravilno deloval, označi z rdečo barvo.

    Zelo uporaben je tudi urejevalnik priključkov procesorskega čipa, s ki je v tretji različici MPLAB Harmony 3 Configuratorja že povezan z generatorjem programske kode. Slednji samodejno zgradi programske sklope definicij za neposredno upravljanje s priključki, ki jih v urejevalniku označimo kot splošne vhodno-izhodne priključke (GPIO). Prav tako zna pripraviti namestitveno programsko kodo za posebne funkcionalnosti priključkov, denimo proženje prekinitev ob prehodi iz visokega v nizko stanje ali obratno, odvisno od nastavitev. Priključke sicer še vedno urejamo tabelarično, lahko pa si pomagamo tudi s sliko izbranega mikrokontrolerskega čipa, na kateri lahko urejamo razpoložljive priključke.

    program 1 
    int main (){
    SYS_Initialize();
    while(true)SYS_Tasks();
    return EXIT_FAILURE;
    }

     

    program 2 
    switch(appData.receiveDataBuffer[0]){
    case 0x00:
    appData.transmitDataBuffer[0] = 0x00;
    appData.transmitDataBuffer[1] = 0x01;
    appData.transmitDataBuffer[2] = 0x02;
    …
    appData.hidDataTransmitted = false;
    USB_DEVICE_HID_ReportSend(USB_DEVICE_HID_
    INDEX_0,&appData.txTransferHandle,appData.
    transmitDataBuffer, 64 ); 
    // return data to host
    appData.hidDataReceived = false;
    USB_DEVICE_HID_ReportReceive (USB_DEVICE_HID_
    INDEX_0,&appData.rxTransferHandle, appData.
    receiveDataBuffer, 64); 
    // request new data from host
    break; 
    …
    }