Przerwanie. Źródła przerwań

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

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

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

Programowanie mikrokontrolerów. 5 grudnia 2007

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

SYSTEM PRZERWAŃ ATmega 32

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

LABORATORIUM. TIMERY w mikrokontrolerach Atmega16-32

LABORATORIUM. TIMERY w mikrokontrolerach Atmega16-32

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

Podstawy Techniki Mikroprocesorowej Laboratorium

Układy czasowe / liczniki (timers/counters)

Metody obsługi zdarzeń

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

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

Przerwania, polling, timery - wykład 9

Programowanie mikrokontrolerów AVR z rodziny ATmega.

Dokumentacja mikrokontrolera Atmega16 firmy Atmel

Instytut Teleinformatyki

Układy czasowo-licznikowe w systemach mikroprocesorowych

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

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Akademia Górniczo-Hutnicza w Krakowie Katedra Elektroniki

PROGRAMOWALNE SYSTEMY MECHATRONIKI

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

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:

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

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

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

Układy czasowo-licznikowe w systemach mikroprocesorowych

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Programowanie mikrokontrolerów. 3 stycznia 2008

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

LICZNIKI Liczniki scalone serii 749x

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

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

Technika Mikroprocesorowa Laboratorium 5 Obsługa klawiatury

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

Magistrala I 2 C. Podstawy systemów mikroprocesorowych. Wykład nr 5 Interfejsy szeregowe c.d.

Politechnika Białostocka

Komunikacja w mikrokontrolerach Laboratorium

Stanowisko laboratoryjne dla mikrokontrolera Atmega16 firmy Atmel

Wydział Elektryczny. Katedra Automatyki i Elektroniki. Instrukcja do ćwiczeń laboratoryjnych z przedmiotu: SYSTEMY CYFROWE 1

LOW ENERGY TIMER, BURTC

Podstawy systemów mikroprocesorowych

Akademia Górniczo-Hutnicza w Krakowie Katedra Elektroniki

Hardware mikrokontrolera X51

Wstęp: Interfejs portu równoległego 6821 i portu szeregowego 6850 firmy Motorola

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Instytut Teleinformatyki

WYKORZYSTANIE WEWNĘTRZNYCH GENERATORÓW RC DO TAKTOWANIA MIKROKONTROLERÓW AVR

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

Programowany układ czasowy

Język FBD w systemie Concept

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

Instytut Teleinformatyki

XMEGA. Warsztaty CHIP Rok akademicki 2014/2015

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

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

Licznik rewersyjny MD100 rev. 2.48

Programowany układ czasowy APSC

2. Architektura mikrokontrolerów PIC16F8x... 13

Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2

Mikroprocesory i Mikrosterowniki

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

uniwersalnych 1. Klasyfikacja liczników w układach STM32F10x 2. Konfiguracja liczników do realizacji wybranych zadań 2.

Programowanie mikrokontrolerów. 8 listopada 2007

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

ad a) Konfiguracja licznika T1 Niech nasz program składa się z dwóch fragmentów kodu: inicjacja licznika T1 pętla główna

Wykład 12. Przetwornik ADC

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

Mikroprocesory i Mikrosterowniki

Struktura i działanie jednostki centralnej

Mikrokontrolery AVR Wprowadzenie

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

Część I - Sterownik przerwań 8259A i zegar/licznik 8253

STEROWANIE DWUSTANOWE. Przykład 1 MIESZALNIK

MIKROPROCESORY architektura i programowanie

PRZETWORNIK ADC w mikrokontrolerach Atmega16-32

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

Mikrokontrolery Xmega (4)

Organizacja typowego mikroprocesora

Technika mikroprocesorowa I Wykład 2

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

1. Cel ćwiczenia. 2. Podłączenia urządzeń zewnętrznych w sterowniku VersaMax Micro

Kurs Zaawansowany S7. Spis treści. Dzień 1

STEROWANIE MASZYN I URZĄDZEŃ I. Laboratorium. 4. Przekaźniki czasowe

Inne układy peryferyjne AVR

Elektronika samochodowa (Kod: ES1C )

Programowanie mikrokontrolerów 2.0

ŚRODOWISKO PROTOTYPOWANIA SP AVR

TRD-MINI COMBO. Uniwersalny moduł czytnika transponderów UNIQUE - wersja OEM. Podstawowe cechy :

