Serwis Edukacyjny
w I-LO w Tarnowie
obrazek

Materiały dla uczniów liceum

  Wyjście       Spis treści       Wstecz       Dalej  

obrazek

Autor artykułu: mgr Jerzy Wałaszek
Konsultacje: Wojciech Grodowski, mgr inż. Janusz Wałaszek

©2024 mgr Jerzy Wałaszek
I LO w Tarnowie

obrazek

Mikrokontrolery

ATmega32

Przerwania zewnętrzne

obrazek

Educational and Non-Profit Use of Copyrighted Material:

If you use Microchip copyrighted material solely for educational (non-profit) purposes falling under the “fair use” exception of the U.S. Copyright Act of 1976 then you do not need Microchip’s written permission. For example, Microchip’s permission is not required when using copyrighted material in: (1) an academic report, thesis, or dissertation; (2) classroom handouts or textbook; or (3) a presentation or article that is solely educational in nature (e.g., technical article published in a magazine).

https://www.microchip.com/about-us/legal-information/copyright-usage-guidelines

SPIS TREŚCI
Podrozdziały

obrazek

Przerwania zewnętrzne

Przerwania zewnętrzne są wyzwalane przez końcówki INT0, INT1 i INT2. Zauważ, iż jeśli przerwania te są uaktywnione, to wyzwolenie nastąpi nawet wtedy, gdy końcówki INT0...2 zostały skonfigurowane jako wyjścia. Ta cecha udostępnia sposób generowania przerwania programowego. Przerwania zewnętrzne mogą być wyzwalane przez zbocze opadające, narastające lub przez niski poziom (INT2 jest przerwaniem wyzwalanym tylko zboczem sygnału). Ustawiane jest to zgodnie ze specyfikacją rejestru sterującego mikrokontrolerem (ang. MCU Control Register – MCUCR) oraz rejestru sterowania i stanu mikrokontrolera (ang. MCU Control and Status Register – MCUCSR). Gdy przerwanie zewnętrzne zostanie uaktywnione i skonfigurowane na wyzwalanie poziomem (tylko INT0/INT1), to przerwanie będzie wyzwalane tak długo, jak jego końcówka jest utrzymywana w stanie niskim. Zwróć uwagę, iż rozpoznanie przerwania zboczem narastającym lub opadającym na końcówkach INT0 i INT1 wymaga obecności zegara we/wy. Przerwania od niskiego poziomu na końcówkach INT0/INT1 oraz przerwanie od zbocza na końcówce INT2 są wykrywane asynchronicznie. W rezultacie przerwania te można wykorzystać do wybudzenia układu również z trybów uśpienia innych niż tryb bezczynny. Zegar we/wy jest zatrzymywany we wszystkich trybach uśpienia z wyjątkiem trybu bezczynnego.

Zauważ, iż jeśli przerwanie wyzwalane poziomem jest używane do wybudzania z trybu wyłączenia, to zmieniony poziom musi się utrzymywać przez pewien czas, aby wybudzić mikrokontroler. Uodparnia to mikrokontroler na zakłócenia. Zmieniony poziom jest próbkowany dwukrotnie przez zegar oscylatora licznika zegarowego. Okres oscylatora licznika zegarowego wynosi 1 μs (znamionowo) przy 5.0V i 25°C. Częstotliwość oscylatora licznika zegarowego zależy od napięcia. Mikrokontroler wybudzi się, jeśli dane wejście utrzyma pożądany poziom podczas tego próbkowania lub gdy poziom utrzyma się do zakończenia czasu uruchamiania. Czas uruchamiania jest zdefiniowany przez bity bezpiecznikowe SUT, co opisano w rozdziale "Zegar systemowy i opcje zegarowe". Gdy ten poziom zostanie dwukrotnie spróbkowany przez zegar oscylatora licznika zegarowego, lecz zniknie przed końcem czasu uruchamiania, mikrokontroler wciąż się wybudzi, lecz nie będzie wygenerowane żadne przerwanie. Wymagany poziom musi się utrzymać wystarczająco długo, aby mikrokontroler zakończył wybudzanie i mógł wyzwolić przerwanie od poziomu.


