Jste zde

Processor Expert - snadné nastavení MCU a periferií jen klikáním myší

Začít psát program na čisté obrazovce a navíc pro MCU, které se používá poprvé, není nic jednoduchého. Pokud nechcete zuřivě listovat manuálem a hledat, co který registr dělá a jak například nastavit A/D převodník, PWM výstup či sériové rozhraní, je možné v případě MCU Freescale a vývojového prostředí CodeWarrior IDE použít velmi dobrou integrovanou utilitu Processor Expert. Zde se vyberou potřebné vlastnosti a parametry myší a utilita již sama vše přeloží do zdrojového C kódu, kam již stačí jen doplnit potřebný algoritmus. Následující článek je koncipovaný jako základní kuchařka, jak s Processor Expertem pracovat.

Nejen pro začínajícího programátora, ale i pro zkušenější kolegy je "noční můrou" čistá obrazovka, na které by měl začít vznikat program pro některé z MCU. Uvodní inicializace mikrokontroléru, jeho jádra a periferií, obvykle vyžaduje dobrou znalost architektury daného integrovaného obvodu a hlavně jeho registrů. To však často znamená, pokud začínáte s novým MCU, nastudovat často i několika set stránkový pdf manuál. Takový postup však v dnešní době rychlého vývoje produktů a častého přechodu z jednoho typu mikrokontroléru na jiný není úplně to pravé. Trendem je vzít určité MCU s požadovanými vlastnostmi a hned realizovat řídící algoritmus. Pro zrychlené práce je tak možné buď vzít nějaký zdrojový příklad výrobce MCU a počít ho editovat, resp. vyházet, co není zrovna potřeba a využít hlavně úvodní inicializaci, nebo použít některou z chytrých utilit, která se občas vyskytuje ve vývojových PC softwarech, některých velkých firem, která umí vytvořit kompletní inicializaci či dokonce ovládací funkce periferií v jazyce C dle uživatelem myší naklikaných požadavků v grafickém menu. Takovou šikovnou utilitou je Processor Expert, který je součástí vývojového softwaru CodeWarrior společnosti Freescale pro jejich 8bitová a 32bitová MCU.

Pokud jste již někdy předtím programovali v jazyce VHDL obvody FPGA společnosti Xillinx prostřednictvím jejich freewarového vývojového prostředí, pravděpodobně jste i vyžívali schopnosti nastavení a definování vstupů a výstupů obvodu pomocí grafického rozhraní a klikáním myší. Něco podobného umí a provádí i Processor Expert, který nejen že dovoluje vcelku snadno nastavit systémové registry jádra a jednotlivých periferií, vstupů i výstupů pomocí volby vlastností z nabídek a menu a následně z toho vygenerovat kód v jazyku C, ale spolu s tím i vygenerovat konkrétní funkce v C, jejichž voláním například z hlavní programové smyčky lze nastavit nebo přečíst hodnoty výstupu, resp. vstupu, zahájit převod A/D převodníku, spustit časování, vyslat nebo přijmout bajt ze sériového rozhraní apod. Ve výsledku tak Processor Expert umožňuje se soustředit hlavně na realizaci řídící a zpracující části programu. Práce s ním, po chvilce hraní a zjištění, kde se co vyskytuje, jak se co vyvolá a na jaké symboly je nutné klikat, je již pro technika trošku obecně zběhlého v architekturách mikrokontrolérů a názvoslový opravdu maličkost. Výsledný zajímavě, ale přehledně strukturovaný vygenerovaný C kód i s podrobným textovým popisem, co je co a jak to dále použít, je hned bez problému spustitelný, přesněji řečeno vhodný pro překlad, nahrání a spuštění v MCU, pro který je určen. I takový program přímo z Processor Expertu bez doplnění o další kód může už něco dělat, například s pomocí periferie "Output Compare" generovat periodický obdelníkový signál na některém z výstupních pinů. Pokud je na něj připojena LED dioda může blikat nebo piezosirénka houkat. Perioda signálu, přiřazení pinu a jeho nastavení jako výstup se snadno provede pomocí jen několika správně cílených kliků myši právě v Proccesor Expertu. V tomto případě pak v hlavní smyčce programu (main) je tzv. nekonečná smyčka "for(;;){}", která je přímo standardně vytvořena při generování C kódu. Takže pokud přední uživatel nevloží vlastní programovou smyčku, sama zajišťuje možnost okamžitého překladu, spuštění a kontinuálního běhu programu.

Základní návod práce s Processor Expertem - krok za krokem

