Mikrokontrolery AVR Wprowadzenie

Podobne dokumenty
KOMUNIKACJA Z OTOCZENIEM MIKROKONTROLERA

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Programowanie mikrokontrolerów AVR z rodziny ATmega.

Instytut Teleinformatyki

Inż. Kamil Kujawski Inż. Krzysztof Krefta. Wykład w ramach zajęć Akademia ETI

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Mikroprocesory i Mikrosterowniki

Niektóre piny mogą pełnić różne role, zależnie od aktualnej wartości sygnałów sterujących.

Zestaw Edukacyjny Atmega-8 (AJAWe-0711) Porty wejścia-wyjścia.

Systemy wbudowane. Wprowadzenie. Struktura. Mikrokontrolery AVR. Wprowadzenie do programowania w C

Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR

Mikroprocesory i Mikrosterowniki

Instytut Teleinformatyki

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Programowanie w językach asemblera i C

Systemy wbudowane. Uniwersytet Łódzki Wydział Fizyki i Informatyki Stosowanej. Witold Kozłowski

Komunikacja w mikrokontrolerach. Wydział Elektroniki Mikrosystemów i Fotoniki Piotr Markowski

Programowanie mikrokontrolerów AVR

Mikroprocesory i mikrosterowniki

KAŻDY Z 8-MIO BITOWYCH PORTÓW MIKROKONTROLERÓW RODZINY 51 MA JEDYNIE REJESTR PORTU: P0, P1, P2, P3, PEŁNIĄ ONE ROLĘ REJESTRÓW DANYCH WE/WY.

PROGRAMOWALNE SYSTEMY MECHATRONIKI

Komunikacja w mikrokontrolerach Laboratorium

Laboratorium Systemów wbudowanych Wyższa Szkoła Zarządzania i Bankowości, Informatyka studia inżynierskie

Podstawy techniki mikroprocesorowej

Instytut Teleinformatyki

GND(VSS) i VCC - masa i zasilanie. V0 - regulacja kontrastu

Programowanie mikrokontrolerów AVR z rodziny ATmega.

Mikrokontroler ATmega32. System przerwań Porty wejścia-wyjścia Układy czasowo-licznikowe

Instytut Teleinformatyki

Wprowadzenie do podstaw programowania AVR (na przykładzie mikrokontrolera ATmega 16 / 32)

Instytut Teleinformatyki

Programowanie mikrokontrolerów - laboratorium

LABORATORIUM. TIMERY w mikrokontrolerach Atmega16-32

LABORATORIUM. TIMERY w mikrokontrolerach Atmega16-32

2. PORTY WEJŚCIA/WYJŚCIA (I/O)

Systemy wbudowane. Uniwersytet Łódzki Wydział Fizyki i Informatyki Stosowanej. Witold Kozłowski

Opis procedur asemblera AVR

Oprogramowanie klawiatury matrycowej i alfanumerycznego wyświetlacza LCD

Wbudowane układy peryferyjne cz. 1 Wykład 7

Współpraca mikrokontrolera z wyświetlaczami: ciekłokrystalicznym i siedmiosegmentowym

AVR - Chapter 5. 류대우

SYSTEM PRZERWAŃ ATmega 32

E-TRONIX Sterownik Uniwersalny SU 1.2

DOKUMENTACJA. dot. Budowy i przebiegu konstrukcji linefollower-a. Data: MCHT2 Jakub Tomczyk Łukasz Pawelec Mateusz Wróbel

Funkcje standardowej biblioteki wejść-wyjść do wyświetlania i pobierania danych

Pracownia Transmisji Danych, Instytut Fizyki UMK, Toruń. Instrukcja do ćwiczenia nr 10. Transmisja szeregowa sieciami energetycznymi

Organizacja pamięci VRAM monitora znakowego. 1. Tryb pracy automatycznej

Immobilizer samochodowy otwierający dostęp poprzez kod czteroznakowy.

Mikrokontrolery w mechatronice. Wstępne uwagi

Instytut Teleinformatyki

Mikrokontrolery AVR techniczne aspekty programowania

Mateusz Skiba Jakub Szymaczek. LINEFOLLOWER WiX

Język C. Wykład 9: Mikrokontrolery cz.1. Łukasz Gaweł Chemia C pokój 307

Podstawy programowania w BASCOM BASIC AVR

Programowanie mikrokontrolerów AVR z rodziny ATmega.

2.1 Przesył danych między procesorem a tabelą zmiennych

Uniwersalny sterownik silnika krokowego z portem szeregowym RS232 z procesorem AT90S2313 na płycie E200. Zestaw do samodzielnego montażu.

XMEGA. Warsztaty CHIP Rok akademicki 2014/2015

Mikroprocesory i Mikrosterowniki Laboratorium

Komunikacja w mikrokontrolerach. Podstawy programowania. Wydział Elektroniki Mikrosystemów i Fotoniki dr inż. Piotr Markowski

Akademia Górniczo-Hutnicza w Krakowie Katedra Elektroniki

Instrukcja do ćwiczenia : Matryca komutacyjna

