Začínáme s dsPICem (5) - pojďme si zablikat - Céčko

Stejný úkol - jiné prostředky. V tomto článku si ukážeme, jak jednoduché blikání LED diodami pomocí procesoru dsPIC naprogramovat v jazyku C. Článek je výrazně stručnější než předchozí Pojďme si zablikat - Assembler, protože mnohé postupy jsou při práci v obou jazycích totožné.

Pro procesory dsPIC existuje několik překladačů jazyka C. V tomto a následujících článcích budu používat překladač C30 přímo od firmy Microchip. Překladač se dá ve studentské verzi stáhnout zdarma. Studentská verze funguje 30 dní plnohodnotně a pak přestane programy při překladu optimalizovat, takže mohou být poněkud méně efektivní než ty, které se přeloží ostrou verzí kompilátoru.

Instalace prostředí MPLAB a kompilátoru C30 je popsána ve výše uvedeném předchozím článku.

Vytvoření projektu

Pusťme se tedy rovnou do vytvoření potřebného projektu. I to je velmi podobné jako v případě assembleru. Vezmu ho tedy výrazně zkráceně. POkud někdo potřebuje detailnější popis, najde ho opět v předchozím článku.

  • Stáhněte si na konci článku přiložený zdrojový soubor blikame-c.zip a rozbalte ho do předem připravené složky.
  • Spusťte MPLAB a v něm průvodce projektem menu Project/Project wizard... a hned tlačítko Další>
  • Vyberte použitý typ procesoru
  • Vyberte balík jazykových nástrojů, tentokrát samozřejmě Microchip C30 Toolsuite
  • Na další stránce "Step Three" vybereme složku, kam se bude projekt ukládat (ta kam jsme uložili zdrojový kód) a název projektu.
  • A konečně na další stránce "Step Four" vybereme soubory se zdrojovým kódem (my máme náš jediný Blikame-C.C)

Dokončíme průvodce a měli bychom vidět okno projektu velmi podobné tomu, které jsme viděli v příkladu s assemblerem. Samozřejmě i v tomto případě můžeme kdykoliv přidávat nebo odebírat libovolné zdrojové nebo hlavičkové soubory i soubory jiných typů.

Úprava kódu a překlad

Pokusíme-li se nyní zdrojový kód přeložit, dospějeme ke stejné chybě, jako v případě assembleru. Linker totiž musí přeložený kód umístit na správná místa správných paměti a k tomu potřebuje návod ve formě Linker Scriptu. Ten má opět příponu .gld, ale najdeme ho tentokrát ve složce c:\Program Files\Microchip\MPLAB C30\support\gld\. Název souboru se shoduje s názvem použité součástky a je bez písmena e na konci (ze stejných důvodů jako v minulém článku).

Než však kompilaci spustíte, upravte nejprve zdrojový kód podle konkrétního zapojení vašeho hardwaru. Místa kódu, které mají s umístěním hardwaru něco společného jsem pro větší přehlednost opět v komentářích opatřil třemi hvězdičkami ***.

Jak překlad vlastně funguje?

Disassembly listingMáme-li kód upravený, můžeme standardním způsobem pomocí menu Project/Build All spustit překlad. Jestliže jsme nikde neudělali chybu, měl by překlad proběhnout a výsledkem by měl být mimo jiné i kýžený HEX soubor pro nahrání do procesoru. Než ho tam nahrajeme, pojďme se ale nejprve podívat, jak vlastně kompilátor C30 funguje. Pokud si prohlédněme složku našeho projektu, zjistíme, že se v ní nenachází nic závratně zajímavého. Je tam soubor se zdrojovým kódem blikame-c.c, dále překladem vygenerovaný object soubor blikame-c.o, výsledný soubor s příponou *.hex a soubor s příponou *.cof poskytující informace potřebné pro debuging v prostředi MIcrochip ICE 4000.

Celé tajemství překladu totiž musíme hledat někde jinde a za normálních okolností se do souboru neukládá. Najdeme ho v menu MPLABu v položce View/Disassembly listing.

Z okna, které se nám otevře je jasně vidět, že překladač C30 zdrojový program přeloží pouze do jazyka assembler a odtud je kód již přeložen standardním způsobem.

Jak je vidět z přiloženého obrázku, překladač zachovává ve výpisu jak naše původní komentáře, tak i původní řádky zdrojového kódu v jazyce C (včetně jejich čísel), takže výpis je krásně čitelný. Může posloužit například v situaci, kdy potřebujeme některou kritickou část kódu optimalizovat až na úrovni jednotlivých instrukcí assembleru.

Pokud jste po nahrání hex souboru do procesoru obvyklým způsobem LEDky úspěšně rozblikali, nezbývá než si zadat pár úkolů k procvičení. A nebojte :^)), budou úplně shodné s úkoly z minulého článku, jen je teď budeme řešit v jiném programovacím jazyku.

Náměty na procvičení

Zkuste program upravit tak, aby:

  • diody blikaly rychlostí 1 Hz (dvě periody časovače za sekundu)
  • diody blikaly bez stisknutého tlačítka na střídačku (LED1, LED2, LED1, LED2, atd.) a se stisknutým tlačítkem obě současně (LED1+LED2, zhasnuto, LED1+LED2, zhasnuto, atd.)
  • diody blikaly v sekvenci LED1, mezera, LED2, mezera, LED1, mezera, atd.
  • diody blikaly bez stisku tlačítka frekvencí 1 Hz a se stisknutým tlačítkem frekvencí 10 Hz

P.S.

Tak ve kterém jazyce je programování dsPICa snazší? :-)))

 

 

 

 

 

PřílohaVelikost
blikame-c.zip2.23 KB