Jste zde

KWIKSTIK – demo program stopky

Na stránkách Freescale Semiconductor lze si stáhnout nový demo prográmek připravený pro MCU Kinetis a desku KwikStik. Nejde sice o nic výjimečného, prostě o obyčejné stopky, ale je tentokrát vytvořen prakticky skoro kompletně pomocí komponenty ProcessorExpert. Ta umožňuje vytvářet funkce a podprogramy pro ovládání a využívání dostupných periferií MCU snadněji prostřednictvím klikání myší a výběru možností z položek a menu.

Již už v dřívějších článcích jsme si popsali základní demonstrační, výukový a vývojový kit společnosti Freescale Semiconductor s označením KWIKSTIK (např. viz článek Vývojová deska Freescale KWIKSTIK pro MCU Kinetis K40). Jde tedy o kompaktní destičku s MCU KINETIS K40 doplněný mnoha různými periferiemi typu LCD displej, dotyková kapacitní tlačítka, programovací i komunikační USB konektor, piezobzučák apod. K tomuto kitu pak výrobce pro začátečníky na svých stránkách poskytuje několik zajímavých demo-prográmků. Již ve zmíněném článku jsme si nastínili demo program využívající real-time operační systém MQX a další postupně přibývají. A některé jsou i klasické, které nevyužívají žádný operační systém, ale prostě jsou napsány jako přímá aplikace pro daný mikrokontrolér, zde tedy KINETIS K40. Takovou docela jednoduchou, snadno pochopitelnou a na grafickém LCD docela efektní aplikací jsou obyčejné stopky. I když z programátorského hlediska nejsou až tak triviální. Využívají totiž jednoduché ovládací menu skládající se z položek „START“, „STOP“ a „RESET“, které je ovládané pomocí zmíněných kapacitních tlačítek. Další zajímavou věcí na tomto příkladu je i to, že je praktická celá vytvořená v komponentě „ProcessorExpert“, která je součástí vývojového softwaru CodeWarrior.

   

Program StopWatch mimo úvodního pohyblivého textu úvodu poskytuje i jednoduché ovládací menu.

Pokud jste ještě s komponentou „ProcessorExpert“ nepracovali, tak s tímto demo programem se s ní můžete dost snadno seznámit. Mě osobně jako programátora PLC tato komponenta právě trošku připomíná programování automatů. Totiž konfigurování vlastností a komponent MCU, tedy asi ta nejobtížnější část každého programování, se zde provádí pomocí klikání a výběru nastavení jednotlivých potřebných komponent z nabídek. Samozřejmě, že musíte mít dost přesně ujasněné, co vlastně chcete a co MCU poskytuje, ale již nemusíte mít přesně v hlavě jednotlivé registry a konkrétní možná nastavení, protože prostě si můžete vybrat a nastavit. Následně pak „ProcessorExpert“ vygeneruje nejen zdrojové „podprogramy“ pro jednotlivé komponenty a periferie, které se mohou volat z hlavního programu, ale i samotnou kostru hlavního programu a úloh, do kterých pak již přidáváte jen samotný „funkční“ kód, který definuje, co bude konkrétně program provádět. ProcessorExpert tak vlastně poskytuje něco podobného jako samotný RTOS MQX z toho pohledu, že ve svém programovém kódu voláte a předáváte parametry již hotovým funkcím, které je zpracují. Například prostě do funkce zobrazení na LCD displeji pošlete jen informaci o bodech, které se mají rozsvítit ale samotné řízení displeje již provede samotná funkce.

ProcessorExpert umožňuje nastavení řídicích registrů MCU a vytvoření ovládacích funkcí a podprogramů pomocí výběru z položek. Výsledkem je pak vygenerovaný zdrojový kód v jazyku C realizující jednotlivé funkce ovládání potřebných periférií a funkcí MCU, které je možné volat přímo z hlavní programové smyčky, jejíž kostru též ProcessorExpert vytvoří.

Program STOPWATCH a ProcessorExpert

Program lze ve formě ZIP balíčku stáhnout přímo z odkazu http://cache.freescale.com/files/32bit/software/pe_demo_stopwatch_kwikstik.zip. Po otevření a načtení programu „STOP WATCH“ do CodeWarrioru se Vám klasicky na levé straně obrazovky v okně objeví stromová struktura projektu. Na rozdíl od položky zdrojových kódů je však zde z pohledu programování důležitější položka „ProcessorExpert.pe“. Pokud na ni poklikáte, otevře se Vám prostředí této komponenty a v pravém okně matice periferií a komponent, které MCU Kinetis K40 a KWIKSTIK poskytuje. Zde uvidíte některé „dlaždice“ zvýrazněné. To jsou ty vlastnosti, které jsou v tomto programu již použity. Jinak další lze kdykoliv přidat tak, že na nezvýrazněnou (nevyužitou) komponentu (dlaždici) kliknete pravou packou myši a zvolíte „Add…“ a hned se Vám přidá do levého okna do záložky „Embedded Components“, kde se již teď nacházejí komponenty využité v programu:

  • SegLCD1 (SegLCD_LDD) - ovladač LCD
  • Counter (TimerUnit_LDD) - časovač stopek
  • Buzzer (TimerUnit_LDD) - periodické přerušení pro generování signálu pro „bzučák“
  • TSI1 (TSI_LDD) - ovladače dotykových tlačítek
  • Debounce (TimerUnit_LDD) - periodické přerušení využívané jako časovač pro omezení zákmitů stisku tlačítek

 

 

