Interrupção Arduino
Interrupção Arduino
11.1 Objetivo:
Nesta aula serão estudadas funções internas do hardware do microcontrolador utilizado no
Arduino. O primeiro assunto abordado são as interrupções, seguido pelos contadores e
temporizadores. O objetivo do estudo destes conteúdos é permitir aos alunos que utilizem estes
recursos de hardware para desenvolver seus programas.
Onde:
pino: é o pino do Arduino (2 ou 3).
ISR: é o nome da função que deve ser executada pela interrupção.
modo: é o modo de ativação da interrupção, que pode ser,
• 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.
void setup()
{
pinMode(pinoLed, OUTPUT);
// ativa a interrupção
attachInterrupt(digitalPinToInterrupt(pinoInterrupcao), pisca, RISING);
}
void loop()
{
digitalWrite(pinoLed, estado);
}
O temporizador ou contador 1 pode receber os pulsos para sua contagem tanto do circuito
interno como de um sinal externo. A fonte dos pulsos de contagem é definida nos registradores de
controle. A seguir são apresentados estes registradores.
Cada um destes registradores possui grupos de bits que devem ser configurados para ajustar
o modo de operação do contador ou temporizados. A configuração destes registradores não é trivial,
e requer uma leitura atenciosa do manual do microcontrolador utilizado no Arduino.
Além destes registradores existem ainda outros registradores que são utilizados na contagem
e na comparação dos valores dos temporizadores ou contadores.
ISR(TIMER1_OVF_vect)
{
TCNT1 = 49911;
if(digitalRead(13)==LOW) {
digitalWrite(13,HIGH);
}
else {
digitalWrite(13,LOW);
}
}
void setup()
{ // configuração do temporizador
TCNT1 = 49911; // para 1 segundo
PRR &= ~(1 << PRTIM1);
TCCR1A = 0;
TCCR1B=(0<<WGM13)|(0<<WGM12)|0<<ICNC1|0<<ICES1|(1<<CS12)|(0<<CS11)|(1<<CS10);
TIMSK1 = 0 << OCIE1B | 0 << OCIE1A | 0 << ICIE1 | 1 << TOIE1;
sei();
pinMode(13,OUTPUT);
}
void loop()
{
11.4 Conclusão
Esta aula aforam apresentados temas relacionados a funções mais específicas do
microcontrolador utilizado no Arduino. O assunto e bastante amplo, e esta aula serve apenas para
demostrar superficialmente o funcionamento destes componentes. Maiores informações sobre o
microcontrolador utilizado no Arduino podem ser encontrada em:
http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-
ATmega328P_Datasheet.pdf.
Na próxima aula serão apresentados as entradas analógicas e as saídas PWM do Arduino.
11.5 Exercício
1) Implemente o exemplo de programa que utiliza as interrupções externas para alterar os números
do display no ThinkerCad e verifique seu funcionamento.
2) Implemente o exemplo de programa que utiliza as interrupções externas para alterar os números
do display no Arduino e verifique seu funcionamento.