Udostępnij przez


Maski przerwań GPIO

Wyprowadzenia we/wy ogólnego przeznaczenia (GPIO), skonfigurowane jako wejścia przerwań, mogą być maskowane i niemaskowane, oprócz włączania i wyłączania.

Jeśli przerwanie wyzwalane poziomem z urządzenia peryferyjnego jest włączone i aktywne, ale program obsługi pułapek jądra nie może natychmiast uruchomić routyny obsługi przerwania (ISR) urządzenia, aby wyczyścić przerwanie, program obsługi maskuje przerwanie na pinie GPIO, aby zapobiec wielokrotnemu generowaniu kolejnych przerwań. Później, po uruchomieniu ISR i gdy przerwanie zostanie wyczyszczone, można bezpiecznie zdemaskować przerwanie.

Maskowanie przerwania nie powoduje wyczyszczenia ani wyłączenia przerwania. Jeśli przerwanie GPIO jest włączone, aktywne i maskowane, odsłanianie tego przerwania powoduje, że urządzenie kontrolera GPIO sygnalizuje żądanie przerwania do procesora.

Bit maski przerwań GPIO nie ma wpływu, podczas gdy przerwanie GPIO jest wyłączone. Funkcja wywołania zwrotnego CLIENT_EnableInterrupt ustawia bit maski dla przerwania na zero; oznacza to, że przerwanie jest początkowo niezamaskowane po włączeniu.

Ważną różnicą między maskowaniem i wyłączaniem pinu przerwania GPIO jest to, że maskowanie zachowuje ustawienia konfiguracji przerwania pinu, podczas gdy wyłączanie go nie zachowuje tych ustawień. Podczas gdy pin przerwania GPIO jest maskowany, zachowuje wcześniej zaprogramowany tryb przerwania (wyzwalany zboczem lub poziomem), polaryzację (aktywny wysoki, aktywny niski lub aktywne obie) i ustawienia eliminacji drgań. Te ustawienia zostaną zastosowane ponownie, gdy tylko przerwanie zostanie zdemaskowane. Jednak po zablokowaniu przerwania wszystkie ustawienia konfiguracji przerwania pinu zostaną utracone. Po włączeniu pinu należy go ponownie zaprogramować z wymaganymi ustawieniami konfiguracji przerwań.

Niektóre kontrolery GPIO implementują, w sprzęcie, rejestry maskujące przerwania, które są oddzielne i odrębne od rejestrów włączających przerwania.

Jednak inne kontrolery GPIO zapewniają jeden zestaw rejestrów sprzętowych, które łączą funkcje maski przerwań i włączenia przerwań. Sterowniki dla tych kontrolerów emulują osobne maski przerwań i rejestry włączania przerwań w oprogramowaniu. W tym celu te sterowniki śledzą logiczne stany bitów włączania przerwań i bitów maski przerwań oraz manipulują odpowiednimi bitami w rejestrze sprzętowym w celu dokładnego odzwierciedlenia zachowania połączonych bitów logicznych włączania przerwań i maskowania przerwań dla każdego przerwania GPIO.