Reklama

Základy ovládání mikrokontroléru ATmega(16/32) 2. díl – Sestavení a krokování programu

Úvod

V minulém díle jsme si ukázali, jak založit nový projekt a nyní si ukážeme, jak napsat první program a zkompilovat ho.  Předem udávám, že tento článek není popisem základem jazyka C, ale pouze ukázka aplikace tohoto jazyka v prostředí Atmel Studia. Vysvětlením jazyka C se zabývá mnoho internetových stránek a pouhé opakování již nemá smysl. V tomto návodu je použita ATmega32, která je stejná jak ATmega16, akorát obsahuje místo 16 kB paměti pro program paměť o velikosti 32 kB.

Základní popis

Na Obr. 1. Jsou ukázané místa, kde se definují globální proměnné a hlavičkové soubory, kde se provádí inicializace proměnný a část programu, která se má provést pouze jednou a také ukazuje místo, kde se vkládá část kódu, který se má neustále opakovat.

 
Obr. 1: Rozvržení programu v Atmel Studiu

Obr. 1: Rozvržení programu v Atmel Studiu

 

V oblasti číslo jedna se nacházejí vložené hlavičkové soubory nutné pro různé funkce, nebo hlavičky pro uživatelsky vložené zdrojové kódy v jiných souborech a také se zde nacházejí definice jednotlivých globálních proměnných, prototypy funkcí apod. Zdrojový kód začíná funkcí int main (void). V této funkci deklarujete již lokální proměnné a Váš zdrojový kód (oblast 2), který má být proveden. Dále funkce main obsahuje nekonečnou smyčku while(1). V oblasti nekonečné smyčky while(1) (oblast 3) se nachází kód, který se má neustále opakovat. Zobrazený kód inkrementuje proměnnou a přiřadí ji na PORTA. Pokud je tato proměnná rovna deseti, provede se přiřazení hodnoty jedna.

 

Ještě než necháme zkompilovat program, tak uložíme změny. Dále musíme nastavit optimalizace pro kompilátor. Pro tento program to není nutné, ale pro rozsáhlejší projekt je to zcela nezbytné. Pokud tento krok vynecháte, můžete narazit na veliké problémy v budoucnu. Na druhou stranu, pokud krokujete chod programu při zapnutých optimalizacích, může se stát, že se program nechová tak, jak úplně čekáte (protože po optimalizace může dojít ke smazání části kódu, vložení konstant apod). Vývojové prostředí AVR Studio 5 mělo defaultně nastaveno vypnutí optimalizací. Atmel Studio 6 má defaultně nastavenou hodnotu (-01), ale osobně doporučuji zvolit volbu optimalizace na velikost čili (-OS). Výběr optimalizace se provádí v nastavení projektu, které lze zobrazit stiskem ikony mikrokontroléru s nápisem ATmega32 anebo pomocí volby v menu “Project -> project Properties…”. Poté vyberte Toolchain a v AVR/GNU C Compiler vyberte Optimization, kde v Optimization Level vyberte Optimize for size (-OS). Postup lze vidět také na obrázku Obr. 2.

 

Obr. 2:Zapnutí optimalizací

Obr. 2:Zapnutí optimalizací

 

Na Obr. 3. jsou vidět dvě oblasti, kde jednu lze použít pro kompilaci projektu (volba Buid) a druhou ke spuštění krokování projektu. Po vybrání volby Build můžeme vybrat Build Solution (klávesa F7), nebo Rebuild Solution (klávesa Ctrl+Alt+F7). Tímto se zkompiluje Váš program a v cílové složce (podle volby “Debug” a “Release”) se vytvoří soubor s příponou hex, který obsahuje zkompilovaný kód potřebný k nahrání do mikrokontroléru ATmega. V druhé oblasti je vidět zelená šipka, která spustí debugger, čili nástroj pro ladění programu. Po prvním stisku se zobrazí nabídka s nástroji pro debugger, která obsahuje pouze jednu položku AVR Simulator, tak ji vyberte.

 

Obr. 3: Výběr ladícího nástroje

Obr. 3: Výběr ladícího nástroje

 

Po stisku zelené šipky a výběru AVR Simulátoru se spustí váš program v prostředí Atmel Studia. Nyní lze program zastavit, nebo pozastavit a krokovat pomocí tlačítek, které lze vidět na obr 4.

 

Obr. 4: Zastavení a pozastavení zdrojového kódu

Obr. 4: Zastavení a pozastavení zdrojového kódu

 