INSTRUKCJA OBSŁUGI URZĄDZENIA: PAR-FL32

organizacja procesora 8086

Programowanie mikrokontrolerów 2.0

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

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

MIKROPROCESORY architektura i programowanie

1. Porty wejścia wyjścia (I/O)

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

Transkrypt:

Podstawy systemów mikroprocesorowych Wykład nr 3 Przerwania i liczniki dr Piotr Fronczak http://www.if.pw.edu.pl/~agatka/psm.html fronczak@if.pw.edu.pl Przerwanie Warunek lub zdarzenie, które przerywa normalny ciąg instrukcji w programie Przewanie wywołuje między instrukcjami skok do procedury obsługi przerwania Gdy procedura obsługi przerwania kończy się, wznawiany jest normalny ciąg instrukcji w programie Pokój 6GF Źródła przerwań Przerwania dzielimy w ogólności na wewnętrzne lub zewnętrzne Programowe lub sprzętowe Przerwanie zewnętrzne jest wywoływane przez urządzenie/układ poza mikrokontrolerem. Przerwanie wewnętrzne jest wywoływane przez jeden z podukładów mikrokontrolera Źródła przerwań Przerwanie sprzętowe zachodzi w wyniku zmiany stanu jednego z układów fizycznych Przerwanie programowe zachodzi w wyniku wykonania instrukcji programu

System przerwań w mikrokontrolerze AVR ATMega6 reaguje na róŝnych rodzajów przerwań Przerwania są numerowane zgodnie z ich priorytetem od do Przerwanie RESET ma numer KaŜde przerwanie powoduje skok do specyficznego dla niego adresu w pamięci programu Procedura przerwania RESET ma adres $ Wektory przerwań Procedura przerwania k jest umieszczona pod adresem (k-) w pamięci programu Adres $ przerwanie RESET Adres $ przerwanie zewnętrzne Adres $4 przerwanie zewnętrzne PoniewaŜ jest miejsce tylko na jedną lub dwie instrukcje, procedura przerwania rozpoczyna się od skoku w inne miejsce pamięci programu, gdzie znajduje się reszta kodu. Tablica wektorów przerwań Tutaj skan prorgamu Włączanie przerwań KaŜde potencjalne źródło przerwań moŝna indywidualnie włączać i wyłączać Wyjątek przerwanie RESET nie moŝna wyłączyć By przerwania mogły działać, trzeba ustawić globalny bit przerwań w rejestrze SREG Przerwanie RESET zachodzi niezaleŝnie od ustawienia tego bitu.

Działanie przerwań Powrót z procedury przerwania JeŜeli Globalny bit przerwań jest ustawiony ORAZ bit konkretnego przerwania jest ustawiony ORAZ zaszedł warunek przerwania To wystapi przerwanie Co się właściwie dzieje? Po zakończeniu aktualnej instrukcji, Aktualna wartość licznika programu PC odkładana jest na stos Kasowany jest globalny bit przerwań Właściwy adres procedury obsługi przerwania jest umieszczany w liczniku programu Po zakończeniu procedury obsługi przerwania Adres ze stosu jest umieszczany w liczniku programu Ustawiany jest globalny bit przerwań To powoduje kontynuację uprzednio przerwanego programu Przynajmniej jedna instrukcja zostanie wykonana zanim nastąpi inne przerwanie Przerwania zewnętrzne Konfiguracja przerwań zewnętrznych ATMega6 reaguje na 4 róŝne przerwania zewnętrzne sygnały wprowadzone na odpowiednie wejścia mikrokontrolera RESET (pin 9) INT (pin 6 PD) INT (pin 7 PD3) INT (pin 3 PB3) int reset int int Wyzwalane poziomem Gdy stan wejścia jest niski (logiczne ) Wyzwalane zboczem Stan wejścia zmienił się Zboczem opadającym (z do ) Zboczem rosnącym (z do )

