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.