SYSTEM PRZERWAŃ ATmega 32

Podobne dokumenty
LABORATORIUM. TIMERY w mikrokontrolerach Atmega16-32

LABORATORIUM. TIMERY w mikrokontrolerach Atmega16-32

Komunikacja w mikrokontrolerach Laboratorium

Instytut Teleinformatyki

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

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

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

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

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

Programowanie mikrokontrolerów AVR z rodziny ATmega.

Przerwanie. Źródła przerwań

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

Programowanie mikrokontrolerów. 5 grudnia 2007

PROGRAMOWALNE SYSTEMY MECHATRONIKI

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

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

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

Dokumentacja mikrokontrolera Atmega16 firmy Atmel

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Podstawy Techniki Mikroprocesorowej Laboratorium

Układy czasowe / liczniki (timers/counters)

PRZETWORNIK ADC w mikrokontrolerach Atmega16-32

Stanowisko laboratoryjne dla mikrokontrolera Atmega16 firmy Atmel

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

Akademia Górniczo-Hutnicza w Krakowie Katedra Elektroniki

Wbudowane układy peryferyjne cz. 3 Wykład 9

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

Obsługa wyjść PWM w mikrokontrolerach Atmega16-32

XMEGA. Warsztaty CHIP Rok akademicki 2014/2015

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

Mikrokontrolery AVR Wprowadzenie

Metody obsługi zdarzeń

STEROWANIE DWUSTANOWE. Przykład 1 MIESZALNIK

Instytut Teleinformatyki

Układ transmisji szeregowej AVR

AGH Akademia Górniczo- Hutnicza w Krakowie Katedra Elektroniki WIET

Instytut Teleinformatyki

Układy czasowo-licznikowe w systemach mikroprocesorowych

Projekt na Systemy Wbudowane

Sterowanie multipleksowe 4-cyfrowego wyświetlacza siedmiosegmentowego w oparciu o system przerwao mikrokontrolera ATmega16 w języku Asembler

TECHNIKA MIKROPROCESOROWA

(Rysunek z książki T.Starecki. Mikokontrolery jednoukładowe rodziny 51. NOZOMI W-wa 1996)

Język C dla mikroprocesorów AVR Wykład 6

był w momencie wystąpienia zewnętrznego zdarzenia. Jest bardzo przydatna przy pomiarach częstotliwości. Pracę timera Timer1 kontrolują następujące

Sterowanie dwustanowe - algorytmy synchroniczne

Akademia Górniczo-Hutnicza w Krakowie Katedra Elektroniki

Przerwania, polling, timery - wykład 9

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

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Programowy emulator DS1990

ŚRODOWISKO PROTOTYPOWANIA SP AVR

SYSTEM PRZERWA Ń MCS 51

Timery w mikrokontrolerach STM32F3

Mikrokontroler AVR ATmega32 - wykład 9

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

Hardware mikrokontrolera X51

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

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

Programowanie mikrokontrolerów AVR

Społeczna Wyższa Szkoła Przedsiębiorczości i Zarządzania. Instrukcja ćwiczeń laboratoryjnych do przedmiotu Systemy Wbudowane

Wbudowane układy komunikacyjne cz. 1 Wykład 10

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

Kurs Elektroniki. Część 5 - Mikrokontrolery. 1/26

Mikroprocesory i Mikrosterowniki

Programowanie mikrokontrolerów AVR z rodziny ATmega.

Mikrokontrolery AVR ATmega

Instytut Teleinformatyki

Komunikacja w mikrokontrolerach Laboratorium

Wykład 4. Przegląd mikrokontrolerów 16-bit: - PIC24 - dspic - MSP430

Mikrokontrolery AVR ATmega

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

równoległe (w wersji 4-, 8- i 16-bitowej). Same wyświetlacze ze względu na budowę i możliwości możemy podzielić na dwie grupy:

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

Układy czasowo-licznikowe w systemach mikroprocesorowych

Aplikacje Systemów Wbudowanych

Politechnika Białostocka

Mikroprocesory i Mikrosterowniki Laboratorium

Instytut Teleinformatyki

Przerwania w systemie mikroprocesorowym. Obsługa urządzeo wejścia/wyjścia

Architektura mikrokontrolera MCS51

Zewnętrzne układy peryferyjne cz. 1 Wykład 12

Architektura mikrokontrolera MCS51

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

Wykład 2. Przegląd mikrokontrolerów 8-bit: -AVR -PIC

