V letošním dubnu jsem mi v rámci zkoušení výrobků firmy Freescale dostal na stůl demonstrační a vývojový kit označený jako DEMO9S08LC60 obsahující mimo mnoha různých periférií a senzorů i výkonné 8bitové MCU Freescale MC9S08LC60FKE v 80pinovém SMD pouzdru LQFP. Protože kit měl být následně vystaven na výstavě AMPER 2007 na výstavišti v Letňanech, vytvořil jsem pro tyto účely na mnohasegmentový LCD displej, který je součástí kitu, reklamní běžící text "HW SERVER A FREESCALE Vas vita na vystave Amper 2007".
Program je napsán v jazyku C a při jeho vývoji jsem využíval ke kitu přiložený vývojový PC software CodeWarrior IDE 5.1 SE. Na první pohled pro začínající programátory docela složitá věc, která se však v CodeWarrioru výrazně zjednoduší. Plno věcí je možné si nechat automaticky předdefinovat dle zvoleného typu procesoru a příp. vývojového kitu nebo lze jednoduchým klikacím způsobem přednastavit registry a periferie procesoru (mikrokontroléru) předdefinovat v CodeWarrioru vestavěném programu Processor Expert.
Program běžícího textu pro MCU HCS08LC60
Program běžícího textu byl vytvořen hlavně pro demonstrační účely nejen MCU MC9S08LC60, ale i kitu DEMO9S08LC60, proto není strohý, ale má do sebe začleněno využití a ovládání následujících periferií a prvků:
- LCD displej připojený na porty
- 8 červených LED diod připojených na portech PTA a PTB
- Jednootáčkový potenciometr připojený na A/D převodních MCU
Celý program provádí následující funkci:
Na LCD displej postupně vypíše zleva doprava text "HW SERVER", "A" a "FREESCALE" a poté zprava doleva běží text "Vas vita na vystave AMPER 2007". Rychlost výpisu a běhu textu lze v reálném čase regulovat pomocí natočení potenciometru. Úroveň natočení a tedy i rychlosti je indikována sloupcem 8 LED, které indikují logický stav každého z 8 bitů výsledné hodnoty z A/D převodníku. Struktura programu: Program se skládá s hlavního zdrojového kódu tvořeného souborem main.c, kódem pro výpis a ASCII znaků na zadanou pozici na displeji obsaženého v souboru lcd.c a startovacího kódu (68HC08 standard startup code) start08.c pro inicializaci stack pointeru a ROM knihoven. Souboru mc9s08lc60.c pak přiřazuje adresám všech registrů MCU specifický název a u některých i inicializuje hodnoty. Soubory start08.c i mc9s08lc60.c jsou standardně automaticky vytvořeny CodeWarriorem při zakládání projektu v závislosti na volbě typu MCU, případně k PC připojeném vývojovém kitu či programátoru, na volbě programovacího jazyka (C, C++), zvolí velikosti startovacího kódu (minimal startup code vs. ANSI startup code), modelu paměti (tiny vs. small) atd. V programu použité ovládání LCD displeje definované souborem lcd.c je pak dílem tvůrce kitu, firmou SofTec Microsystems. |
Popis zdrojového kódu main.c:
Hlavní funkční kód je tvořen hlavní smyčkou programu "void main(void)", která prakticky jen volá v určitém pořadí některou následující funkcí a posílá jim data:
|
Prostředí pro programování - sloupec zdrojových souborů zahrnutých do projektu (vlevo) a soubor main.c (vpravo)
Podklady pro vyzkoušení programu "běžící text"
- Zdrojové kódy celého programu lze stáhnout zazipovaném v souboru
- Sources.zip
- Celý projekt vytvořený v programu CodeWarrior verze 5.1 pro demonstrační
/ vývojový kit DEMO9S08LC60 lze stáhnout zazipovaný v souboru
- HW_demo.zip
- Zapojení kitu DEMO9S08LC60 a rozpis součástek pro ty, kteří kit nevlastní - demo9s08lc60_schematic.pdf
Základy používání programu CodeWarrior
Vývojový program CodeWarrior Development Studio je velmi kvalitní nástroj pro snadnější návrh a vývoj programu pro všechny procesorové produkty v nabídce firmy Freescale. Dle mého názoru dobře propracovaný a mě do ruky padnoucí je prvotní průvodce vytvořením projektu, který postupně umožňuje mimo samotný název projektu a místa jeho uložení i zvolit následující položky:
|
Při vytváření nového projektu je nutné dále vybrat typ prog. jazyka (vlevo), startovací kód a model paměti (vpravo)
Věc, která mi připadá jako velmi užitečná v CodeWarrioru, je modul Processor Expert, který výrobce označuje heslem "The Human Interface to the World of Silicon". Ta umožňuje buď v jednodušším případě zjednodušit inicializaci a nastavení registrů na chipu obsažených periferií, které je téměř vždy nutné provést na počátku běhu hlavní smyčky programu, nebo i přímo interaktivně vytvářet samotné funkce programu. Například ve výše uvedeném programu běžícího textu je nutné inicializovat a nastavit A/D převodník, časovač, nastavit vstupy a výstupy. K tomu je běžně nutné buď mít podrobně nastudovanou strukturu a vlastnosti MCU a jejich registrů nebo v časové tísni (což je dnes běžné) se snažit použít něco z nějakých demo programů. V případě CodeWarrioru lze však použít Processor Expert, kde se klikacím způsobem prakticky vše dá vybrat z nabídek, přičemž se průběžně graficky zobrazuje změna stavu bitů v příslušných registrech. Pokud tedy někdo zná alespoň obecné základy programování MCU, není nastavování problém a navíc se dá takto rychleji prakticky naučit označení (adresy) registrů a význam jednotlivých jejich bitů. Nastavení ADC nebo přiřazení vstupů a výstupů jednotlivým I/O pinům se stává hračkou. |
Kompletní vytvořený program lze kompletně přeložit kliknutím na ikonku DEBUG, kde v případě syntaktických chyb se vypíší ve zvláštním okně hlášky. Když se na ně klikne, zobrazí se příslušný chybný řádek. Pokud je program v pořádku vytvoří se příslušný binární kód pro nahrání do MCU. Pokud je k PC napojen nějaký vývojový kit nebo programátor (v mém případě DEMO9S08LC60), hned se nabídne k výběru a po potvrzení je provede nahrání programu. Následuje otevření okna modulu emulátoru / simulátoru "True-Time Simulator & Real-Time Debugger", kde je možné program spustit, krokovat ve 4 režimech, sledovat hodnoty všech proměnných a registrů, disasemblovaný program nebo výpis paměti. Vše je z pohledu ovládání docela intuitivní a uživatel alespoň částečně znalý nějaké práce s jinými vývojovými programy pro MCU či FPGA nebude myslím si mít žádné problémy.
Prostředí modulu True-Time Simulator & Real-Time Debugger určený pro simulaci programu nebo jeho reálné ladění na desce
Závěr
Tento program byl původně vytvořen hlavně jako jednoduchý ukázkový a propagační pro kit DEMO9S08LC60, ale hezky demonstruje základy programování MCU v jazyku C ve vývojové prostředí CodeWarrior firmy Freescale. Pokud ve svých zapojeních však využijete MCU MC9S08LC60 a připojení LCD displeje dle schématu kitu firmy SofTec Microsystems, lze zde uvedený program přímo použít.
Vývojový a demonstrační kit DEMO9S08LC60 si můžete objednat též v našem HW Shopu za cenu 2 999,- Kč bez DPH.
Antonín Vojáček
vojacek@ hwg.cz
DOWNLOAD & Odkazy
- Domovská stránka firmy Freescale - divize firmy Motorola - www.freescale.com
- Zdrojové soubory programu "běžící text" - Sources.zip
- Celý projekt programu "běžící text" vytvořený v programu CodeWarrior verze 5.1 - HW_demo.zip
- Článek o vlastnostech a parametrech kitu DEMO9S08LC60 - "TEST
- hodně vybavený USB kit s MCU MC9S08LC6"
- Podrobný uživatelský manuál k DEMO9S08LC60 i s popisem nastavení jumperů - MC9S08LC60.pdf
- Fact Sheet k DEMO9S08LC60 - MC9S08LC60FS.pdf
- DEMO9S08LC60 Quick Start postup - DEMO9S08LC60QS.pdf
- Zapojení kitu DEMO9S08LC60 a rozpis součástek pro ty, kteří kit nevlastní - demo9s08lc60_schematic.pdf
- Další vývojové
kity Freescale v HW Shopu