Na początek:  podrozdziału   strony 

Opis rejestrów

MCUCR – MCU Control Register – Rejestr sterujący mikrokontrolerem

Bit 7 6 5 4 3 2 1 0  
0x35 (0x55) SE SM2 SM1 SM0 ISC11 ISC10 ISC01 ISC00 MCUCR
Zapis/Odczyt Z/O Z/O Z/O Z/O Z/O Z/O Z/O Z/O  
Wartość początkowa 0 0 0 0 0 0 0 0  

Bity 3, 2 – ISC11, ISC10: Interrupt Sense Control 1 Bit 1 and Bit 0 – Kontrola nad wykrywaniem przerwania 1

Przerwanie zewnętrzne 1 jest uaktywniane przez końcówkę zewnętrzną INT1, jeśli bit I w rejestrze SREG oraz odpowiedni bit maski przerwań w GICR są ustawione. Poniższa tabela definiuje poziom i zbocza na zewnętrznej końcówce INT1, które wyzwalają przerwanie. Wartość na końcówce INT1 jest próbkowana przed wykrywaniem zboczy. Jeśli zostanie wybrane przerwanie od zbocza lub zmiany poziomu na przeciwny, to impulsy trwające dłużej od okresu jednego taktu zegara wygenerują przerwanie. Krótsze impulsy nie dają gwarancji wygenerowania przerwania. Jeśli zostanie wybrane przerwanie od niskiego poziomu, to poziom ten musi się utrzymać do zakończenia bieżąco wykonywanej instrukcji, aby wygenerować przerwanie.

ISC11 ISC10 Opis
0 0 Niski poziom końcówki INT1 generuje żądanie przerwania.
0 1 Każda zmiana poziomu logicznego na końcówce INT1 generuje żądanie przerwania.
1 0 Opadające zbocze na końcówce INT1 generuje żądanie przerwania.
1 1 Narastające zbocze na końcówce INT1 generuje żądanie przerwania.

Bity 1, 0 – ISC01, ISC00: Interrupt Sense Control 0 Bit 1 and Bit 0 – Kontrola nad wykrywaniem przerwania 0

Przerwanie zewnętrzne 0 jest uaktywniane przez końcówkę zewnętrzną INT0, jeśli bit I w rejestrze SREG oraz odpowiedni bit maski przerwań w GICR są ustawione. Poniższa tabela definiuje poziom i zbocza na zewnętrznej końcówce INT0, które wyzwalają przerwanie. Wartość na końcówce INT0 jest próbkowana przed wykrywaniem zboczy. Jeśli zostanie wybrane przerwanie od zbocza lub zmiany poziomu na przeciwny, to impulsy trwające dłużej od okresu jednego taktu zegara wygenerują przerwanie. Krótsze impulsy nie dają gwarancji wygenerowania przerwania. Jeśli zostanie wybrane przerwanie od niskiego poziomu, to poziom ten musi się utrzymać do zakończenia bieżąco wykonywanej instrukcji, aby wygenerować przerwanie.

ISC01 ISC00 Opis
0 0 Niski poziom końcówki INT0 generuje żądanie przerwania.
0 1 Każda zmiana poziomu logicznego na końcówce INT0 generuje żądanie przerwania.
1 0 Opadające zbocze na końcówce INT0 generuje żądanie przerwania.
1 1 Narastające zbocze na końcówce INT0 generuje żądanie przerwania.

MCUCSR – MCU Control and Status Register – Rejestr sterowania i stanu mikrokontrolera

Bit 7 6 5 4 3 2 1 0  
0x34 (0x54) JTD ISC2 JTRF WDRF BORF EXTRF PORF MCUCSR
Zapis/Odczyt Z/O Z/O O Z/O Z/O Z/O Z/O Z/O  
Wartość początkowa 0 0 0 Zobacz na opis bitów  

