MIPS Úvodné cvičenie: Rozdiel medzi revíziami
Zo stránky SensorWiki
Riadok 85: | Riadok 85: | ||
[1.] Datasheet obvodu <S>Atmel</S> Microchip [https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf ATmega328P]<BR> | [1.] Datasheet obvodu <S>Atmel</S> Microchip [https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf ATmega328P]<BR> | ||
[2.] James Lewis: ''[https://www.baldengineer.com/digitalwrite-on-a-logic-analyzer.html Benchmarking Arduino’s digitalWrite() with a Logic Analyzer]''<BR> | [2.] James Lewis: ''[https://www.baldengineer.com/digitalwrite-on-a-logic-analyzer.html Benchmarking Arduino’s digitalWrite() with a Logic Analyzer]''<BR> | ||
[3.] AVR035: [http://ww1.microchip.com/downloads/en/Appnotes/doc1497.pdf Efficient C Coding for AVR]. Application note. | |||
* Arduino UNO V3 http://marcusjenkins.com/wp-content/uploads/2014/06/ARDUINO_V2.pdf | * Arduino UNO V3 http://marcusjenkins.com/wp-content/uploads/2014/06/ARDUINO_V2.pdf |
Verzia z 16:25, 9. január 2021
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:|Documents pod názvom program01.asm
; .equiv temp, 16
; .equ PORTB = 0x05
; .equ DDRB = 0x04
; upload:
; C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avrdude -CC:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf -v -patmega328p -carduino -PCOM4 -b115200 -D -Uflash:w:C:\Users\Richard\AppData\Local\Temp\arduino_build_576680/Blink.ino.hex:i
; preklad
; avr-as asm00.asm
; vypis vysledku
; avr-objdump -d a.out
; a potom uz radsej to iste v avr studio ale mozno este skusime vyrobit .hex a potom to tam avrdude nahrat
.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 ; 2 SC
ldi r16, 0xCC ; konfiguracia Portu B DDR = 1111 1111 - vsetko su vystupy
out 0x04, r16 ;
ldi r16, 0x80 ; rozsvietime LED na najvyssom bite, PORTB = 1000 0000
out 0x05, r16 ;
rjmp LOOP ; dokola
.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
avr-as -mmcu=atmega328p --no-warn -o program01.out program01.asm
a skontrolujeme výsledok prekladu
avr-objdump -d a.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
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.