#define TRUE 1
#define FALSE 0
volatile int cont;
volatile int Flag;
void setup() {
configura(); //Serial e pino 2
/* prepara a interrupção INT0 por flanco de descida*/
EICRA = (EICRA | (1 << ISC01)) & ~(1 << ISC00);
EIMSK = EIMSK | (1 << INT0); //Habilita INT0
}
void loop() {
Flag = cont = 0;
Serial.print("contador de Chave com INT0 .\n");
Serial.print(cont);
Serial.print("\n");
while(TRUE){
while(Flag == 0); //Espera interrupção por contagem
Flag = 0;
Serial.print(cont);
Serial.print("\n");
}
}
void configura(){
Serial.begin(9600);
DDRD = DDRD & ~(1 << DDD2); //DDD2 = 0, entrada
PORTD = PORTD | (1 << PD2); //pull-up habilitado
}
/* ISR para a interrupção INT0 */
ISR(INT0_vect){
cont++;
Flag = 1;
}