MIPS Úvodné cvičenie
Zo stránky SensorWiki
Cieľom tohoto cvičenia je zistiť, či máte pripravené všetky potrebné nástroje na prácu a otestovať ich.
Arduino
Hoci Arduino nebudeme poižívať bežne, jeho veľkou výhodou je, že to je veľmi rozšírený a preto aj dobre otestovaný systém. To znamená, že po nainštalovaní je všetko pripravené a malo by fungovať na prvý raz.
- Stiahnite a naintalujte si najnovšiu verziu prostredia Arduino ([https://www.arduino.cc/ arduino.cc)
- Priamo z prostredia si otvorte príklad Blink (File -> Examples -> 01. Basic -> Blink)
- Zmeňte parameter funkcie delay z hodnoty 1000 na 200
- Nastavte správny typ vašej vývojovej dosky (Tools -> Board -> Arduino AVR Boards -> Arduino Uno / alebo Arduino Nano)
- Nastavte správne číslo portu ku ktorému je doska pripojená (Tools -> Port -> ComX)
- Skompilujte program a nahrajte ho do dosky (Sketch -> Upload) a vizuálne skontrolujte či je všetko tak ako má byť.
Úlohy:
- Na základe informácií z prednášky skúste porozmýšľať, na čo slúži príkaz pinMode(13, OUTPUT)? Vedeli by ste povedať, čo a kde nastavuje? A čo digitalWrite(13, HIGH)
- Ako najrýchlejšie viete blikať LEDkou? (t.j. aký najkratší impulz viete vygenerovať na výstupe)
- Sledujte na osciloskope [2] priebeh signálov na výstupe
Poznámky:
- Hodnotu delay meníme preto, lebo tento základný testovací program býva na doske často nahratý už od výrobcu, takže priamo po pripojení k USB sa LED dióda rozbliká s periódou 2sekundy. Zmenou hodnoty sa ubezpečíme, že skutočne funguje celý vývojový cyklus od prekladu cez linkovanie až po nahrávanie do procesora.
- Najmä čínske klony Arduino Nano majú v sebe nahratú staršiu verziu bootloaderu, preto treba vybrať z menu Tools -> Procesor -> ATmega328 Old Bootloader
AVR Studio
Zo stránky https://www.microchip.com/mplab/avr-support/avr-and-sam-downloads-archive si nainštalujte niektorú verziu vývojového prostredia
- AVR Studio 5.1 je vhodný kompromis medzi veľkosťou a aktuálnosťou
- Najnovšia verzia Atmel Studio 7 je pre naše účely zbytočne nafúknutá a nebudeme potrebovať podporu pre všetky procesory, ktoré ponúka
- Staršia verzia AVR Studio 4 je oproti v5 naozaj malá a jednoduchá, ale treba si k nej doinštalovať zvlášť kompilátor avr-gcc, bez neho vie prostredie prekladať len z assembleru. Preto si predtým nainštalujte samostatný kompilátor WinAVR
AVR Assembler
Pre prvé pokusy si skúsime prácu len s assemblerom.
V ľubovoľnom programátorskom editore napíšte nasledovný program a uložte si ho do C:\User\Meno\Documents pod názvom program01.asm
.text
START: SBI 0x04,5 ; DDRB.5 = 1 (t.j. Output) ; 1 SC
LOOP: SBI 0x05,5 ; PORTB.5 = 1 (t.j. High, rozsviet LED) ; 2 SC
CBI 0x05,5 ; PORTB.5 = 0 (t.j. Low, zhasni LED) ; 2 SC
RJMP LOOP ; Skok na zaciatok ; 2 SC
.end ; Koniec
Pri inštalácii AVR Studio 5 sa vám v zozname programov objavila ikonka AVR Studio Command Prompt
ak tam nie je, spustite ručne tento program
C:\Program Files (x86)\Atmel\AVR Studio 5.1\extensions\application\StudioCommandPrompt.exe
v najnovšej verzii ho nájdete tu
C:\Program Files (x86)\Atmel\Studio\7.0\Extensions\Application\StudioCommandPrompt.exe
Z príkazového riadku program preložíme (prípadne aj s --no-warn)
avr-as -mmcu=atmega328p -o program01.elf program01.asm
a skontrolujeme výsledok prekladu
avr-objdump -d program01.elf
vidno, že tu ešte kompilátor nevie presne kam tento kód príde, preto je .rjmp .+0 a tak musíme spustiť ešte linker
avr-ld program01.elf -o program01.out
a znova skontrolujeme výsledok prekladu
avr-objdump -d program01.out
vyrobíme ešte .hex verziu pre programátor
avr-objcopy -O ihex program01.out program01.hex
a pošleme program do mikroprocesora
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avrdude.exe" -C"C:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf" -v -patmega328p -carduino -PCOM4 -b115200 -D -Uflash:w:C:\Users\YourName\Documents\program01.hex:i
Ak by sme niekedy potrebovali disassembler, tak pre uplnost
avr-objdump -m avr -D program01.hex
AVR Assembler v Studio
Teraz si zopakujeme to isté, ale už nebudeme vypisovať jednotlivé príkazy, ale využijeme komplexné integrované vývojové prostredie (IDE) Atmel Studio. Založíme nový ASM projekt a vložíme nasledovný kód
Potom ho preložíme a odkrokujeme podľa pokynov cvičiaceho
Blink v AVR Assembleri
TODO: sem dorobime kratk slucku v assembleri tak, aby sme mohli blikat ledkou s periodou 1sekunda aj s nahratim do dosky.
Knižnica
[1.] Datasheet obvodu Atmel Microchip ATmega328P
[2.] James Lewis: Benchmarking Arduino’s digitalWrite() with a Logic Analyzer
[3.] AVR035: Efficient C Coding for AVR. Application note.