Serwis Edukacyjny w I-LO w Tarnowie Materiały dla uczniów liceum |
Wyjście Spis treści Wstecz Dalej Autor artykułu: mgr Jerzy Wałaszek |
©2024 mgr Jerzy Wałaszek |
https://www.microchip.com/about-us/legal-information/copyright-usage-guidelines
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.
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 |
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. |
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. |
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 |
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.
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 | 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 |
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.
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.
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:
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.