Předtím, než se ponoříme do postupu, jak pomocí utility Processor Expert z úplně čistého, nově založeného projektu vytvořit základní program provádějící blikání LED a rozsvícení LED po stisku tlačítka, je samozřejmě nutné mít v PC nainstalované vývojové prostředí (PC software) CodeWarrior, stačí freeware verze, která má jen omezenou velikost kódu. Dobré je mít i nějaký vývojový kit (desku). Pro základní hraní však stačí i jen samotné vývojové prostředí, které obsahuje simulátor. Výsledek však není tak názorný a zajímavý. Zde konkrétně bude dále vše ukázáno va vývojovém prostředí CodeWarrior for Microcontrollers v6.0 spolupracující s vývojovým kitem Freescale DEMOQE128 vybaveného 8bitovým 64vývodovým MCU nízkopříkonové řady Flexis MC9S08QE128. Pro jiné MCU se pak "obrazovky" budou samozřejmě trošku lišit, protože nabídky budou obsahovat jiné parametry a možnosti ke zvolení, v závislosti na tom, co který mikrokontolér obsahuje. Ve starších nebo novějších verzích softwaru se možná také mohou lišit některé nabídky a volby.

Začněme ale úplně od začátku:

 

1. Otevřít vývojové prostředí CodeWarrior IDE a zvolit vytvoření nového projektu "Create New Project".

2. Zvolit příslušné MCU a zvolit kit / připojení (Connection) - v mém případě 8bit. MCU HC9S08QE128 a P&E Multilink/Cyclone Pro (USB připojení kitu DEMOQE128).

3. Zvolit název projektu (Project Name) a adresář (Location), kam se budou všechny soubory ukládat.

4. Žádné soubory není nutné přikládat

5. V nabídce "Rapid Application Development Options" je nutné zatrhnout položku "Processor Expert".

6. Další položky je možné ponechát defaultní -> Dokončit.

7. Otevřou se okna nového projektu a nastartuje i utilita Processor Expert. Po úvodním logu, je nutné zvolit konkrétní specifikaci MCU (typ pouzdra). V mém případě jsem volil MC9S08QE128CLH 64-pins LQFP. V dalším okně se volí podporovaný formát. Pro hraní je vhodné ponechat zatrhnutou volbu Debug i Release.

 

Na start Processor Expertu upozorní jeho logo (vlevo) a hned poté chce vybrat konkrétní typ pouzdra již dříve vybraného typu MCU Freescale (pro zvětšení klikněte na obrázek)

8. Pak již "naskočí" nastavovací okna Processor Expertu. Vlevém sloupci navigační strom ukazující vložené položky, které se později budou překládat, uprostřed okno s nastavováním hlavních parametrů MCU jádra (Bean Inspector Cpu) a vpravo obrázku zvoleného pouzdra (Target CPU) a výběr použitelných periferií a bloků (Bean Selector).

Všechny důležité parametry CPU jádra mikrokontroléru se nastavují v jednom okně (pro zvětšení klikněte na obrázek)

9. V okně "Bean Inspector Cpu" je nutné v položce "Clock settings - External Clock" povolit externí taktování, pokud je použito, je nutné v nižších položkách nastavit, zda jde pouze o krystal nebo generátor hodin a zadat frekvenci. V mém případě 4.0 MHz a taktování externím krystalem. Případně lze ještě v položce "Enable speed modes - High speed mode" změnit volbu "Internal Clock" na "External Clock", pak ale naskočí u položky frekvence vykřičník, který indikuje špatně zvolenou hodnotu. Zde je nutné upravit hodnotu dle frekvence taktování, tedy u mě 4.0 MHz.

10. Pak již lze volit v okně "Bean Selector", například ze záložky "On-Chip Prph", požadované periferie a bloky, které chceme použít v programu. Já pro ukázku například jako první vybral A/D převodník. Vlevém okně naskočí v položce "Beans" podpoložka AD1:ADC a je vhodné odsouhlasit hlášení "Confirm". Uprostřed obrazovky místo okna pro CPU naskočí okno "Bean Inspector AD1:ADC", kde je možné nastavit vlastnosti, které jsou od A/D převodníku požadovány (vstupní pin "A/D channel", rozlišení "A/D resolution" a hlavně převodní čas "Conversion time").

Mezi nejsložitější periferie pro konfiguraci patří A/D převodník. S Processor Expertem se to však stává hračkou (pro zvětšní klikněte na obrázek)

11. Zároveň lze například z nabídky Processor Expert -> View -> Peripheral Inicialization" otevřít okno, které ukazuje, jak se při změně některé položky v Bean Inspectoru mění nastavení registrů.

