MMP Cvičenie 2: Rozdiel medzi revíziami
Zo stránky SensorWiki
Riadok 12: | Riadok 12: | ||
# Zoznámte sa s vývojovou doskou '''[http://www.robotika.sk/acrob Acrob]''' a s procesorom '''[http://www.atmel.com/dyn/products/product_card.asp?PN=ATmega328P ATmega328]''' ([http://ap.urpi.fei.stuba.sk/mmp/ATmega328.pdf datasheet] - 22,3MB!, ''stiahnite si na svoj počítač''). | # Zoznámte sa s vývojovou doskou '''[http://www.robotika.sk/acrob Acrob]''' a s procesorom '''[http://www.atmel.com/dyn/products/product_card.asp?PN=ATmega328P ATmega328]''' ([http://ap.urpi.fei.stuba.sk/mmp/ATmega328.pdf datasheet] - 22,3MB!, ''stiahnite si na svoj počítač''). | ||
# Zapojte obvod s LED a tlačítkom podľa schémy zapojenia | |||
[[Obrázok:MMP_Cvicenie2_Sch.png]] | |||
Verzia z 13:22, 30. september 2010
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
- Eric B. Weddington: WinAVR User Manual
- Peter Sutton: WinAVR C Tutorial (within AVR Studio)
Postup
- Zoznámte sa s vývojovou doskou Acrob a s procesorom ATmega328 (datasheet - 22,3MB!, stiahnite si na svoj počítač).
- Zapojte obvod s LED a tlačítkom podľa schémy zapojenia
AVR GCC
- Preštudujte 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ť.
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
- Výsledný program nahráme do procesora a vyskúšame.
C:\> avrdude --help TODO!
Úloha
Upravte predošlý program aby realizoval R-S klopný obvod.
Hapsim
Nainštalujte si simulátor HAPSIM: [1] Skúste príklad s LED diódou aj s HAPSIMom.
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.
- 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 AVR Example3.c, program, v ktorom použijeme časovanie pomocou slučky s pevným počtom cyklov.
Ú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ť.
Pamäťové priestory
Pozri AVR Pamäťové priestory