I changed the interrupt configuration but saw no changes...
#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdio.h>
int i=0;
int k=0;
int j=0;
void ataque() {
i++;
if (i>3) {
digitalWrite(13,HIGH);
delay(100);
digitalWrite(13,LOW);
TCCR1B = 0x8;
i=0;
}
}
void ataque1() {
k++;
if (k>3) {
digitalWrite(13,HIGH);
delayMicroseconds(100);
digitalWrite(13,LOW);
TCCR3B = 0x8;
k=0;
}
}
void ataque2() {
j++;
if (j>3) {
digitalWrite(13,HIGH);
delay(100);
digitalWrite(13,LOW);
TCCR4B = 0x8;
j=0;
}
}
void conversao() {
OCR1A = analogRead(A0);
OCR3A = OCR1A;
OCR4A = OCR1A;
TCCR1B = 0x9; // inicia o timer da fase A
}
void ligatimer()
{
conversao(); // busca o sinal de controle
}
void ligatimer1()
{
TCCR3B = 0x9; // inicia o timer da fase B
}
void ligatimer2()
{
TCCR4B = 0x9; // inicia o timer da fase C
}
ISR(TIMER1_COMPA_vect) {
ataque();
}
ISR(TIMER3_COMPA_vect) {
ataque1();
}
ISR(TIMER4_COMPA_vect) {
ataque2();
}
void setup () {
sei(); // habilita todas as interrupções
attachInterrupt(3,ligatimer,RISING);
attachInterrupt(1,ligatimer1,RISING);
attachInterrupt(2,ligatimer2,RISING);
pinMode(13,OUTPUT);
pinMode(12,OUTPUT);
pinMode(11,OUTPUT); // pinos de ataque setados como saída
digitalWrite(13,LOW);
digitalWrite(12,LOW);
digitalWrite(11,LOW);
TCCR1A = 0x0; // configuracoes dos timers
TCCR1B = 0x8;
TCCR1C = 0x0;
TCCR3A = 0x0;
TCCR3B = 0x8;
TCCR3C = 0x0;
TCCR4A = 0x0;
TCCR4B = 0x8;
TCCR4C = 0x0;
TIMSK1 = 0x2;
TIMSK3 = 0x2;
TIMSK4 = 0x2; // fim das configuracoes
}
void loop(void)
{
}
any ideas?