start Program mikroprocesorowego miernika mocy generowanej $crystal = deklaracja

Schemat blokowy architektury AVR

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory

Programator procesorów rodziny AVR AVR-T910

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów AVR

Płyta ewaluacyjna z mikrokontrolerem Atmega32. Autor Dariusz Wika

Porty wejścia/wyjścia w układach mikroprocesorowych i w mikrokontrolerach

Kod produktu: MP01611

Autonomiczny robot mobilny w kategorii linefollower MORPROF

Język C. Wykład 9: Mikrokontrolery cz.2. Łukasz Gaweł Chemia C pokój 307

Instrukcja integracji urządzenia na magistrali Modbus RTU. wersja 1.1

Sterownik diod RGB. Robert Budzioski

Instytut Teleinformatyki

AVR DRAGON. INSTRUKCJA OBSŁUGI (wersja 1.0)

Sterownik silnika krokowego. Aleksander Koreń

Komunikacja w mikrokontrolerach Laboratorium

PAMIĘĆ RAM. Rysunek 1. Blokowy schemat pamięci

Dokumentacja mikrokontrolera Atmega16 firmy Atmel

1.1. Pozycyjne systemy liczbowe

Programator ZL2PRG jest uniwersalnym programatorem ISP dla mikrokontrolerów, o budowie zbliżonej do STK200/300 (produkowany przez firmę Kanda).

Ćwiczenie 5 Zegar czasu rzeczywistego na mikrokontrolerze AT90S8515

Technika Mikroprocesorowa

f we DZIELNIKI I PODZIELNIKI CZĘSTOTLIWOŚCI Dzielnik częstotliwości: układ dający impuls na wyjściu co P impulsów na wejściu

LABORATORIUM - ELEKTRONIKA Układy mikroprocesorowe cz.2

Kod produktu: MP01611-ZK

Katedra Inżynierii Systemów Sterowania WEiA PG. Przemysłowe Sieci Informatyczne Laboratorium

Uczeń/Uczennica po zestawieniu połączeń zgłasza nauczycielowi gotowość do sprawdzenia układu i wszystkich połączeń.

1.2 Schemat blokowy oraz opis sygnałów wejściowych i wyjściowych

Programowanie mikrokontrolerów. 8 listopada 2007

Opis bezprzewodowego układu do pomiaru oporu elektrycznego skóry

Stanowisko laboratoryjne dla mikrokontrolera Atmega16 firmy Atmel

Centrala alarmowa ALOCK-1

Arytmetyka liczb binarnych

Listing_ $crystal = deklaracja

EGZAMIN MATURALNY Z INFORMATYKI

Transkrypt:

Mikrokontrolery AVR Wprowadzenie Komunikacja z otoczeniem mikrokontrolera Każdy z mikrokontrolerów posiada pewna liczbę wyprowadzeń cyfrowych które służą do wprowadzania i odbierania informacji z mikrokontrolera. Wyprowadzenia te umożliwiają komunikację z układami peryferyjnymi, innymi mikroprocesorami oraz służą do programowania układów. Wyprowadzenia nazywane są I/O (ang. In/Out) (wejścia/wyjścia). Dla przykładu układ ATmega8 ma 23 programowalne wyprowadzenia I/O, a mikrokontroler ATmega16 posiada aż 32 I/O. Linie wejść/wyjść podzielone zostały na porty.

Wszystkie linie programowalne I/O zostały pogrupowane w porty zawierające do 8 linii. Firma Atmel produkująca mikroprocesory AVR przyjęła następujące oznaczanie wyprowadzeń: pierwsza litera P to skrót od nazwy PORT, druga litera oznacza nazwę portu. Dla ATmega8 są to litery B, C i D. Cyfra występująca po literze portu oznacza bit wyprowadzenia tego portu i może zawierać się w granicach od 0 do 7. Wyprowadzenie ma oznaczenie PC5 oznacza to, że jest to 5 bit portu C. Nie każdy port ma 8 wyprowadzeń. Przykładowo port C posiada tylko 7 wyprowadzeń, a pozostałe pory B i D po 8. Dodatkowo linia PC6 nie jest normalnie dostępna jako I/O. Domyślnie znajduje się tam pin resetu. Mniejsze układy mają mniejsza ilość pinów Programowanie Podczas programowania podaje się literę portu i cyfrę dla określenia konkretnego wyprowadzenia. W programie można odwoływać się również do całego portu i wpisać do niego pewną liczbę lub odczytać jego stan i zapisać go do zmiennej. Za wszystkie ustawienia w mikrokontrolerze odpowiadają rejestry. W rejestrach znajdują się bity które mogą przyjmować stan 0 lub 1 (rejestr to tablica w której każdy z bitów to oddzielna komórka). Tak jest w przypadku linii I/O. Port jest rejestrem a konkretne linie są bitami tego rejestru. Poniżej przykład 3 rejestrów odpowiedzialnych za ustawienia fizycznych wyprowadzeń mikrokontrolera. DDRB DDRC DDRD rejestry kierunku PORTB PORTC PORTD rejestry wyjściowe PINB PINC PIND rejestry wejściowe

