Instytut Teleinformatyki

Podobne dokumenty
Instytut Teleinformatyki

Instytut Teleinformatyki

TECHNIKA MIKROPROCESOROWA

Instytut Teleinformatyki

SYSTEM PRZERWAŃ ATmega 32

Programowanie mikrokontrolerów AVR z rodziny ATmega.

Instytut Teleinformatyki

Instytut Teleinformatyki

Komunikacja w mikrokontrolerach Laboratorium

Programowanie mikrokontrolerów. 15 stycznia 2008

Instytut Teleinformatyki

Układ transmisji szeregowej AVR

Podstawy systemów mikroprocesorowych. Interfejs USART. Interfejsy szeregowe w mikrokontrolerach AVR

Mikroprocesory i mikrosterowniki Wydział Elektroniki Mikrosystemów i Fotoniki Politechniki Wrocławskiej Ćwiczenie nr 4

Programowanie mikrokontrolerów. 5 grudnia 2007

Komunikacja w mikrokontrolerach Laboratorium

Instytut Teleinformatyki

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania. Sterowniki Urządzeń Mechatronicznych laboratorium. Ćw. 3: Timer v1.0

Programowanie mikrokontrolerów AVR z rodziny ATmega.

Instytut Teleinformatyki

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

PROGRAMOWALNE SYSTEMY MECHATRONIKI

Instytut Teleinformatyki

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

ĆWICZENIE 5. TEMAT: OBSŁUGA PORTU SZEREGOWEGO W PAKIECIE KEILuVISON WYSYŁANIE PORTEM SZEREGOWYM

4 Transmisja szeregowa, obsługa wyświetlacza LCD.

LABORATORIUM. TIMERY w mikrokontrolerach Atmega16-32

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

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

LABORATORIUM. TIMERY w mikrokontrolerach Atmega16-32

Instytut Teleinformatyki

4 Transmisja szeregowa na przykładzie komunikacji dwukierunkowej z komputerem PC, obsługa wyświetlacza LCD.

Hardware mikrokontrolera X51

Wbudowane układy peryferyjne cz. 2 Wykład 8

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Instytut Teleinformatyki

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

Instytut Teleinformatyki

Instytut Teleinformatyki

Przerwanie. Źródła przerwań

Mikrokontrolery AVR Wprowadzenie

Start Bity Bit Stop 1 Bit Par Rys. 1

Komunikacja szeregowa UART:

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

Mikroprocesory i Mikrosterowniki Liczniki Timer Counter T/C0, T/C1, T/C2

Instytut Teleinformatyki

Instytut Teleinformatyki

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

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Podstawy Techniki Mikroprocesorowej Laboratorium

Spis tre 1. Przedstawienie standardu Opis sprz towy AVR+MAX Wykorzystanie USARTa Przykładowe programy obsługi w j

Uproszczony schemat blokowy zespołu 8-bitowego timera przedstawiono na rys.1

PRZETWORNIK ADC w mikrokontrolerach Atmega16-32

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

Instytut Teleinformatyki

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

Programowanie mikrokontrolerów AVR z rodziny ATmega.

Programowanie Mikrokontrolerów. Komunikacja szeregowa w standardzie EIA232 z wykorzystaniem modułu USART.

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

XMEGA. Warsztaty CHIP Rok akademicki 2014/2015

Układy czasowe / liczniki (timers/counters)

MIKROPROCESORY architektura i programowanie