MCUCR (MCU Control Register) MCUCR MCU Control Register 7 6 5 4 3 ISC ISC ISC ISC ISC Interrupt Sense Control bits INT INT Wyzwalanie poziomem Procesor próbkuje poziomy na pinach INT i INT w kaŝdym cyklu zegara Impulsy krótsze niŝ jeden cykl mogą być niezauwaŝone Przerwanie niskim poziomem nastąpi tylko, gdy niski stan na wejściu będzie po zakończeniu aktualnie wykonywanej instrukcji MCUCSR rejestr kontroli i statusu mikrokontrolera (Control and Status Register) GICR - główny rejestr kontroli przerwań (General Interrupt Control Register) MCUCSR MCU Control and Status Register 7 6 5 4 3 Tu włączamy przerwania zewnętrzne ISC INT Jedyne moŝliwości sposobu przerwań INT zbocze opadające zbocze rosnące GICR General Interrupt Control Register 7 6 5 4 3 INT INT INT

GIFR główny rejestr flag przerwań (General Interrupt Flag Register) GICR General Interrupt Flag Register 7 6 5 4 3 INTF INTF INTF Ustawiona flaga () oznacza, Ŝe wystąpiło Ŝądanie przerwania przez urządzenie zewnętrzne. Te flagi uŝywane są tylko dla przerwań zboczem. Gdy mikrokontroler przechodzi do procedury obsługi, następuje zerowanie znacznika. Gdy nie korzystamy z przerwań, flagi nadal mogą być ustawiane. Choć samo Ŝądanie jest ingorowane, to moŝemy wykorzystać tę informację w programie (odpytywanie pooling). Zerowanie trzeba wykonać manualnie (UWAGA: PRZEZ WPISANIE!!!!). Przerwania programowe Jeśli piny przerwań zewnętrznych są skonfigurowane jako wyjścia, moŝemy wpisać do nich i programowo. To moŝe wyzwolić przerwania zgodnie z ustawieniami dla przerwań zewnętrznych. Liczniki (timers/counters) 8-bitowy licznik W mikrokontrolerze ATMega6 dostępne są trzy moduły liczników (timerów), dwa 8-bitowe i jeden 6-bitowy. Oprócz tych istnieje takŝe specjalizowany licznik tzw. Watchdog Timer. Stan kaŝdego licznika jest przechowywany w odpowiednim rejestrze Licznik moŝe być taktowany zewnętrznym lub wewnętrznym sygnałem zegarowym. Licznik moŝe stanowićźródło przerwań (przepełnienie, zrównanie) Jednostka zliczająca: Główna częścią licznika jest 8-bitowa programowalna dwukierunkowa jednostka logiczna. W zaleŝności od trybu pracy licznik jest zwiększany, zmniejszany lub zerowany w kaŝdym cyklu zegara (clktn). Bit przepełnienia (TOVn) moŝe być uŝyty do generowania przerwań. Sygnał zegara zewnętrznego

Zdarzenia licznika Przekroczenie zakresu (overflow) Przekroczenie zakresu występuje, gdy zliczana wartość przekracza xff i staje się równa x Osiągnięcie wartości zadanej (compare match) Gdy wartość licznika równa jest zawartości odpowiedniego rejestru specjalnego Komparator (compare unit) Wyjście rejestru komparatora (OCRn) jest stale porównywane z zawartością licznika. Wynik porównania moŝe być uŝyty przez generator przebiegu do wytwarzania PWM lub sygnału o zmiennej częstotliwości na wyjściu porównania (OCn). Wynik porównania będzie równieŝ ustawiał Bit Porównania (OCFn), który moŝe być uŝyty do wytwarzania przerwania (od porównania). Wyjście na pin Odpytywanie liczników (pooling) Stan licznika moŝna badać w programie głównym poprzez tzw. pooling Odczyt flag w rejestrze TIFR (Timer Interrupt Flag Register) Przekroczenie zakresu lub osiągnięcie wartości zadanej zmieniają stan odpowiednich bitów w rejestrze TIFR TOVn oraz OCFn (n=,, lub ) Licznik (6-bitowy) ma dwa rejestry porównań OCR: A oraz B Automatyczne funkcje liczników Liczniki i (8-bitowe) moŝna skonfigurować tak, by automatycznie kasowały, ustawiały, lub odwracały stan odpowiednich wyjść mikrokontrolera, gdy nastąpi przyrównanie do rejestru OCRn Nie wymaga to czasu obliczeniowego CPU ani obsługi przerwania wszystko na poziomie sprzętowym Odpowiedni pin OCnx musi być ustawiony jako wyjście. Normalne działanie tego pinu jest niemoŝliwe OC (PB3) OCA (PD5) OC (PD7) OCB (PD4)

