Operácie

CADRS Cvičenie 8: Rozdiel medzi revíziami

Zo stránky SensorWiki

Balogh (diskusia | príspevky)
Balogh (diskusia | príspevky)
Riadok 13: Riadok 13:
=== Postup ===
=== Postup ===


Pripomeňte si schému vývojovou doskou (schéma zapojenia), a procesor ATmega16 (datasheet).
==== 1 ====
# AVR GCC -- najjednoduchší program tlačítko a LED ([[AVR Example1.c]],[[AVR Example2.c]] - to isté s makrami)
Pripomeňte si schému vývojovou doskou (schéma zapojenia), a procesor ATmega16 (datasheet).
#* Program modifikujte tak, aby bol spustiteľný na vašej doske. T.j. pozrite sa do schémy zapojenia, kam máte pripojené LED diódy a tlačítka.
 
#* Kompilácia a linkovanie<BR>
==== 1 ====
AVR GCC -- najjednoduchší program tlačítko a LED ([[AVR Example1.c]],[[AVR Example2.c]] - to isté s makrami)
* Program modifikujte tak, aby bol spustiteľný na vašej doske. T.j. pozrite sa do schémy zapojenia, kam máte pripojené LED diódy a tlačítka.
* Kompilácia a linkovanie<BR>
Najprv treba zdrojový program skompilovať:
Najprv treba zdrojový program skompilovať:
  C:\> avr-gcc -g -Os -mmcu=atmega16 -c example1.c
  C:\> avr-gcc -g -Os -mmcu=atmega16 -c example1.c
Riadok 31: Riadok 34:
V príklade sme výstup presmerovali do súboru, aby sa dal pohodlne prezerať.
V príklade sme výstup presmerovali do súboru, aby sa dal pohodlne prezerať.


# Generovanie Intel Hex<BR>
==== 3 ====
 
Generovanie Intel Hex<BR>
Pretože väčšina programovcích prístrojov (programátorov) nerozumie vytvorenému .elf súboru, musíme ho prekonvertovať napr. do tzv. Intel Hex formátu:
Pretože väčšina programovcích prístrojov (programátorov) nerozumie vytvorenému .elf súboru, musíme ho prekonvertovať napr. do tzv. Intel Hex formátu:


Riadok 38: Riadok 43:
# Výsledný program napálime cez PonyProg do procesora a vyskúšame.
# Výsledný program napálime cez PonyProg do procesora a vyskúšame.


# Úloha: Upravte predošlý program aby realizoval R-S klopný obvod.
==== 4 ====
 
Úloha: Upravte predošlý program aby realizoval R-S klopný obvod.


# '''Makefile'''
====  '''Makefile''' ====
Keby sme mali pri každom preklade vypisovať všetky príkazy, asi by nás to skoro prestalo baviť. Našťastie má kompilátor avr-gcc vo výbave aj príkaz make. Funguje tak, že ak napíšete
Keby sme mali pri každom preklade vypisovať všetky príkazy, asi by nás to skoro prestalo baviť. Našťastie má kompilátor avr-gcc vo výbave aj príkaz make. Funguje tak, že ak napíšete
     C:\> make
     C:\> make
Riadok 52: Riadok 59:
#* Program preložte a skúste odkrokovať.  
#* Program preložte a skúste odkrokovať.  


# Časové oneskorenie.
==== Časové oneskorenie ====
Pozrite si Example3.c, program, v ktorom použijeme časovanie pomocou slučky s pevným počtom cyklov.
Pozrite si Example3.c, program, v ktorom použijeme časovanie pomocou slučky s pevným počtom cyklov.


Riadok 64: Riadok 71:
Zmerané priebehy na pine PD5 pre delay_ms(1) (Example3.c)
Zmerané priebehy na pine PD5 pre delay_ms(1) (Example3.c)


# Programmers Notepad --
Programmers Notepad je editor s možnosťou doplnenia volaní externých funkcií, takže sa dá priamo z menu volať kompilátor, prípadne aj programátor a ďalšie funkcie. Editor má zvýrazňovač syntaxe, možnosť práce s projektami, otvárať viacero súborov naraz a preto ho budeme používať aj na ďalších cvičeniach...






