Operácie

MIPS Úvodné cvičenie: Rozdiel medzi revíziami

Z SensorWiki

(AVR Assebler)
(AVR Assebler)
Riadok 32: Riadok 32:
 
== AVR Assebler ==
 
== AVR Assebler ==
  
Pre prvé pokusy si skúsime prácu len s assemblerom. Pri inštalácii AVR Studio 5 sa vám v zozname programov objavila ikonka '''AVR Studio Command Prompt'''
+
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
 +
 
 +
<source lang='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
 +
</source>
 +
 
 +
 
 +
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  
 
ak tam nie je, spustite ručne tento program  
 
  C:\Program Files (x86)\Atmel\AVR Studio 5.1\extensions\application\StudioCommandPrompt.exe
 
  C:\Program Files (x86)\Atmel\AVR Studio 5.1\extensions\application\StudioCommandPrompt.exe
 
v najnovšej verzii ho nájdete tu
 
v najnovšej verzii ho nájdete tu
 
  C:\Program Files (x86)\Atmel\Studio\7.0\Extensions\Application\StudioCommandPrompt.exe
 
  C:\Program Files (x86)\Atmel\Studio\7.0\Extensions\Application\StudioCommandPrompt.exe
 
  
 +
 +
Z príkazového riadku program preložíme
 +
avr-as program01.asm
 +
a skontrolujeme výsledok prekladu
 +
avr-objdump -d a.out
 +
vyrobíme ešte .hex verziu pre programátor
 +
X
 +
a pošleme program do mikroprocesora
 +
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
 
=== Knižnica ===
 
=== Knižnica ===
  

Verzia zo dňa a času 12:33, 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.

  1. Stiahnite a naintalujte si najnovšiu verziu prostredia Arduino ([https://www.arduino.cc/ arduino.cc)
  2. Priamo z prostredia si otvorte príklad Blink (File -> Examples -> 01. Basic -> Blink)
  3. Zmeňte parameter funkcie delay z hodnoty 1000 na 200
  4. Nastavte správny typ vašej vývojovej dosky (Tools -> Board -> Arduino AVR Boards -> Arduino Uno / alebo Arduino Nano)
  5. Nastavte správne číslo portu ku ktorému je doska pripojená (Tools -> Port -> ComX)
  6. 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 Assebler

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 program01.asm

a skontrolujeme výsledok prekladu

avr-objdump -d a.out

vyrobíme ešte .hex verziu pre programátor

X

a pošleme program do mikroprocesora

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

Knižnica

[1.] Datasheet obvodu Atmel Microchip ATmega328P
[2.] James Lewis: Benchmarking Arduino’s digitalWrite() with a Logic Analyzer