Źródła zegarowe liczników Liczniki do zliczania mogą wykorzystać zegar wewnętrzny lub zewnętrzny sygnał zegarowy. Częstotliwość zegara wewnętrznego moŝe być zredukowana (preskalowana), dzięki czemu liczniki są taktowane wolniej MoŜliwy podział częstotliwości przez 8, 64, 56, 4 Timer umoŝliwia równieŝ preskalowanie sygnału zewnętrznego. 7 FOC 6 Rejestr kontrolny licznika (TCCRO Timer/Counter Control Register) WGMO 5 COM 4 COM 3 WGM CS bity 6,3 WGM: rodzaje generowanych przebiegów: bity te kontrolują sposób zliczania licznika: wartość maksymalną do której dąŝy licznik i rodzaj wytwarzanego przebiegu. Tryby pracy licznika: zwykły, zerowanie licznika podczas porównania i dwa rodzaje PWM (modulacji szerokości impulsu). CS CS Rejestr kontrolny licznika (TCCRO Timer/Counter Control Register) Rejestr kontrolny licznika (TCCRO Timer/Counter Control Register) 7 6 5 4 3 7 6 5 4 3 FOC WGMO COM COM WGM CS CS CS FOC WGMO COM COM WGM CS CS CS bity 5, 4 COM: rodzaj wyjścia dla trybu porównania określają zachowanie się wyjścia komparatora licznika (końcówka OC). JeŜeli jeden z bitów lub oba bity są ustawione to wyjście układu porównującego w liczniku zostaje dołączone do końcówki portu I/O. Rejestr kierunku portu (DDR) musi ustawić port jako wyjście. Gdy OC jest dołączone do końcówek portu, funkcje bitów COM: zaleŝą od trybu pracy licznika (czyli od ustawienia bitów WGM:). bity : CS: wybór sygnału zegarowego: te trzy bity decydują o źródle sygnału zegarowego dla licznika TC. JeŜeli ustawione jest zewnętrzne źródło zegara dla licznika TC, licznik będzie mógł być napędzany nawet jeŝeli port ustawiony jest jako wyjście. UmoŜliwia to programowe taktowanie licznika (przez zmianę stanu końcówki portu).

Rejestry TCNT i OCR Przerwania licznika W kaŝdej chwili stan licznika moŝna odczytać (albo zapisać) w rejestrze TCNT. Modifikacja w czasie pracy licznika nie jest wskazana. TIMSK - Timer/Counter Interrupt Mask TIMSK Timer/Counter Interrupt Mask Register Licznik 7 6 5 4 3 OCIE TOIE TICIE OCIEA OCIEB TOIE OCIE TOIE Rejestr OCR przechowuje bajt stale porównywany z wartością rejestru TCNT Równość obu liczników moŝe spowodować róŝne zdarzenia Przerwanie (Output compare) Lub po prostu ustawienie flagi przerwania Generację przebiegu na nóŝce OC Restart licznika TIFR - Timer/Counter Interrupt Flags 7 OCF 6 TOV 5 ICF 4 OCFA 3 OCFB TOV Output Compare Interrupt Enable Timer Overflow Interrupt Enable OCF TOV Licznik Output Compare Flag Timer Overflow Flag Tryby pracy licznika Tryb normalny (preskaler 8) Tryb normalny Licznik liczy do góry, Flaga przerwania ustawiona, gdy licznik osiągnie Tryb porównania (CTC) Licznik liczy do góry, aŝ osiągnie wartość rejestru OCR W następnym kroku licznik przyjmuje wartość i ustawiana jest flaga przerwania

