interrupts()
interrupts()
Este é o par que "religa" as interrupções depois de você tê-las pausado. Sempre que usa noInterrupts() pra proteger um trecho crítico do código, você chama interrupts() logo em seguida pra o Arduino voltar a atender os eventos normalmente. Por padrão, as interrupções já ficam ligadas — então você só precisa dele pra desfazer um noInterrupts().
Sintaxe
interrupts();
Parâmetros
Nenhum.
Retorno
Nada (void).
Exemplo
volatile unsigned long contagem = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
unsigned long copia;
noInterrupts(); // pausa: leitura segura de uma variavel de 32 bits
copia = contagem;
interrupts(); // religa as interrupcoes
Serial.println(copia);
delay(200);
}
Notas e cuidados
- Use pra proteger a leitura ou escrita de variáveis
volatilegrandes (comolong), que não são atualizadas de uma vez só no Uno de 8 bits. - Mantenha o intervalo entre
noInterrupts()einterrupts()o mais curto possível: enquanto as interrupções estão desligadas,millis()para de contar e eventos podem ser perdidos. - Nos bastidores ele equivale à instrução
sei()do AVR (habilita as interrupções).