Podprogramy, przerwania
Transkrypt
Podprogramy, przerwania
Mikroprocesory i mikrosterowniki Wykład 3 pull-up, podprogramy, przerwania Wydział Elektroniki Mikrosystemów i Fotoniki Piotr Markowski Na prawach rękopisu. Na podstawie dokumentacji ATmega8535, www.atmel.com. dr inż. Piotr Markowski © 2013 Przykład Zmiana kierunku obrotu SBRS/SBRC Zmiana kierunku obrotu dr inż. Piotr Markowski © 2013 7 6 5 4 3 2 1 0 dr inż. Piotr Markowski © 2013 Porty I/O ATmega8535 – wyprowadzenia dr inż. Piotr Markowski © 2013 Wejścia I/O Wejścia ADC We/wy liczników SPI USART I2C Przerw. zewn. Porty I/O dr inż. Piotr Markowski © 2013 A: B: C: D: DDRA DDRB DDRC DDRD PORTA PORTB PORTC PORTD PINA PINB PINC PIND DDR – PORT – PIN – PA0…PA7, … , PD0…PD7 PULL-UP dr inż. Piotr Markowski © 2013 DDR » PORT » Port wejściowy dr inż. Piotr Markowski © 2013 DDR « PORT « Wejścia są podciągnięte do 1 logicznej A: 0 0 0 0 1 1 1 1 DDRA 1 1 1 1 1 1 1 1 PORTA PINA dr inż. Piotr Markowski © 2013 Podprogramy Podprogramy obsługi przerwań Podprogramy dr inż. Piotr Markowski © 2013 Podprogramy dr inż. Piotr Markowski © 2013 RAMEND Podprogramy dr inż. Piotr Markowski © 2013 $0060 - $025F RAMEND Podprogramy dr inż. Piotr Markowski © 2013 Kiedy inicjalizacja stosu? dr inż. Piotr Markowski © 2013 Przerwania Przerwania dr inż. Piotr Markowski © 2013 • Wykonywanie programu głównego zostaje natychmiast przerwane; rozpoczyna się podprogram obsługi przerwania • 21 przerwań ułożonych priorytetowo • Reset, 3 zewnętrzne, 17 wewnętrznych • Tabela przerwań – str. 45 • Podprogram obsługi przerwania kończy instrukcja RETI • Przerwania muszą być aktywowane. Aktywacja: Przerwania dr inż. Piotr Markowski © 2013 Obsługa przerwania dr inż. Piotr Markowski © 2013 • • • • Konkretne przerwanie SREG Skok do podprogramu (2 lub 3 cykle) Zablokowanie przerwań • Wykonanie podprogramu • Powrót – RETI (4 cykle) • Przykład – przerwanie od przepełnienia licznika T/C0 dr inż. Piotr Markowski © 2013 Przykład – przerwanie od przepełnienia licznika T/C0 dr inż. Piotr Markowski © 2013 Przerwania dr inż. Piotr Markowski © 2013 dr inż. Piotr Markowski © 2013 Przerwania zewnętrzne Przerwania zewnętrzne dr inż. Piotr Markowski © 2013 INT0 – priorytet 2, pin PD2, wektor $001 INT1 – priorytet 3, pin PD3, wektor $002 INT2 – priorytet 19, pin PB2, wektor $012 • Działają nawet jeśli piny PB/PD ustawione jako WY • Reakcja – na zbocze lub na stan: INT0, INT1 – na dowolne zbocze lub stan niski INT2 – na dowolne zbocze • Reakcja na stan niski oraz INT2 – asynchroniczne • Stan niski – przerwanie trwa tak długo, jak stan niski Przerwania zewnętrzne dr inż. Piotr Markowski © 2013 General Interrupt Control Register – GICR INT2 – INT0 – INT1 Przy reakcji na zbocze impulsy powinny trwać min. 1 cykl zegarowy (INT0, INT1) lub min. 50 ns (INT2) Przy reakcji na poziom niski impuls powinien trwać na tyle długo, by zakończyła się obecnie wykonywana instrukcja Przerwania zewnętrzne dr inż. Piotr Markowski © 2013 General Interrupt Flag Register – GIFR INTF2 – INTF0 – INTF1 Flagi czyszczone Przerwania zewnętrzne dr inż. Piotr Markowski © 2013 MCU Control Register – MCUCR ISC11, ISC10 – ustawienia reakcji ISC01, ISC00 – ustawienia reakcji ISC01 ISC00 Reakcja 0 0 Poziom niski na INT0 generuje przerwanie 0 1 Dowolna zmiana na INT0 generuje przerwanie 1 0 Zbocze opadające na INT0 generuje przerwanie 1 1 Zbocze narastające na INT0 generuje przerwanie Przerwania zewnętrzne dr inż. Piotr Markowski © 2013 MCU Control Register – MCUCR ISC2 – ustawienia reakcji 1 – zbocze narastające 0 – zbocze opadające Przerwania zewnętrzne dr inż. Piotr Markowski © 2013 dr inż. Piotr Markowski © 2013 Przykładowe zagadnienia sprawdzające Przykładowe zagadnienia sprawdzające dr inż. Piotr Markowski © 2013 1. 2. 3. 4. Obsługa podprogramów (RCALL, RET, stos, inicjalizacja stosu). Porty I/O – funkcje rejestrów, PULL-UP. Aktywacja oraz zasada działania przerwań. Przerwania zewnętrzne – zasada działania (wywołanie zboczem/poziomem, czas trwania), rejestry.