Po pozastavení vykonávaní programu se Vám aktivují volby ke krokování zdrojového kódu. Dále také zůstala aktivní volba ukončení běhu programu. Program lze pozastavit také tím, že přidáme do programu breakpoint. Breakpoint slouží k tomu, aby se zastavil chod programu v místě, kde je to žádáno. Může být vloženo i několik breakpointů v jednom zdrojovém kódu a také může být vložen ještě před spuštím debuggeru. Umístění breakpointu provedeme tím, že v levé oblasti od zdrojového kódu klikneme levým tlačítkem myši. Krokovací nástroje a umístění breakpointu ukazuje následující obrázek Obr. 5. Nejčastěji použijete zřejmě první dvě levé tlačítka. Prvním procházíte program a vstupujete i dovnitř funkcí apod. Druhým krokujete řádek po řádku a do funkcí se nevnořujete. Ovládání těchto tlačítek lze i pomocí klávesových zkratek a F11 pro první volbu a F10 pro druhou volbu.

 

Obr. 5: Breakpoint a krokovací nástroje

Obr. 5: Breakpoint a krokovací nástroje

 

Pokud chceme sledovat hodnoty proměnných, stačí je zadat do položky watch1 a při krokování se sami aktualizují. Viz Obr. 6.

 

Obr. 6: Sledování hodnot proměnných

Obr. 6: Sledování hodnot proměnných

 

Vestavěný debugger Atmel studia má daleko víc funkcí jak kontrolovat registry, stavy portů, stavy  časovačů apod. Toto je pouze základní ukázka použití tohoto nástroje. Dalším zajímavým funkcím se budeme věnovat v některém z dalších dílů.

 
Aktualizace: 23.11.2016
 

Jiné příspěvky v kategorii:

 

Základy ovládání mikrokontroléru ATmega(16/32) 1.díl – První kroky

Základy ovládání mikrokontroléru ATmega(16/32) 3.díl – Nahrání vytvořeného zdrojového kódu do mikrokontroléru

Základy ovládání mikrokontroléru ATmega(16/32) 4.díl – Ovládání vstupně/výstupních portů

Základy ovládání mikrokontroléru ATmega(16/32) 5.díl – Ošetření zákmitů na vstupním pinu mikrokontroléru

Základy ovládání mikrokontroléru ATmega(16/32) 6.díl – Externí přerušení

Základy ovládání mikrokontroléru ATmega(16/32) 7. díl – Jednoduchá elektronická hrací kostka
Základy ovládání mikrokontroléru ATmega(16/32) 8.díl – A/D převodník (1.část)

Základy ovládání mikrokontroléru ATmega(16/32) 9.díl – A/D převodník (2.část)

Základy ovládání mikrokontroléru ATmega(16/32) 10.díl – A/D převodník (3.část)

Základy ovládání mikrokontroléru ATmega(16/32) 11.díl – Čítač / Časovač (1.část – Základní popis)
Základy ovládání mikrokontroléru ATmega(16/32) 12.díl – Čítač / Časovač (2.část – Popis registrů)

Základy ovládání mikrokontroléru ATmega(16/32) 13.díl – Čítač / Časovač (3.část – Praktická ukázka)

Základy ovládání mikrokontroléru ATmega(16/32) 14.díl – Dvouřádkový LCD displej

Základy ovládání mikrokontroléru ATmega(16/32) 15.díl – Popis implementace komunikace I2C a EEPROM paměti 24LC512

Základy ovládání mikrokontroléru ATmega(16/32) 16.díl – Watchdog

Základy ovládání mikrokontroléru ATmega(16/32) 17.díl – Obsluha maticové klávesnice

Základy ovládání mikrokontroléru ATmega(16/32) 18.díl – Jednotka USART (1. část – Popis)

Základy ovládání mikrokontroléru ATmega(16/32) 19.díl – Jednotka USART (2. část – Praktická ukázka)

Základy ovládání mikrokontroléru ATmega(16/32) 20. díl – Generování audio signálu pomocí PWM

Základy ovládání mikrokontroléru ATmega(16/32) 21. díl – Analogový komparátor

Základy ovládání mikrokontroléru ATmega(16/32) 22. díl – Krokování programu v jazyce symbolických adres (JSA)
 
Tajned facebook
 

Za případné chyby v textu, ve zdrojovém kódě, nebo ve schématickém zapojení se omlouváme.
AUTOŘI NEBEROU ŽÁDNOU ODPOVĚDNOST ZA PŘÍPADNÉ ÚJMY NA ZDRAVÍ ČI MAJETKU.