długo. W tym celu w czasie przeczesywania if (key) {

Mikrokontrolery AVR ATmega

Schemat blokowy architektury AVR

Mikrokontrolery AVR ATmega

Technika mikroprocesorowa materiały do laboratorium. Autor: Dorota Rabczuk

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

TECHNIKA MIKROPROCESOROWA

MIKROPROCESORY architektura i programowanie

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

Wydział Elektryczny. Katedra Telekomunikacji i Aparatury Elektronicznej. Konstrukcje i Technologie w Aparaturze Elektronicznej.

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

Projekt na Systemy Wbudowane

Sterowanie dwustanowe - algorytmy synchroniczne

Technika Mikroprocesorowa Laboratorium 5 Obsługa klawiatury

Sterownik silnika krokowego. Aleksander Koreń

STEROWANIE DWUSTANOWE. Przykład 1 MIESZALNIK

Programowanie mikrokontrolerów. 3 stycznia 2008

Instrukcja do laboratorium Akademii ETI *

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

Opis procedur asemblera AVR

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

Zastosowanie procesorów AVR firmy ATMEL w cyfrowych pomiarach częstotliwości

Szkolenia specjalistyczne

Architektura mikrokontrolera MCS51

SYSTEMY CZASU RZECZYWISTEGO (SCR)

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Architektura mikrokontrolera MCS51

Sprawozdanie koocowe Systemy wbudowane. Projekt własny - na układzie Atmega32: Kompas

Uniwersalny asynchroniczny. UART Universal Asynchronous Receier- Transmiter

Czujnik zbliżeniowy indukcyjny

Komputerowe Sterowanie w Elektronice Przemysłowej

Akademia Górniczo-Hutnicza w Krakowie Katedra Elektroniki

Programowanie w językach asemblera i C

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Przetwornik ADC procesora sygnałowego F/C240 i DAC C240 EVM

Omówimy przykłady 8-mio bitowego licznika z wyposażenia ADuC812 (CISC 51) oraz mikrokontrolera ATMega128 należącego do rodziny AVR.

INSTYTUT CYBERNETYKI TECHNICZNEJ POLITECHNIKA WROCŁAWSKA. Wizualizacja danych sensorycznych. Tarcza dla wskaźnika laserowego IRb-1400

1. Struktura urządzeń z wykorzystaniem mikrokontrolerów...13

Ćwiczenie 7 Matryca RGB

Transkrypt:

Instytut Teleinformatyki Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska Mikroprocesory i Mikrokontrolery System przerwań laboratorium: 11 autorzy: dr hab. Zbisław Tabor, prof. PK mgr inż. Paweł Pławiak Kraków, 2015

11. Mikroprocesory i Mikrokontrolery System przerwań 2 Spis treści Spis treści... 2 1. Wiadomości wstępne... 3 1.1. Transmisja szeregowa... 3 1.2. Przerwania zewnętrzne... 5 1.3. Timery... 6 1.4. Obsługa przerwań... 6 1.5. Zagadnienia do przygotowania... 7 2. Przebieg laboratorium... 8 2.1. Zadanie 1. Na ocenę 3.0 (dst)... 8 2.2. Zadanie 2. Na ocenę 4.0 (db)... 8 2.3. Zadanie 3. Na ocenę 5.0 (bdb)... 8

11. Mikroprocesory i Mikrokontrolery System przerwań 3 1. Wiadomości wstępne Pierwsza część niniejszej instrukcji zawiera podstawowe wiadomości teoretyczne dotyczące omawianego tematu. Poznanie tych wiadomości umożliwi prawidłowe zrealizowanie praktycznej części laboratorium. 1.1. Transmisja szeregowa Rejestrami modułu USART są UDR, UCSRA, UCSRB, UCSRC, UBRRH i UBRRL. Zgodnie z notą katalogową mikrokontrolera ATmega32, szybkość transmisji BOUD w zwykłym asynchronicznym trybie jest dana wzorem: FOSC BAUD = ( 16 ( UBRR + 1)) gdzie UBRR jest 16-bitową liczbą, której bardziej znaczący bajt jest zapisany w rejestrze UBRRH, a mniej znaczący - w rejestrze UBRRL. Konfigurację transmisji szeregowej rozpoczyna wyznaczenie dla zadanej prędkości transmisji żądanej zawartości rejestrów UBRRH i UBRRL. Prędkość transmisji może być podwojona poprzez ustawienie bitu U2X w rejestrze UCSRA (wówczas w mianowniku powyższego wzoru należy zastąpić liczbę 16 liczbą 8). UDR jest rejestrem, z którego pobiera się przychodzące dane i do którego wpisuje się dane przeznaczone do transmisji. UCSRA jest rejestrem, pozwalającym kontrolować stan transmisji lub błędy transmisji: ustawiony bit UDRE tego rejestru oznacza gotowość modułu USART do transmisji danych, a ustawiony bit RXC oznacza bufor odbiorczy zawierający dane do odczytu. UCSRB jest rejestrem, którego trzy najstarsze bity (RXCIE, TXCIE, UDRIE) pozwalają włączyć/ wyłączyć przerwania od transmisji szeregowej, bity RXEN i TXEN właczają moduły odbiorczy i nadawczy, a pozostałe bity - łącznie z bitami rejestru UCSRC konfigurują tryb transmisji (ilość bitów danych, parzystość, ilość bitów stopu).

11. Mikroprocesory i Mikrokontrolery System przerwań 4 Listing 1 Transmisja szeregowa w trybie odpytywania (F_CPU należy ustawić na wartość 1MHz, fuse bit CKSEL/SUT musi być również ustawiony na 1MHz) //****************************************************************************** // // Połączenia: // RxD (con7) - PD0 (con18) // TxD (con7) - PD1 (con18) // //****************************************************************************** #include <avr/io.h> #include <util/delay.h> #define BAUD(x) (((F_CPU/16)/x)) void USART_Init(int baud); void USART_PutChar(unsigned char data); unsigned char USART_GetChar(void); void USART_GetString(char * s); void USART_PutString(char * s); int main(void) char Message[18]; DDRD = 0xFF; USART_Init(BAUD(1200)); do USART_GetString(Message); USART_PutString(Message); while(1); return 0; void USART_Init(int baud) UBRRH = (unsigned char)(baud>>8); UBRRL = (unsigned char)baud; UCSRB = (1<<RXEN) (1<<TXEN); UCSRC = (1<<URSEL) (3<<UCSZ0); void USART_PutChar(unsigned char data)

11. Mikroprocesory i Mikrokontrolery System przerwań 5 while (!(UCSRA & (1 << UDRE))); UDR = data; unsigned char USART_GetChar(void) while (!(UCSRA & (1 << RXC))); return UDR; void USART_PutString(char * s) while(*s) USART_PutChar(*s++); void USART_GetString(char * s) char c; do c = USART_GetChar(); USART_PutChar(c); if(c=='\b') // if backspace s--; else *s++ = c; if(c == '\r') // if CR *s = 0; while(c!= '\r'); 1.2. Przerwania zewnętrzne Przerwania zewnętrzne są kontrolowane przez dwa rejestry: MCUCR, ustawiający zdarzenie wyzwalające przerwanie (opadające zbocze, narastające zbocze, zmiana, niski poziom) i GICR, którego ustawione bity odblokowują przerwania zewnętrzne. Odblokowane przerwanie INT0 będzie wyzwalane przy zmianach na wyjściu PD2 (zgodnie z notą katalogową, która określa taką alternatywną funkcję wyjścia PD2) - przerwanie można będzie zatem wyzwalać na przykład po podłączeniu klawisza do PD2. W pewnych sytuacjach wartość wpisaną do rejestru GICR warto powtórzyć w rejestrze GIFR.

11. Mikroprocesory i Mikrokontrolery System przerwań 6 1.3. Timery Mikrokontrolery ATmega32 są wyposażone w 2 timery 8-bitowe i jeden 16-bitowy. Dokładny opis rejestrów sterujących pracą timetów można jak zwykle znaleźć w nocie katalogowej - poniżej opisane są (po części) rejestry sterujące pracą Timera0. Za konfigurację Timera0 jest odpowiedzialny rejestr TCCR0. Bity WGM00 i WGM01 kontrolują metodę odliczania licznika. W zwykłym trybie (oba bity wyczyszczone) licznik jest zerowany po przepełnieniu. Ustawiony bit WGM1 powoduje zerowanie licznika jeśli odliczona w liczniku wartość jest równa wartości wpisanej w rejestrze OCR0. Aktualna wartość licznika jest zapisana w rejestrze TCNT0. Trzy najmłodsze bity rejestru TCCR0 (CS00, CS01, CS02) kontrolują szybkość odliczania timera, a jeśli są wyczyszczone - timer jest zatrzymany i nie odlicza. Inne ustawienia (nota katalogowa, str. 82) powodują, że timer odlicza z częstotliwością, równą częstotliwości oscylatora, podzielonej przez preskaler (liczba 1, 8, 64, 256 lub 1024, w zależności od ustawienia bitów). Przerwania od licznika odblokowuje się, ustawiając bity rejestru TIMSK: bit TOIE0 odblokowuje przerwanie od przepełnienia, a bit OCIE0 - od porównania z rejestrem OCR0. 1.4. Obsługa przerwań Obsługa przerwań mikroprocesora ATmega32 jest dość prosta. Przede wszystkim należy dołączyć do projektu plik nagłówkowy interrupt.h: #include <avr/interrupt.h> W części kodu, inicjującej mikrokontroler należy ustawić globalne zezwolenie na przerwania, ustawiając najstarszy bit rejestru SREG lub wykonując instrukcję sei(). Globalną blokadę przerwań uzyskuje się czyszcząc w.w. bit lub wykonując instrukcję cli(). Dla każdego aktywowanego przerwania należy zaimplementować procedurę jego obsługi. Implementacja ma postać: ISR(nazwa_przerwania) //instukcje wykonywane w trybie przerwania Nazwa przerwania to np.: USART_RXC_vect dla przerwania RXC modułu UART, TIMER0_COMP_vect dla przerwania dla trybu CTC Timera0 INT0_vect dla przerwania INT0

11. Mikroprocesory i Mikrokontrolery System przerwań 7 Nazwy przerwań, podane w pliku iom32.h w *\AVR Toolchain\avr\include\avr\ są skojarzone z nazwami źródeł przerwań, podanymi w dokumentacji mikrokontrolera (str. 44). 1.5. Zagadnienia do przygotowania Przed przystąpieniem do realizacji laboratorium należy zapoznać się z zagadnieniami dotyczącymi: o mikrokontrolera AVR ATmega32 o zestawu ZL15AVR o transmisji szeregowej o systemu przerwań Literatura: [1] Rafał Baranowski, Mikrokontrolery AVR ATmega w praktyce [2] Tomasz Francuz, Język C dla mikrokontrolerów AVD od podstaw do zaawansowanych aplikacji [3] Nota katalogowa mikrokontrolera http://www.atmel.com/images/doc2503.pdf [4] Dokumentacja zestawu ewaluacyjnego ZL15AVR http://dl.btc.pl/kamami_wa/zl15avr.pdf [5] Instrukcja do poprzednich ćwiczeń laboratoryjnych

11. Mikroprocesory i Mikrokontrolery System przerwań 8 2. Przebieg laboratorium Druga część instrukcji zawiera zadania do praktycznej realizacji, które demonstrują zastosowanie technik z omawianego zagadnienia. 2.1. Zadanie 1. Na ocenę 3.0 (dst) Proszę napisać program obsługujący przerwanie INT0: w głównej pętli zapalane są po kolei diody, po wywołaniu przerwania wszystkie diody mrugają kilkukrotnie po czym program przechodzi do przerwanego odliczania. 2.2. Zadanie 2. Na ocenę 4.0 (db) Proszę napisać program odliczający sekundy na wyświetlaczu 7-segmentowym. Program ma korzystać z przerwań od Timera0. 2.3. Zadanie 3. Na ocenę 5.0 (bdb) Proszę napisać program, startujący i zatrzymujący odliczanie sekund na wyświetlaczu 7-segmentowym z wykorzystaniem klawiatury PC - program ma korzystać z przerwań od modułu transmisji szeregowej.