Generacja fali prostokątnej (T=5us) Generacja fali prostokątnej (T=4us) #include<avr/io.h> #define F_CPU 8 void delay() { TCCR=B; // Timer Clock = CLK/8 (starts timer too) while(!tifr&x); // Wait Until Overflow TIFR=TIFR B; // Clear TOV TCCR=x; // Stop Timer } void main() { DDRA=xFF; PORTA=x; TCCR=x; TCNT=x; while(){ PORTA =(<<PA); delay(); PORTA&=~(<<PA); delay(); } } void delay() { TCNT=x38; //TCNT=56 TCCR=B; while(!tifr&x); TIFR=TIFR B; TCCR=x; } Tryb CTC (Clear Timer on Compare Match) Generowanie przebiegu prostokątnego w trybie CTC W trybie tym (ustawienie bitów WGM: = ) jest uŝywany rejestr OCR. W tym trybie licznik jest zerowany, gdy zliczy do takiej wartości, jaka jest wpisana do rejestru OCR. Rejestr ten definiuje największą wartość, do której moŝe doliczyć licznik i w ten sposób decyduje o jego rozdzielczości. Przerwanie moŝe być generowane podczas przepełniania się licznika przez uŝycie flagi OCF. Przerwanie moŝe zmienić wartość szczytów dla licznika. OstroŜnie ze zmianą wartości szczytowej zbliŝonej do zera, podczas gdy licznik pracuje z wyłączonym przeskalerem. Licznik będzie musiał zliczyć do wartości maksymalnej (xff) i po wyzerowaniu zliczy do wartości, przy której wystąpi porównanie. Generowanie przebiegu prostokątnego w trybie CTC na wyjściu OC uzyskuje się przez ustawienie bitów trybu Wyjścia Porównania (COM: = ).

Tryb CTC Generowany przebieg osiągnie najwyŝszą częstotliwość równą f OC =f CLK_I/O /, Tryb CTC (preskaler 8) gdy do OCR wpisane jest zero. Częstotliwość przebiegu wyraŝona jest wzorem: N jest podziałem preskalera (przyjmuje wartości, 8, 64, 56 lub 4). Generacja fali prostokątnej (f=khz) w trybie CTC #include <avr/io.h> #define F_CPU 8 void main(void) { DDRB=xFF; PORTB=x; // Mode: CTC TCCR =(<<WGM); // CLK/8 TCCR =(<<CS); // toggle OC on compare match TCCR =(<<COM); //OCR=49 f=8/(*8*5)=khz OCR=xF9; while (); } Szybki tryb Modulacji Szerokości Impulsu (Fast PWM) Licznik zlicza od zera do maksymalnej (xff) i ponownie zaczyna od zera. Wyjście porównania OC jest zerowane, gdy wartość licznika jest większa lub równa wartości w komparatorze i ustawiane gdy licznik jest zerowany. Tryb ten jest odpowiedni do regulacji mocy, przetwarzania cyfrowo-analogowego. Wysoka częstotliwość PWM umozliwia zmniejszenie rozmiarów zewnętrznych elementów współpracujących cewek czy kondensatorów i obniŝa koszty wykonania. Bit przepełnienia (TOV) jest ustawiany podczas osiągnięcia przez licznik wartości maksymalnej. JeŜeli przerwania są aktywne, to procedura przerwania moŝe zmienić wartość rejestru porównania. Częstotliwość nośna obliczana jest ze wzoru: gdzie N jest podziałem preskalera (przyjmuje wartości, 8, 64, 56 lub 4).

Tryb PWM z Korekcją Fazy Licznik powtarza zliczanie od wartości zerowej do maksymalnej i potem w dół do zera. OC jest zerowany przy porównaniu pomiędzy TCNT a OCR podczas zliczania w górę i ustawiany podczas porównania przy zliczaniu w dół. System podwójnego zliczania daje mniejszą częstotliwość niŝ we wcześniejszym trybie. Dzięki uzyskanej w ten sposób symetrii tryb ten jest zalecany do sterowania silnikami. Częstotliwość licznika określona jest z zaleŝności : Licznik Licznik 6-bitowy Rejestry licznika teŝ 6-bitowe TCNTH, TCNTL wartość licznika (-65535) OCRAH, OCRAL wartość porównania A OCRBH:OCRBL wartość porównania B ICRH:ICRL czas zdarzenia zewnętrznego gdzie N jest podziałem preskalera (przyjmuje wartości, 8, 64, 56 lub 4). Eliminacja drgań styków Naciśnięcie przycisku moŝe wywołać wiele zmian stanów logicznych Efekt ten trwa zwykle nie dłuŝej niŝ ms W celu eliminacji, naleŝy wykorzystać przerwanie licznika, by odczytywać stan przycisku tylko raz na ms (nie uŝywamy funkcji delay_ms!). Stan przycisku zapisać w zmiennej globalnej dostępnej w programie głównym