Partilhar via


Máscaras de interrupção GPIO

Os pinos de E/S de uso geral (GPIO) configurados como entradas de interrupção podem ser mascarados e desmascarados, além de serem habilitados e desativados.

Se uma interrupção acionada por nível de um dispositivo periférico estiver ativada e ativa, mas o manipulador de trap do kernel não puder executar imediatamente a rotina de serviço de interrupção (ISR) do dispositivo para limpar a interrupção, o manipulador mascarará a interrupção no pino GPIO para evitar que o pino cause repetidamente mais interrupções. Mais tarde, depois que o ISR é executado e limpa a interrupção, a interrupção pode ser desmascarada com segurança.

Mascarar uma interrupção não limpa nem desativa a interrupção. Se uma interrupção GPIO estiver ativada, ativa e mascarada, desmascarar essa interrupção fará com que o dispositivo controlador GPIO sinalize uma solicitação de interrupção para o processador.

Um bit de máscara de interrupção GPIO não tem efeito enquanto a interrupção GPIO estiver desativada. A função callback CLIENT_EnableInterrupt ajusta o bit de máscara de interrupção para zero; ou seja, a interrupção é inicialmente desmascarada depois de ativada.

Uma distinção importante entre mascarar e desativar um pino de interrupção GPIO é que o mascaramento preserva as definições de configuração de interrupção do pino, enquanto desativar o pino não. Enquanto um pino de interrupção GPIO é mascarado, ele mantém seu modo de interrupção programado anteriormente (acionado por borda ou acionado por nível), polaridade (ativo-alto, ativo-baixo ou ativo-ambos) e configurações de rejeição. Essas configurações entram em vigor novamente assim que a interrupção é desmascarada. No entanto, quando uma interrupção é desativada, todas as definições de configuração de interrupção do pino são perdidas. Depois que o pino estiver ativado, ele deve ser programado novamente com as definições de configuração de interrupção necessárias.

Alguns controladores GPIO implementam, em hardware, registradores de máscara de interrupção que são separados e distintos dos registradores de habilitação de interrupção.

No entanto, outros controladores GPIO fornecem um único conjunto de registradores de hardware que combinam as funções de máscara de interrupções e habilitação de interrupções. Os drivers para esses controladores emulam no software registos de máscara de interrupção e de ativação de interrupção separados. Para tal, estes drivers monitorizam os estados lógicos dos bits de habilitação de interrupção e dos bits de máscara de interrupção, manipulando os bits correspondentes no registo de hardware para refletir com precisão o comportamento dos bits lógicos combinados de habilitação de interrupção e de máscara de interrupção para cada interrupção GPIO.