Bit numer bitu Read/Write Litera R (read) oznacza możliwość odczytu bitu, litera W (write) oznacza możliwość zapisu bitu Initial Value wartość domyślna bitu Przykład programowania wyprowadzanie liczb na zewnątrz Pierwszy z rejestrów PORTx (gdzie x to litera portu) odpowiedzialny jest za dane portu x. Do portu B wpisujemy wartość dziesiętną 94. Heksalne 5E Binarne 01011110 PORTB = 0x5E; Jak można zauważyć dodano przedrostek 0x określa on, że wartość podana jest w systemie heksalnym. Równoznaczny z poprzednią instrukcją będzie zapis: PORTB = 01011110; Ustawienie bitów na stan wysoki (które mają mieć wartość 1) PORTB = _BV(6) _BV(4) _BV(3) _BV(2) _BV(1); // ustaw bity 6,4,3,2,1 w rejestrze PORTB

Przykład programowania kierunek wejście/wyjście Rejestr DDRx (gdzie x to litera portu) określa czy wyprowadzenie I/O ma być wejściem lub wyjściem. Odpowiednie ustawienie bitów określa kierunek danych: 0 wejście (In) 1 wyjście (Out) Przykładowo by wyprowadzenia PB4, PB5 i PB7 miały służyć jako wyjścia a pozostałe jako wejścia rejestr DDRB w sposób podany poniżej DDRB = 10110000; // zapisz wartość 10110000 do rejestru DDRB Identyczną wartość można zapisać również w systemie szesnastkowym (heksalnym): DDRB = 0xB0; Można również użyć poleceń ustawiających poszczególne bity rejestru: DDRB = _BV(7) _BV(5) _BV(4); Efekt widać poniżej Przykład programowania wczytywanie liczby Do odczytu stanu któregoś z wejść mikrokontrolera korzysta się z rejestru PINx, (gdzie x to litera portu). W rejestrze PINx zapisane są binarnie fizyczne stany wybranego portu (1 - stan wysoki, 0 - stan niski). Wcześniej odpowiednio ustawiamy rejestr DDRx by wyprowadzenia na których sprawdzamy stan były wejściami (wartość 0). Poniżej przykład pobierający dane z portu B i zapisujący stan całego portu do zmiennej dane. dane = PINB; // zapisz stan rejestru PINB do zmiennej dane Konfiguracja portów

DDRx.n PORTx.n Px.n 0 0 wejście 0 1 wejście z podciągnięciem do VCC 1 X wyjście Konfiguracja równoległych portów we/wy mikrokontrolerów AVR

Program wyświetlanie diody LED W ramach wyświetlania możemy ustalić jaki sposób chcemy użyć. Czy wyświetlamy korzystając z wysokiego lub niskiego stanu. Wyświetlanie diod stanem wysokim Wyświetlanie diod stanem niskim Ustawienie wyjścia w stan wysoki Ustawienie wyjścia w stan niski Cały sposób, styl programowania jest jednakowy. Różnica polega na zapisaniu innego stanu na wyjściu. 1. Musimy ustalić kierunek danych. Ponieważ chcemy wyświetlić, to trzeba skierować je na zewnątrz. Trzeba użyć rejestru DDR. Wykorzystujemy nóżki rejestru D, więc będzie to DDRD. Wyjście to stan wysoki, więc na odpowiedni pin trzeba wysłać 1. DDRD = (1<<PD1); Dotyczy to obydwu wyjść DDRD = (1<<PD2); 2. Trzeba ustalić odpowiednią wartość na wyjściu 1 dla PD1 i 0 dla PD2. Wykorzystujemy tu wartości rejestru PORT, który odpowiada za wysłanie danych na zewnątrz Na PD1 wysyłamy stan wysoki PORTD = (1<<PD1); Na PD2 wysyłamy stan niski PORTD &= ~(1<<PD2);

Wyświetlanie diod stanem wysokim Wyświetlanie diod stanem niskim Ustawienie wyjścia w stan wysoki DDRD = (1<<PD1); PORTD = (1<<PD1); Ustawienie wyjścia w stan niski DDRD = (1<<PD2); PORTD &= ~(1<<PD2); Efektem jest świecąca się stale dioda LED. #define F_CPU 1000000L #include <avr/io.h> #include <util/delay.h> int main(void) { /* Początek nieskończonej pętli */ for(;;) { DDRD = (1<<PD1); //Wyjście stanu wysokiego PORTD = (1<<PD1); DDRD = (1<<PD2); //Wyjście stanu niskiego PORTD &= ~(1<<PD2); } }

#define F_CPU 1000000L #include <avr/io.h> #include <util/delay.h> int main(void) { /* Początek nieskończonej pętli */ // for(;;) { DDRD = (1<<PD1); //Wyjście stanu wysokiego PORTD = (1<<PD1); DDRD = (1<<PD2); //Wyjście stanu niskiego PORTD = (1<<PD2); _Delay_ms(500ms); //Czas opóźnienia PORTD &= ~(1<<PD2); PORTD &= ~(1<<PD1); _Delay_ms(500ms); } }