Bit 6 – ISC2: Interrupt Sense Control 2 – Kontrola nad wykrywaniem przerwania 2

Asynchroniczne przerwanie zewnętrzne 2 jest aktywowane przez końcówkę zewnętrzną INT2, jeśli są ustawione na 1 bit I rejestru stanu SREG oraz odpowiedni bit maski przerwań w GICR. Jeśli bit ISC2 zostanie zapisany stanem 0, to przerwanie aktywuje opadające zbocze na końcówce INT2. Jeśli bit ISC2 jest ustawiony na 1, to przerwanie będzie aktywowane narastającym zboczem na końcówce INT2. Zbocza na INT2 są rejestrowane asynchronicznie. Impulsy o czasie trwania dłuższym od czasu minimalnego podanego w poniższej tabelce wygenerują przerwanie. Krótsze impulsy nie dają gwarancji wygenerowania przerwania. Przy zmianie stanu bitu ISC2 może zostać wygenerowane przerwanie. Dlatego zaleca się najpierw wyłączenie przerwań INT2 przez wyzerowanie bitu uaktywniania tych przerwań w rejestrze GICR. Wtedy bit ISC2 może być zmieniany. Na koniec znacznik przerwania INT2 powinien być wyzerowany przez zapis logicznej jedynki do jego bitu (INTF2) w rejestrze GIFR przed ponownym uaktywnieniem tego przerwania.

Symbol Parametr Warunek Min. Typ. Max. Jednostka
tINT Minimalny czas trwania impulsu dla asynchronicznego przerwania zewnętrznego     50   ns

GICR – General Interrupt Control Register – Ogólny rejestr sterujący przerwaniami

Bit 7 6 5 4 3 2 1 0  
0x3B (0x5B) INT1 INT0 INT2 IVSEL IVCE GICR
Zapis/Odczyt Z/O Z/O Z/O O O O Z/O Z/O  
Wartość początkowa 0 0 0 0 0 0 0 0  

Bit 7 – INT1: External Interrupt Request 1 Enable – Włączenie obsługi przerwania zewnętrznego 1

Gdy bit INT1 jest ustawiony na jeden oraz bit I w rejestrze stanu (SREG) jest ustawiony na jeden, zostaje uaktywnione przerwanie od końcówki zewnętrznej. Bity 1/0 kontroli wykrywania przerwania (ISC11 i ISC10) w rejestrze MCUCR definiują rodzaj zdarzenia na końcówce INT1, które wygeneruje przerwanie zewnętrzne 1. Aktywność na tej końcówce spowoduje żądanie obsługi przerwania nawet wtedy, gdy końcówka INT1 została skonfigurowana jako wyjście. Obsługa przerwania zostanie wywołana poprzez wektor przerwania zewnętrznego INT1.

Bit 6 – INT0: External Interrupt Request 0 Enable – Włączenie obsługi przerwania zewnętrznego 0

Gdy bit INT0 jest ustawiony na jeden oraz bit I w rejestrze stanu (SREG) jest ustawiony na jeden, zostaje uaktywnione przerwanie od końcówki zewnętrznej. Bity 1/0 kontroli wykrywania przerwania (ISC01 i ISC00) w rejestrze MCUCR definiują rodzaj zdarzenia na końcówce INT0, które wygeneruje przerwanie zewnętrzne 0. Aktywność na tej końcówce spowoduje żądanie obsługi przerwania nawet wtedy, gdy końcówka INT0 została skonfigurowana jako wyjście. Obsługa przerwania zostanie wywołana poprzez wektor przerwania zewnętrznego INT0.

Bit 5 – INT2: External Interrupt Request 2 Enable – Włączenie obsługi przerwania zewnętrznego 2

