08 arduino and proteus - interrupt
Post on 20-Oct-2015
148 Views
Preview:
TRANSCRIPT
Controle de interruções interrupt noInterrupts
Tratamento de interrupções externas attachInterrupt detachInterrupt
Neste capítulo...
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; }
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)
top related