Expandery wejść MCP23S17 oraz MCP23017

Mikroprocesory i Mikrosterowniki

Adresowanie obiektów. Adresowanie bitów. Adresowanie bajtów i słów. Adresowanie bajtów i słów. Adresowanie timerów i liczników. Adresowanie timerów

2.1 Porównanie procesorów

Mikrokontrolery Xmega (4)

Inne układy peryferyjne AVR

Komunikacja w mikrokontrolerach Laboratorium

KOMUNIKACJA Z OTOCZENIEM MIKROKONTROLERA

2. Architektura mikrokontrolerów PIC16F8x... 13

Instrukcja do laboratorium Akademii ETI *

Programowanie mikrokontrolerów. 8 listopada 2007

Programowanie mikrokontrolerów - laboratorium

Podstawy systemów mikroprocesorowych

Wstęp Architektura... 13

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

Transkrypt:

Zachodniopomorski Uniwersytet Technologiczny WYDZIAŁ ELEKTRYCZNY Katedra Inżynierii Systemów, Sygnałów i Elektroniki LABORATORIUM TECHNIKA MIKROPROCESOROWA SYSTEM PRZERWAŃ ATmega 32 Opracował: mgr inż. Andrzej Biedka

W mikrokontrolerze Atmega 32 zastosowano wektoryzowany system przerwań. Tablica 3-1 zawiera listę wektorów. Lp Tablica 3-1. Zestawienie wektorów przerwań uc Atmega 32 Źródło przerwania Adres obsługi Priorytet 1 RESET Pin RESET, POR, Brown-out Reset, Watchdog Reset 0 najwyższy 2 INT0 zewnętrzne nr 0 0x002 3 INT1 zewnętrzne nr 1 0x004 4 INT2 zewnętrzne nr 2 0x006 5 TIMER2COMP zrównanie stanu rejestrów TCNT2 i OCR2 0x008 6 TIMER2OVF przepełnienie timera 2 0x00A 7 TIMER1CAPT zatrzaśnięcie zawartości timera 1 0x00C 8 TIMER1COMPA zrównanie stanu rejestrów TCNT1 i OCR1A 0x00E 9 TIMER1COMPB zrównanie stanu rejestrów TCNT1 i OCR1B 0x010 10 TIMER1OVF przepełnienie timera 1 0x012 11 TIMER0COMP zrównanie stanu rejestrów TCNT0 i OCR0 0x014 12 TIMER0OVF przepełnienie timera 0 0x016 13 SPI, STC Zakończenie transmisji SPI 0x018 14 USART, RXC Zakończenie odbioru znaku USART 0x01A 15 USART UDRE Zwolnienie bufora nadawczego 0x01C 16 USART, TXC Zakończenie nadawania znaku USART 0x01E 17 ADC Zakończenie przetwarzania A/C 0x020 18 EE_RDY Pamięć EEPROM gotowa 0x022 19 ANA_COMP Zmiana stanu komparatora 0x024 20 TWI Interfejs TWI 0x026 21 SPM_RDY Pamięć programu gotowa 0x028 najniższy Zezwolenie na przyjęcie przerwania wymaga ustawienia bitu zezwolenia globalnego I umieszczonego w rejestrze statusu SREG oraz bitów zezwoleń właściwych dla każdego ze źródeł. SREG I T H S V N Z C I - bit globalnego zezwolenia na przerwania W kompilatorze GCC zamiast ustawiania bitu I w rejestrze SREG można wywołać makro sei();

Bity zezwoleń na przerwania od timerów umieszczone są w rejestrze TIMSK: OCIE2 TOIE2 TICIE1 OCIE1A OCIE1B TOIE1 OCIE0 TOIE0 OCIE2 - zrównanie stanu rejestrów TCNT2 i OCR2 TOIE2 - przepełnienie timera 2 TICIE1 - zatrzaśnięcie zawartości timera 1 OCIE1A - zrównanie stanu rejestrów TCNT1 i OCR1A OCIE1B - zrównanie stanu rejestrów TCNT1 i OCR1B TOIE1 - przepełnienie timera 1 OCIE0 - zrównanie stanu rejestrów TCNT2 i OCR0 TOIE0 - przepełnienie timera 0 Bity zezwoleń na przerwania od sygnałów zewnętrznych umieszczone są w rejestrze GICR: INT1 INT0 INT2 - - - IVSEL IVCE INT1 INT0 INT2 - zezwolenie na przerwanie od INT1 - zezwolenie na przerwanie od INT0 - zezwolenie na przerwanie od INT2 Flagi zgłoszenia przerwań znajdują się w rejestrze GIFR: INTF1 INTF0 INTF2 - - - - - INTF1 INTF0 INTF2 - zgłoszenie przerwania od INT1 - zgłoszenie przerwania od INT0 - zgłoszenie przerwania od INT2 Flagi zgłoszenia przerwania są kasowane automatycznie w funkcji obsługi przerwania. Można też flagę skasować wpisując stan '1' na jej pozycję. W trybie zgłoszenia przerwania poziomem flaga jest zawsze kasowana. Wejścia INT0, INT1 mogą wywoływać przerwania zależnie od zmian stanu sygnału.