Gdy bit INT2 jest ustawiony na jeden oraz bit I w rejestrze stanu (SREG) jest ustawiony na jeden, zostaje uaktywnione przerwanie od końcówki zewnętrznej. Bity kontroli wykrywania przerwania 2 (ISC2) w rejestrze MCUCSR określa, czy przerwanie zostanie wygenerowane przy opadającym, czy przy narastającym zboczu sygnału na końcówce INT2, które wygeneruje przerwanie zewnętrzne 0. Aktywność na tej końcówce spowoduje żądanie obsługi przerwania nawet wtedy, gdy końcówka INT2 została skonfigurowana jako wyjście. Obsługa przerwania zostanie wywołana poprzez wektor przerwania zewnętrznego INT2.


GIFR – General Interrupt Flag Register – Ogólny rejestr znaczników przerwań

Bit 7 6 5 4 3 2 1 0  
0x3A (0x5A) INTF1 INTF0 INTF2 GIFR
Zapis/Odczyt Z/O Z/O Z/O O O O O O  
Wartość początkowa 0 0 0 0 0 0 0 0  

Bit 7 – INTF1: External Interrupt Flag 1 – Znacznik przerwania zewnętrznego 1

Gdy pewne zdarzenie na końcówce INT1 wyzwala żądanie obsługi przerwania, bit INTF1 przyjmuje stan jeden. Jeśli są ustawione bit I w rejestrze SREG i bit INT1 w GICR, to mikrokontroler wykona skok do odpowiedniego wektora przerwań. Znacznik ten jest zerowany, gdy zostanie wykonana procedura obsługi przerwania. Alternatywnie znacznik można wyzerować przez zapis w nim logicznej jedynki. Znacznik ten jest zawsze wyzerowany, gdy INT1 jest skonfigurowane jako przerwanie od poziomu.

Bit 6 – INTF0: External Interrupt Flag 0 – Znacznik przerwania zewnętrznego 0

Gdy pewne zdarzenie na końcówce INT0 wyzwala żądanie obsługi przerwania, bit INTF0 przyjmuje stan jeden. Jeśli są ustawione bit I w rejestrze SREG i bit INT0 w GICR, to mikrokontroler wykona skok do odpowiedniego wektora przerwań. Znacznik ten jest zerowany, gdy zostanie wykonana procedura obsługi przerwania. Alternatywnie znacznik można wyzerować przez zapis w nim logicznej jedynki. Znacznik ten jest zawsze wyzerowany, gdy INT0 jest skonfigurowane jako przerwanie od poziomu.

Bit 5 – INTF2: External Interrupt Flag 2 – Znacznik przerwania zewnętrznego 2

Gdy pewne zdarzenie na końcówce INT2 wyzwala żądanie obsługi przerwania, bit INTF2 przyjmuje stan jeden. Jeśli są ustawione bit I w rejestrze SREG i bit INT2 w GICR, to mikrokontroler wykona skok do odpowiedniego wektora przerwań. Znacznik ten jest zerowany, gdy zostanie wykonana procedura obsługi przerwania. Alternatywnie znacznik można wyzerować przez zapis w nim logicznej jedynki. Zauważ, iż przy wejściu w jakiś tryb uśpienia z wyłączonym przerwaniem INT2, bufor wejściowy na tej końcówce będzie wyłączony. To może spowodować zmianę logiczną w wewnętrznych sygnałach, która ustawi znacznik INTF2. Więcej szczegółów na ten temat znajdziesz w podrozdziale "Uaktywnienienie wejścia cyfrowego a tryby uśpienia".


Na początek:  podrozdziału   strony 

Zespół Przedmiotowy
Chemii-Fizyki-Informatyki

w I Liceum Ogólnokształcącym
im. Kazimierza Brodzińskiego
w Tarnowie
ul. Piłsudskiego 4
©2024 mgr Jerzy Wałaszek

Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone
pod warunkiem podania źródła oraz niepobierania za to pieniędzy.

Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl

Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.

Informacje dodatkowe.