[[CAD_Riadiacich_syst%C3%A9mov#Cvi.C4.8Denia|Návrat na zoznam cvičení...]]
[[CAD_Riadiacich_syst%C3%A9mov#Cvi.C4.8Denia|Návrat na zoznam cvičení...]]

Verzia z 11:25, 5. november 2008

Programovanie mikroprocesorov Atmel AVR v jazyku C

Téma: Programové a technické prostriedky pre tvorbu aplikácií s mikroprocesorovými systémami (simulátor, emulátor, programátor). Pamäťový podsystém procesorov. Binárne vstupy a výstupy.

Študijná literatúra

Vývojová doska MiniMEXLE.

Postup

1

Pripomeňte si schému vývojovou doskou (schéma zapojenia), a procesor ATmega16 (datasheet).

1

AVR GCC -- najjednoduchší program tlačítko a LED (AVR Example1.c,AVR Example2.c - to isté s makrami)

  • Program modifikujte tak, aby bol spustiteľný na vašej doske. T.j. pozrite sa do schémy zapojenia, kam máte pripojené LED diódy a tlačítka.
  • Kompilácia a linkovanie

Najprv treba zdrojový program skompilovať:

C:\> avr-gcc -g -Os -mmcu=atmega16 -c example1.c

Pritom potrebuje kompilátor poznať, pre aký typ procesora má preklad prispôsobiť. To robíme prepínačom -mmcu. Prepínačom -Os zvolíme optimalizáciu vzhľadom na veľkosť výsledného kódu (príadne aj na úkor rýchlosti). Prepínač -g zariadi pripojenie informácí pre debuger. Je to užitočné pri spätnom preklade a ladení programov, do výsledného kódu sa táto nadbytočná informácia nezanáša. Posledný prepínač, -c hovorí kompilátoru, že má len kompilovať, a nie aj linkovať. Tento príklad by sa síce dal v jednom kroku aj zlinkovať, ale nenaučili by sme sa linkovať a v reálnej praxi často program linkujeme z niekoľkých blokov.

Kompilátor vytvorí example1.o, ktorý teraz zlinkujeme do binárneho súboru example1.elf

C:\> avr-gcc -g -mmcu=atmega16 -o example1.elf example1.o 

Aj tu je potrebné špecifikovať správny typ cieľového procesora, aby sa prilinkovali správne štartovacie rutiny a knižnice.

Čo s výsledným súborom? S napálením do procesora sa neunáhlime, najprv sa pozrime, aké veľké miesto v pamäti náš výtvor zaberá:

C:\> avr-objdump -h example1.elf

Ešte užitočnejší je prepínač -S, ktorý urobí spätný preklad a na základe informácií pre debugger ho pomieša so zdrojovým kódom aplikácie, takže je jasne vidieť, ktorú časť programu ako preložil. Túto možnosť ponúka síce aj samotný kompilátor, ale neuvidíme prilinkované knižnice a štartovací kód.

C:\> avr-objdump -S example1.elf > example1.lst

V príklade sme výstup presmerovali do súboru, aby sa dal pohodlne prezerať.

3

Generovanie Intel Hex
Pretože väčšina programovcích prístrojov (programátorov) nerozumie vytvorenému .elf súboru, musíme ho prekonvertovať napr. do tzv. Intel Hex formátu:

     C:\> avr-objcopy -j .text -j .data -O ihex demo.elf demo.hex
  1. Výsledný program napálime cez PonyProg do procesora a vyskúšame.

4

Úloha: Upravte predošlý program aby realizoval R-S klopný obvod.

Makefile

Keby sme mali pri každom preklade vypisovať všetky príkazy, asi by nás to skoro prestalo baviť. Našťastie má kompilátor avr-gcc vo výbave aj príkaz make. Funguje tak, že ak napíšete

   C:\> make

tak začne hľadať v aktuálnom priečinku súbor makefile. Jeho obsah môže vyzerať napríklad takto. Je tam zapísané, ktorý súbor od ktorého závisí, takže dokonca ak zmeníme len nejaký menej dôležitý hlavičkový súbor, prekladajú sa len relevantné časti projektu a nie všetko odznova.

Pri použití integrovaných vývojových prostredí je makefile oveľa rozsiahlejšie a vytvára sa na základe preddefinovanej šablóny.

  1. AVR Studio -- simulácia programu v C.
    • Vytvorte nový projekt v AVR Studio 4, zvoľte si pritom nie typ assembler ale WinAVR. Použite ako cieľový procesor ATmega16.
    • Aok zdrojový program použite fungujúci Example1, alebo Example2 z bodu 3.
    • Program preložte a skúste odkrokovať.

Časové oneskorenie

Pozrite si Example3.c, program, v ktorom použijeme časovanie pomocou slučky s pevným počtom cyklov.

Prípadne si nahrajte celý projekt, aby fungoval, musí byť v c:\mmp\Example3.

Úloha: Opravte program tak, aby naozaj realizoval funkciu v zhode s názvami.

Návod: pozrite sa ako kompilátor program preloží a spočítajte, koľko trvá jeden úplný cyklus. Potom zo známej F_OSC vypočítajte, koľkokrát treba cyklus spustiť.


Zmerané priebehy na pine PD5 pre delay_ms(1) (Example3.c)



Návrat na zoznam cvičení...