12. Dále lze například vložit "Bean" pro výstup napojený na blok časování Output Compare (položka TimerOut v Bean Selectoru vytvoří řádek TO1:TimerOut) a v něm nastavit požadovanou délku pulsu (Pulse Width) například na 524 ms pro vytvoření blikající LED, "Bean" pro vstup pro snímání stisku tlačítka (u mě položka I/O port: PTA -> BitIO v Bean Selectoru vytvoří řádek Bit1:BitIO) a "Bean" pro výstup na LED pro indikaci stisku tlačítka (u mě položka I/O port: PTC -> BitIO v Bean Selectoru vytvoří řádek Bit2:BitIO). U Bit1:BitIO je nutné nastavit funkci jako vstup a pull-up rezistor, zatímco Bit2:BitIO nastavit jako výstupní. Zvolené porty PTA a PTC odpovídají kitu DEMOQE128. U A/D převodníku a TO1:TimerOut je možné zapnout / vypnout řízení přerušení, která pak při překladu vygeneruje funkce, do kterých se zapíše kód, který se má vykonat, když přerušení od dané periferie nastane.

 

Nastavení v Processor Expertu se přeloží do jazyka C stiskem volby položky "Processor Expert -> Generate Code "nazev projektu.mcp" (pro zvětšení klikněte na obrázek)

13. Pokud máme vše požadované navolené a nastavené (kdykoliv lze však se do Processor Expertu vrátit a cokoliv doplnit něbo změnit) převede se pomocí volby záložky "Processor Expert -> Generate Code "nazev projektu.mcp" vše navolené přeloží do zdrojáků v jazyku C". Pro zobrazení stačí jen v levém okně vybrat záložku "Files" a rozbalit jednotlivé řádky. Hlavně pro programování jsou zajímavé řádky:

  • "Generated Code" - obsahuje vygenerované kódy v Processor Expertu navolených a nastavených periferií (Cpu.c, AD1.c, TO1.c, Bit1.c, Bit2.c)

     
  • "User Modules" - hlavně obsahuje hlavní programovou smyčku v souboru .c nesoucí název projektu (v mém případě pc_expert.c) a soubor Events.c sloužící k řízení povolených přerušení od jednotlivých periferií

     
  • "Doc" - hlavně textový soubor .txt opět nesoucí název projektu (u mě pc_expert.txt), který dobře popisuje, co se vlastně konkrétně vygenerovalo a jak použít (volat funkce) zdrojáků v řádku "Generated Code"

 

Pokud si otevřeme soubor s hlavní programovou smyčkou (v mém případě pc_expert.c), je zde krásně popsáno i pro začátečníky, kam co vložit, kam inicializaci proměnných, kam kód, aby nebyla porušena funkce kódu Processor Expertu. Myslím si, že velmi jednoduché. Na obrázku je pak pár řádků mnou napsaného kódu, který rozsvěcí a zhasíná LED diodu na pinu PTC1. Napsané příkazy jsou pouze volání funkcí obsažených v souborech Bit1.c a Bit2.c vygenerované Processor Expertem a popsané právě v textovém souboru (u mě pc_expert.txt). Takže i vytvářet vlastní program je super jednoduché.

Následné uložení, překlad programu a jeho nahrání do simulátoru či fyzického hardwarového kitu je běžné jako při vytváření programu bez Processor Expertu. Vše by mělo spolehlivě fungovat. Tedy alespoň ty části z Processor Expertu. Jinak lze se do něj kdykoliv vrátit volbou záložky "Processor Expert" nad levým oknem a body 12. a 13. opakovat.

 

 

Označené místo pro vložení kódu v main smyčce (nahoře) a ukázka vygenerovaného zdrojáku Processor Expertem pro A/D převodník (dole)

Programování je velmi snadné - jen pár doplněných řádků a volání funkcí vytvořené Processor Experem a máme tu snímání stisku tlačítka a rozsvěcení LED diody (pro zvětšení klikněte na obrázek)

Závěr

Utilita Processor Expert ve vývojovém PC softwaru CodeWarrior IDE je velmi vhodná a zajímavá věc nejen pro aktivní seznámení s registry konkrétního MCU, ale i pro jeho rychlé a snadné naprogramování. Samozřejmě se s ním nikdy nedosáhne tak efektivního kódu, jako u plně "ručně psaného" programu od již zkušeného uživatele, který využívá různé fígle, ale to není případ začátečníka a navíc ne vždy je program natolik složitý, že využívá MCU na 100% a tak velká optimalizace není zase tak potřebná. Navíc vygenerovaný kód z Expertu je sám o sobě dost dobrý a neobsahuje žádné výrazné zbytečnosti, pokud to nebylo navoleno. Myslím si, že pro mnoho uživatelů je Processor Expert velmi zajímavá věc, která dokáže velmi ušetřit čas i nervy těm méně trpělivým. Pro případ Freescalem nově vyvinutých a prodávaných MCU, které nelze v nabídce Processor Expertu najít, je možné jej updatovat.

Antonín Vojáček

DOWNLOAD & Odkazy

Hodnocení článku: