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

©2021 mgr Jerzy Wałaszek
I LO w Tarnowie

obrazek

Mikrokontrolery

ATmega8

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 i INT1. Zauważ, iż jeśli przerwania te są uaktywnione, to wyzwolenie nastąpi nawet wtedy, gdy końcówki INT0...1 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. Ustawiane jest to zgodnie ze specyfikacją rejestru sterującego mikrokontrolerem (ang. MCU Control Register – MCUCR). Gdy przerwanie zewnętrzne zostanie uaktywnione i skonfigurowane na wyzwalanie poziomem, 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 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.

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

Bit 7 6 5 4 3 2 1 0  
0x3B (0x5B) INT1 INT0 IVSEL IVCE GICR
Zapis/Odczyt Z/O Z/O 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.


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

Bit 7 6 5 4 3 2 1 0  
0x3A (0x5A) INTF1 INTF0 GIFR
Zapis/Odczyt Z/O Z/O 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.

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
©2021 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.