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

ATmega64

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 INT7:0. Zauważ, iż po uaktywnieniu, przerwania te będą wyzwalane nawet, jeśli końcówki INT7:0 zostały skonfigurowane jako wyjścia. Własność ta dostarcza sposobu generowania przerwań programowych. Przerwania zewnętrzne mogą być wyzwalane zboczem opadającym lub narastającym albo niskim poziomem. Określane jest to zgodnie ze specyfikacjami rejestrów sterujących przerwaniami zewnętrznymi – EICRA (INT3:0) i EICRB (INT7:4). Gdy przerwanie zewnętrzne zostanie uaktywnione i skonfigurowane jako wyzwalane poziomem, to przerwanie będzie generowane tak długo, jak jego końcówka utrzymywana jest w stanie niskim. Zwróć uwagę, iż rozpoznanie przerwań od zboczy opadających lub narastających na końcówkach INT7:4 wymaga obecności zegara we/wy, opisanego w podrozdziale "Systemy zegarowe i ich przydział". Przerwania od niskiego poziomu oraz przerwania od zboczy na końcówkach INT3:0 są wykrywane asynchronicznie. Oznacza to, iż można je wykorzystywać do wybudzania mikrokontrolera również z trybów uśpienia innych niż tryb bezczynny (ang. Idle mode). Zegar we/wy jest zatrzymywany we wszystkich trybach uśpienia poza trybem bezczynnym.

Zauważ, iż w przypadku przerwania wyzwalanego poziomem i wykorzystywanego do wybudzania z trybu wyłączenia zasilania (ang. Power-down mode), zmieniony poziom musi być utrzymywany przez pewien czas, aby wybudzić mikrokontroler. Czyni to mikrokontroler mniej czułym na zakłócenia. Zmieniony poziom jest próbkowany dwukrotnie przez zegar oscylatora licznika zegarowego. Okres tego oscylatora wynosi 1 μs (znamionowo) przy 5,0V i 25°C. Częstotliwość oscylatora licznika zegarowego zależy od napięcia, jak pokazano w rozdziale "Typowe Parametry  – TA = -40°C do 85°C". Mikrokontroler wybudzi się z uśpienia, jeśli wejście będzie posiadało wymagany poziom podczas tego próbkowania lub jeśli jest on utrzymany do końca czasu włączania. Czas włączania jest definiowany przez bity bezpiecznikowe SUT, co opisuje podrozdział "Systemy zegarowe i ich przydział". Jeśli poziom zostanie spróbkowany dwukrotnie przez zegar oscylatora licznika zegarowego, lecz zniknie przed zakończeniem czasu uruchamiania, to mikrokontroler wciąż się wybudzi, lecz nie zostanie wygenerowane żadne przerwanie. Pożądany poziom musi być utrzymywany wystarczająco długo, aby mikrokontroler zakończył wybudzanie się i wyzwolił przerwanie od poziomu.


Na początek:  podrozdziału   strony 

Opis rejestrów

EICRA – External Interrupt Control Register A – rejestr A sterowania przerwaniami zewnętrznymi

Bit 7 6 5 4 3 2 1 0  
(0x6A) ISC31 ISC30 ISC21 ISC20 ISC11 ISC10 ISC01 ISC00 EICRA
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  

Rejestr ten nie jest dostępny w trybie kompatybilności z ATmega103, lecz jego wartości początkowe definiują INT3:0 jako przerwania od niskiego poziomu, tak samo jak w ATmega103.

Bity 7:0 – ISC31, ISC30...ISC00, ISC00: External Interrupt 3 - 0 Sense Control Bits – Bity sterowania wykrywaniem przerwań zewnętrznych 3 - 0

Przerwania zewnętrzne 3 - 0 są aktywowane przez zewnętrzne końcówki INT3:0, jeśli bit I rejestru stanu SREG oraz odpowiedni bit maski przerwań w rejestrze EIMSK są ustawione. Poziom i zbocza na końcówkach zewnętrznych wyzwalające przerwania są zdefiniowane w poniższej tabelce:

ISCn1 ISCn0 Opis
0 0 Niski poziom na końcówce INTn wyzwoli żądanie przerwania
0 1 Zarezerwowane
1 0 Opadające zbocze na końcówce INTn wyzwala asynchronicznie żądanie przerwania
1 1 Narastające zbocze na końcówce INTn wyzwala asynchronicznie żądanie przerwania
Uwaga: 1. n = 3, 2, 1 lub 0.
Przy zmianie bitów ISCn1/ISCn0 należy wyłączyć powiązane z nimi przerwanie poprzez wyzerowanie jego bitu w rejestrze EIMSK. W przeciwnym razie zmiana bitów może wyzwolić przerwanie.

Zbocza sygnałów na końcówkach INT3:0 są rejestrowane asynchronicznie. Impulsy na końcówkach INT3:0 szersze od minimalnej szerokości impulsu podanej w poniższej tabelce wygenerują przerwanie. Impulsy krótsze nie dają takiej gwarancji.

Symbol Parametr Warunki Min Typ Max Jednostki
tINT Minimalna szerokość impulsu dla asynchronicznego przerwania zewnętrznego     50   ns