Příklad nastavovacího okna ProcessorExpertu v případě ovladače "Buzzer" piezobzučáku (obr. vlevo - pro zvětšení klikněte) a hlavního časovače stopek "Counter" (obr. vpravo - pro zvětšení klikněte).

O záložku výše („Cpus“) je pak nastaven konkrétní procesor, pro který program píšete a jehož periferie využíváte. Pokud na tyto jednotlivé položky kliknete, otevře se Vám uprostřed okno popisující nastavení dané komponenty. Ty pak využívají (volají) jednotlivé podfunkce, které jsou seřazené v záložce „Generated_Code“.

Mimo výše uvedených komponent však ProcessorExpert generuje i kostry hlavních programových smyček umístěné do záložky „Sources“. Tím úplně hlavním zdrojákem, hlavní smyčka „Main()“, je pak soubor „ProcessorExpert.c“, do jehož kostry se pak vkládá (programuje) vlastní hlavní běh programu volající výše uvedené komponenty.

Soubory „Events“ slouží pro vložení kódu, který se volá pro řízení přerušení (např. stisk tlačítka, přetečení časovače apod.), a nakonec soubory „KwikStik_SegLCD“ pak realizují konkrétní obsluhu LCD displeje desky KWIKSTIK, konkrétně funkce realizující ubíhající text, kódovou tabulku jednotlivých znaků pro zobrazování apod. Prakticky tak tvoří specifickou LCD API knihovnu KwikStiku pro řízení LCD segmentů a zobrazení textu.

 

ProcessorExpert pak vygeneruje i hlavní programovou smyčku, kam je možné psát vlastní programový kód volající již plně vygenerované funkce ovladačů periferií (obr. vlevo - pro zvětšení klikněte). Dále je možné mu zadat i vygenerování tzv. Event kódu, který slouží pro řízení přerušení, např. stisk tlačítka, přetečení časovače apod.(viz obr. vpravo - pro zvětšení klikněte).

Nakonec ProcessorExpert automaticky generuje ještě takový jednoduchý textový popis („návod“), co která v zdrojovém kódu vygenerovaná funkce dělá a jak ji použít. Samozřejmě sám ProcessorExpert přesně neví, co jste s parametry zamýšleli, a proto je někdy popis dost obecný typu:

- SegLCD1_Enable - Enables the device - it starts the segment LCD module.
- SegLCD1_Disable - Disables the device - it stops the segment LCD module.
- SegLCD1_SetFrontplaneData - Set data to the LCD frontplane data registers. It sets/clears all used segments.
- SegLCD1_GetFrontplaneData - Get data from the LCD frontplane data registers.
- SegLCD1_SetBlinking - Activates/deactivates blinking of all segments (according to parameter BlinkMode).

Základní části programu

Když program rozebereme dle jeho funkce, tak tento projekt demonstruje funkci stopek (Stop Watch) s použitím komponent SegLCD_LDD, TimerUnit_LDD a TSI_LDD a skládá se z následujících třech funkčních částí:

  • INTRO – úvodní rolující text "STOPWATCH DEMO" po zapnutí desky / programu
  • HELP - následuje automaticky hned za úvodem a představuje uživateli možnosti ovládání aplikace stopek. Tedy konkrétně ukazuje umístění řídících dotykových tlačítek START / STOP (TSI electroda E1) a RESET (TSI electroda E2).
  •  
  • STOPWATCH – zobrazuje čas ve formátu MM:SS.HS (minuty:sekundy:setiny) a je možné spustit, přerušit či vynulovat měření času tlačítky představenými v předchozím helpu.
  •  

Závěr

Pokud jste s komponentou "ProcessorExpert" doposud nepracovali a máte MCU Kinetis K40 či přímo desku KwikStik, je demo prográmek ideální způsob, jak se s ním prakticky a zábavně seznámit. Program není složitý na pochopení a dá se případně velmi snadno využít i pro další úpravy a "hraní si". Přeložení programu ve vývojovém IDE softwaru CodeWarrior for MCU 10.1, který jsem použil já, je bezproblémové, stejně jako následné nahrání do desky KwikStik.

Článek vytvořil: Antonín Vojáček

DOWNLOAD & Odkazy

Přílohy: 
PřílohaVelikost
Package icon pe_demo_stopwatch_kwikstik.zip441.09 KB
Hodnocení článku: