Você está na página 1de 10

UFCD 6072 – Microcontroladores-N3

Curso Profissional de Técnico de Eletrónica, Automação e Instrumentação


Disciplina: Sistemas Digitais

Professor: Rui Nunes


Interrupções
 Maioria dos microcontroladores têm interrupções.
 As interrupções permitem responder a eventos externos
dentro do processamento normal.

2 UFCD 6072 – Microcontroladores-N3


Configuração das interrupções
 Tudo o que é necessário fazer é associar uma determinada
função a um evento em particular;
 Quando esse evento ocorre o microcontrolador responde
com a execução dessa função
 A função tem o nome de ISR (Interrupt Service Routine)

3 UFCD 6072 – Microcontroladores-N3


Características das ISR
 Este tipo de funções não devem:
 ter argumentos de entrada;
 Nem retornar alguma coisa.
 Deve ser curta e rápida;
 Apenas uma pode ser executada;
 A comunicação com o programa principal, normalmente é
feita através de variáveis globais;

4 UFCD 6072 – Microcontroladores-N3


Interrupções no Arduíno
 Na seguinte tabela podemos ver que pinos estão disponíveis
para acionar uma interrupção:

PINOS DIGITAIS POSSÍVEIS PARA


PLACA
INTERRUPÇÕES
Uno, Nano, Mini e outros com 328p 2, 3
Uno WiFi Rev.2 todos os pinos digitais
Mega, Mega2560, MegaADK 2, 3, 18, 19, 20, 21

5 UFCD 6072 – Microcontroladores-N3


Interrupções no Arduíno
 Para associar a ISR ao evento especifico tem que se utilizar:
 attachInterrupt(interrupção, ISR, modo)
 interrupção: o número da interrupção (int):
 Recomendado utilizar: digitalPinToInterrupt(pino)
 ISR: a ISR a ser chamada quando a interrupção ocorre;
 modo: define quando a interrupção deve ser ativada. Quatro constantes estão
predefinidas como valores válidos:
 LOW acionar a interrupção quando o estado do pino for LOW,
 CHANGE acionar a interrupção quando o sempre estado do pino mudar
 RISING acionar a interrupção quando o estado do pino for de LOW para
HIGH apenas,
 FALLING acionar a interrupção quando o estado do pino for de HIGH para
LOW apenas.

6 UFCD 6072 – Microcontroladores-N3


Interrupções no Arduíno
 Como já foi referido a comunicação com o programa
principal é feita através de variáveis globais;
 Essas variáveis devem ter o modificador: volatile

7 UFCD 6072 – Microcontroladores-N3


Interrupções no Arduíno - exemplo
const byte ledPin = 13;
const byte interruptPin = 2;
volatile byte state = LOW;

void setup() {
pinMode(ledPin, OUTPUT);
pinMode(interruptPin, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(interruptPin), blink, CHANGE);
}

void loop() {
digitalWrite(ledPin, state);
}

void blink() {
state = !state;
}
8
UFCD 6072 – Microcontroladores-N3
Desafio
 Alterar o contador realizado até agora para funcionar com
interrupções

9 UFCD 6072 – Microcontroladores-N3


Webgrafia
 https://www.arduino.cc/reference/pt/language/functions/
external-interrupts/attachinterrupt/

10 UFCD 6072 – Microcontroladores-N3

Você também pode gostar