Jeśli zostanie wybrane przerwanie od poziomu niskiego, to poziom niski musi być utrzymywany do zakończenia bieżąco wykonywanej instrukcji, aby wygenerować przerwanie. Po uaktywnieniu przerwanie wyzwalane poziomem będzie generować żądanie przerwania tak długo, jak długo jego końcówka utrzymywana jest w stanie niskim. Przy zmianie bitu ISCn może wystąpić przerwanie. Dlatego zaleca się najpierw wyłączyć przerwanie INTn przez wyzerowanie jego bitu włączającego w rejestrze EIMSK. Następnie można zmienić bit ISCn. Na koniec należy wyzerować znacznik przerwania INTn przez zapis logicznej jedynki do jego bitu znacznika przerwania (INTFn) w rejestrze EIFR przed ponownym uaktywnieniem tego przerwania.

EICRB – External Interrupt Control Register B – rejestr B sterowania przerwaniami zewnętrznymi

Bit 7 6 5 4 3 2 1 0  
0x3A (0x5A) ISC71 ISC70 ISC61 ISC60 ISC51 ISC50 ISC41 ISC40 EICRB
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 7:0 – ISC71, ISC70...ISC41, ISC40: External Interrupt 7 - 4 Sense Control Bits – Bity sterowania wykrywaniem przerwań zewnętrznych 7 - 4

Przerwania zewnętrzne 7 - 4 są aktywowane przez końcówki zewnętrzne INT7:4, jeśli bit I rejestru stanu SREG oraz odpowiedni bit maski przerwań w rejestrze EIMSK są ustawione. Poziom i zbocza na końcówkach zewnętrznych wyzwalające przerwania są zdefiniowane w poniższej tabelce:

ISCn1 ISCn0 Opis
0 0 Niski poziom na końcówce INTn wyzwoli żądanie przerwania
0 1 Zmiana poziomu logicznego na końcówce wyzwala żądanie przerwania
1 0 Opadające zbocze na końcówce INTn wyzwala żądanie przerwania
1 1 Narastające zbocze na końcówce INTn wyzwala żądanie przerwania
Uwaga: 1. n = 7, 6, 5 lub 4.
Przy zmianie bitów ISCn1/ISCn0 należy wyłączyć powiązane z nimi przerwanie poprzez wyzerowanie jego bitu w rejestrze EIMSK. W przeciwnym razie zmiana bitów może wyzwolić przerwanie.

Wartość na końcówkach INT7:4 jest próbkowana przed wykrywaniem zboczy. Jeśli wybrano przerwanie od zbocza lub od zmiany poziomu logicznego na przeciwny, to impulsy trwające dłużej od jednego okresu zegara wygenerują przerwanie. Krótsze impulsy nie gwarantują wygenerowania przerwania. Zauważ, iż częstotliwość zegarowa mikroprocesora może być niższa od częstotliwości XTAL, jeśli jest aktywny dzielnik XTAL. Jeśli wybrano przerwanie od niskiego poziomu, to niski poziom na końcówce musi być utrzymywany do zakończenia bieżąco wykonywanej instrukcji, aby wygenerować przerwanie. Jeśli przerwanie od poziomu zostanie uaktywnione, to będzie ono generować żądanie przerwania tak długo, jak jego końcówka jest utrzymywana w stanie niskim.

EIMSK – External Interrupt Mask Register – rejestr masek przerwań zewnętrznych

Bit 7 6 5 4 3 2 1 0  
0x39 (0x59) INT7 INT6 INT5 INT4 INT3 INT2 INT1 INT0 EIMSK
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 7:0 – INT7:0: External Interrupt Request 7 - 0 Enable – Bity włączania przerwań zewnętrznych 7 - 0

Gdy bit INT7:0 zostanie zapisany logiczną jedynką i bit I w rejestrze stanu SREG jest ustawiony na 1, to odpowiednie przerwanie z końcówki zewnętrznej jest uaktywniane. Bity wykrywania przerwań zewnętrznych w rejestrach sterujących EICRA i EICRB definiują, czy przerwanie zewnętrzne jest wyzwalane zboczem narastającym/opadającym lub poziomem (przerwania 7 - 4 mogą dodatkowo być wyzwalane zmianą poziomu logicznego na końcówce przerwania). Działania na dowolnej z tych końcówek spowodują wyzwolenie przerwania nawet wtedy, gdy końcówka pracuje jako wyjście. Udostępnia to sposób programowej generacji przerwania.

EIFR – External Interrupt Flag Register – rejestr znaczników przerwań zewnętrznych

Bit 7 6 5 4 3 2 1 0  
0x38 (0x58) INTF7 INTF6 INTF5 INTF4 INTF3 INTF2 INTF1 INTF0 EIFR
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 7:0 – INTF7 - INTF0: External Interrupt Flags 7 - 0 – Znaczniki przerwań zewnętrznych 7 - 0

Gdy zbocze lub zmiana poziomu logicznego na końcówce INT7:0 wyzwala żądanie przerwania, odpowiedni znacznik INTF7:0 zostaje ustawiony w stan jeden. Jeśli bit I w rejestrze SREG oraz odpowiedni bit uaktywniania przerwań INT7:0 w EIMSK są ustawione na 1, to mikrokontroler wykona skok do wektora przerwania. Znacznik jest zerowany, gdy jest wykonywana procedura przerwania. Alternatywnie można go wyzerować zapisując do niego logiczną jedynkę. Znaczniki te są zawsze zerowane po skonfigurowaniu INT7:0 na przerwania od poziomu. Zapamiętaj, iż wejście w tryb uśpienia z wyłączonymi przerwaniami INT3:0, powoduje wyłączenie buforów wejściowych na tych końcówkach. Może to spowodować zmianę logiczną w wewnętrznych sygnałach, która ustawi znaczniki INTF3:0. Więcej informacji 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.