Bity sterujące sposobem reakcji na zmianę sygnału umieszczone są w rejestrze MCUCR: SE SM2 SM1 SM0 ISC11 ISC10 ISC01 ISC00 ISC11 ISC01 ISC10 ISC00 Opis 0 0 Niski poziom sygnału INTx wywołuje żądanie obsługi przerwania 0 1 Zmiana stanu na wejściu INTx wywołuje żądanie obsługi przerwania 1 0 Opadające zbocze sygnału INTx wywołuje żądanie obsługi przerwania 1 1 Narastające zbocze sygnału INTx wywołuje żądanie obsługi przerwania /* Program generatora impulsów o częstotliwości 3Hz, z wykorzystaniem przerwań */ #include <avr/io.h> #include <avr/interrupt.h> #define PortLED PORTB #define Czas166ms 65536 2604 // okres przebiegu = 333,333ms, 1/2 okresu = 166,667ms int main(void) { DDRB = 0xFF; // PORTB ustaw na wyjscie TCCR1B = (1 << CS12) (1 << CS10); // preskaler = 1024, tryb Normal TCNT1 = Czas166ms; TIMSK = (1 << TOIE1); // odblokowanie przerwania od przepełnienia timera 1 sei(); // globalne odblokowanie przerwan while(1); } ISR(TIMER1_OVF_vect) { TCNT1 = Czas166ms; // odtworzenie czasu timera PortLED ^=0xF; // neguj wybrane bity } Zadania: 1. Zmodyfikować powyższy program wykorzystując timer 0 pracujący w trybie CTC. 2. Napisać program generatora o założonych parametrach wykorzystujący dwa timery. 3. Napisać program sterowania jasnością czterech sąsiednich diod LED metodą PWM, wykorzystując timer pracujący w trybie Fast PWM oraz przerwanie od sygnału zewnętrznego. Ustalić cztery poziomy jasności zmieniane cyklicznie co 0,50 sekundy. Dla oceny zmian jasności cztery pozostałe diody powinny być stale załączone.

Tablica 3-2. Zestawienie nazw wybranych wektorów przerwań uc Atmega 32 stosowanych w kompilatorze AVR-GCC Lp Źródło przerwania Nazwa AVR-GCC 1 INT0 zewnętrzne nr 0 INT0_vect 2 INT1 zewnętrzne nr 1 INT1_vect 3 INT2 zewnętrzne nr 2 INT2_vect 4 TIMER2COMP zrównanie stanu rejestrów TCNT2 i OCR2 TIMER2_COMP_vect 5 TIMER2OVF przepełnienie timera 2 TIMER2_OVF_vect 6 TIMER1CAPT zatrzaśnięcie zawartości timera 1 TIMER1_CAPT_vect 7 TIMER1COMPA zrównanie stanu rejestrów TCNT1 i OCR1A TIMER1_COMPA_vect 8 TIMER1COMPB zrównanie stanu rejestrów TCNT1 i OCR1B TIMER1_COMPB_vect 9 TIMER1OVF przepełnienie timera 1 TIMER1_OVF_vect 10 TIMER0COMP zrównanie stanu rejestrów TCNT0 i OCR0 TIMER0_COMP_vect 11 TIMER0OVF przepełnienie timera 0 TIMER0_OVF_vect 12 USART, RXC Zakończenie odbioru znaku USART USART_RXC_vect 13 USART UDRE Zwolnienie bufora nadawczego USART_UDRE_vect 14 USART, TXC Zakończenie nadawania znaku USART USART_TXC_vect 15 ADC Zakończenie przetwarzania A/C ADC_vec 16 ANA_COMP Zmiana stanu komparatora ANA_COMP_vect