Zapoznanie z AVR i pierwsze programy


SPRAWOZDANIE

z laboratorium techniki mikroprocesorowej

Temat: „Zapoznanie z AVR i pierwsze programy”.

Paweł Michałek ID 6.3 21.04.2008r.

Wprowadzenie do AVR:

Atmel AVR to rodzina ośmiobitowych mikrokontrolerów produkowanych przez firmę Atmel.

Jednostka arytmetyczno-logiczna opracowana przez dwóch studentów z Norwegian Institute of Technology oparta jest na schemacie RISC procesora i zasadami architektury harwardzkiej, zawiera 32 ośmiobitowe rejestry. Instrukcje arytmetyczno-logiczne mogą być wykonywane na rejestrach. Dane z pamięci mogą być tylko przesyłane do i z rejestrów. Charakteryzuje się ona prostą strukturą rozkazów, dużą wydajnością obliczeniową (większość rozkazów wykonywana jest w jednym takcie procesora).

Listę rozkazów dopasowano do wymagań współczesnych kompilatorów wprowadzając rozkazy pobierania danych przez adresowanie pamięci rejestrem 16-bitowym (zestaw dwóch rejestrów) z jednoczesnym zwiększeniem lub zmniejszeniem rejestru adresowego (pobierz i zwiększ/zmniejsz).

Produkowanych jest wiele rodzajów mikrokontrolerów różniących się wyposażeniem w urządzenia peryferyjne, ilość pamięci RAM, EEPROM i flash. W oznaczeniach dzieli się rodzinę na kontrolery Tiny AVR - małe, Mega AVR -duże, oraz specjalne.

Przykładowo: ATtiny13 zawiera 1kB pamięci programu (flash), 64 bajty EEPROMu, 64 B RAM + 32 rejestry, 6 wejść/wyjść, 2 kanały PWM, SPI, 4 kanały A/D, oscylator w układzie scalonym, montowany jest w obudowie 8 nóżkowej. ATmega2560 zawiera 256 kB pamięci programu, 4 kB EEPROMu, 8 kB RAM, 86 wejść/wyjść, 4 liczniki/czasomierze 16 bitowe, 6 PWM, SPI, 2 - UART, 16 - kanałów A/D ...

Kontrolery wyposażone są między innymi w:

- Watchdog - system restartu w przypadku zapętlenia się programu

- wewnętrzny oscylator

- UART lub USART - uniwersalny port wejścia wyjścia szeregowego, umożliwiający realizację - sprzętową wielu protokołów transmisji szeregowej,

- RTC - zegar czasu rzeczywistego (Real Time Clock),

- Przetworniki A/D i D/A - przetworniki analogowo cyfrowe i cyfrowo analogowe,

- Sprzętowe PWM,

- Sprzętową obsługę protokołów SPI, TWI (odpowiednik I²C).

- Porty I/O

- ISP (In-System Programming - programowanie w układzie) mikrokontroler programuje się w układzie bez wylutowywania, wyciągania mikrokontrolera z układu. Znacznie ułatwia to tworzenie urządzeń opartych na mikrokontrolerach i umożliwia wymianę oprogramowania w każdej chwili.

Konfiguracja układu do ćwiczenia:

Program 1:

Program ten zapala diodę podłączoną do linii 7 portu A. wykorzystuje do tego instrukcję bitową sbi (ustaw bit w rejestrze I/O):

.INCLUDE "m32def.inc”

sbi DDRA,7

sbi PORTA,7

LOOP:

rjmp LOOP

Program rozpoczyna się dyrektywą, dołączającą plik nagłówkowy mikrokontrolera ATmega16. Dzięki temu można odwoływać się do rejestrów układu poprzez nazwy symboliczne, a nie przez adresy. Każdy rozkaz zajmuje 1μs (wewnętrzny oscylator 1MHz).

Program 2:

Program ten zapala co drugą diodę z linii diod LED wykorzystując do tego port A. Wykorzystuje do tego transferu danych:

.INCLUDE "m32def.inc"

ldi R16,0xFF

out DDRA,R16

ldi R16,0b10101010

out PORTA,R16

LOOP:

rjmp LOOP

Rozkazy ldi R16,0xFF out DDRA,R16 odpowiadają za przełączenie portu PA w tryb pracy jako wyjście. (Przy starcie wszystkie porty pracują w trybie wejściowym, oprócz XTAL2)

Zadanie 3:

Program zapalający i gaszący diodę w zależności od stanu klawisza:

.INCLUDE "m32def.inc"

ldi R16,0xFF

out DDRA,R16 ;tryb wyjsciowy portu A

ldi R16,0x0F

out PORTB,R16 ;podciaganie mlodszej czesci portu B

LOOP:

sbi PORTA,PORTA1 ;ustaw linie

KLAWISZ1:

sbic PINB,PINB0

rjmp KLAWISZ1

KLAWISZ2:

sbic PINB,PINB1

rjmp KLAWISZ2

rjmp LOOP

Instrukcja sbic powoduje pomijanie kolejnej instrukcji gdy linia PINB0 znajduje się w stanie niskim tj. 0.

Program 4:

Program zmienia stan podpiętych diód LED przy naciśnięciu klawisza S5:

.INCLUDE "m16def.inc"

ldi R16, 0xFF

out DDRA, R16 ; port PA pracuje w trybie wyjściowym

out PORTB, R16 ; włącz podciąganie na liniach PB0...PB3

ldi R16, 0b10101010 ;stan początkowy przed przyciśnięciem

out PORTA, R16 ; PORTA=10101010

Petla:

Czekaj_1:

sbic PINB, PINB1

rjmp czekaj_1

ldi R16, 0b11000000

out PORTA, R16

Czekaj_2:

sbic PINB, PINB1

rjmp czekaj_2

ldi R16, 0b00110000

out PORTA, R16

Czekaj_3:

sbic PINB, PINB1

rjmp czekaj_3

ldi R16, 0b00001100

out PORTA, R16

Czekaj_4:

sbic PINB, PINB1

rjmp czekaj_4

ldi R16, 0b00000011

out PORTA, R16

rjmp Petla



Wyszukiwarka

Podobne podstrony:
Open GL Pierwszy program
Cwiczenie 1 pierwszy program, przycisk BUTT
1 Pierwszy program konsolowyid Nieznany
AVR i ARM7 Programowanie mikrokontrolerow dla kazdego avrar7
Programator AVR (STK200) Progra Nieznany
Mój pierwszy program w Pascalu
Pierwszy program w C
001 konspekt Pierwszy program w Paskalu
Pierwszy program z algorytmem
10 KROKOW DO PIERWSZEGO PROGRAM Nieznany (2)
[lekcja 3] Uruchamiamy pierwszy program Kurs C++ » Poziom 1
opengl pierwszy program
1 TurboPascal Pierwsze programy
Atmel Avr Self Programming
Mój pierwszy program w Pascalu
beta kod pierwszy program
Open GL Pierwszy program
Cwiczenie 1 pierwszy program, przycisk BUTT

więcej podobnych podstron