08 Arduino and Proteus - Interrupt

17
Tratamento de Interrupções com ARDUINO Professor Victory Fernandes

Transcript of 08 Arduino and Proteus - Interrupt

Tratamento de Interrupções com ARDUINO

Professor Victory Fernandes

Controle de interruções interrupt noInterrupts

Tratamento de interrupções externas attachInterrupt detachInterrupt

Neste capítulo...

Olhe a sua volta...

Desabilita o tratamento de interrupções Interrupções podem alterar a execução do código,

logo em processos específicos pode ser interessante evitar que outras coisas aconteçam enquanto parte do seu código é executado

Algumas funções não funcionam quando o tratamento de interrupções está desabilitado Comunicação serial, PWM

noInterrupts

Habilita o tratamento de interrupções caso este tenha sido desabilitado

Por default o tratamento de interrupções é iniciado como habilitado

O Arduino disponibiliza funções para tratamento de interrupções externas que possibilitam executar funções sem a necessidade de ler constantemente o estado de um pino!

interrupts

void setup() { }

void loop() { noInterrupts(); // critical, time-sensitive code here

interrupts(); // other code here }

O Arduino disponibiliza funções para tratamento de interrupções externas que possibilitam executar funções sem a necessidade de ler constantemente o estado de um pino!

Muito útil quando queremos nos concentrar em uma atividade e ser interrompidos quando uma determinada condição acontecer

attachInterrupt

Especifica uma função a ser chamada quando uma interrupção externa for identificada

Substitui qualquer função que tenha sido anexada a interrupção anteriormente

attachInterrupt(interrupt, function, mode)

attachInterrupt

Arduino UNO Interrupção 0 = pino2 Interrupção 1 = pino3

Arduino MEGA Interrupção 0 = pino2 Interrupção 1 = pino3 Interrupção 2 = pino21 Interrupção 3 = pino20 Interrupção 4 = pino19 Interrupção 5 = pino18

attachInterrupt(interrupt, function, mode)

Função a ser chamada quando a interrupção acontecer Não deve ter nenhum parâmetro de entrada Não deve retornar nada

É a função que efetivamente trata a interrupção! Nela você vai colocar o código que você quer executar quando a interrupção acontecer!

attachInterrupt(interrupt, function, mode)

Define quando a interrupção será disparada LOW – Dispara sempre que o pino estiver baixo CHANGE – Dispara a interrupção sempre que o pino

mudar de valor RISING – Dispara a interrupção sempre que o pino sair

de baixo para alto (borda de subida) FALLING – Dispara a interrupção sempre que o pino sair

de alto para baixo (borda de descida)

attachInterrupt(interrupt, function, mode)

int pin = 13; volatile int state = LOW;

void setup() { pinMode(pin, OUTPUT); attachInterrupt(0, blink, CHANGE); }

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

void blink() { state = !state; }

Desliga o tratamento para a dada interrupção

detachInterrupt(interrupt)

detachInterrupt

Arduino UNO Interrupção 0 = pino2 Interrupção 1 = pino3

Arduino MEGA Interrupção 0 = pino2 Interrupção 1 = pino3 Interrupção 2 = pino21 Interrupção 3 = pino20 Interrupção 4 = pino19 Interrupção 5 = pino18

detachInterrupt(interrupt)

Implementar a aplicação da sinaleira usando interrupções!

professorVictory Fernandes

www.tkssoftware.com/victory