AtTiny24A externer Interrupt

Gast #3076193
Lesenswert?

Hallo zusammen,

versuche grad meinen ersten Interrupt zu generieren und komme grad nicht 
weiter....
Ich versuche eine steigende Flanke am PB2 zu detektieren.
Hierfür möchte ich den INT0 verwenden, jedoch ohne Erfolg.

Mein Ansatz:

ISR(INT0_vect)
{
 // Mach was....
}

int main(void)
{

   DDRB = 1 << PB2;
   PORTB = 1 << PB2;

   GIFR &= 1<<INTF0;
   MCUCR &= (1<<ISC01 | 1<<ISC00);
   sei();

    while(1)
    {
    // Mach was....
    }
}


So, was mache ich falsch oder was fehlt hier noch?
Vorab besten Dank!
#3076737
Lesenswert?

1
MCUCR |= (1 << ISC00) | (1 << ISC01); //configure INT0: rising edge
2
GIMSK |= (1 << INT0); //enable INT0
3
sei();
4

5
ISR(EXT_INT0_vect) {
6
  /*tu etwas*/
7
}

Bitte bedenke aber, das INT0 im sleep mode nur "low level" erkennt (also 
keine egde detection) und daher in diesem Falle der pin change interrupt 
das Mittel der Wahl ist:
1
//configure pinchange interrupt on PB2/INT0/PCINT10
2
PCMSK1 |= (1 << PCINT10); //configure interrupts for the PCINT1[8:11] to PB2
3
GIMSK |= (1 << PCIE1); //enable PCINT10
4
sei();
5
/*ggf. hier sleep mode aktivieren*/
6
ISR(PCINT1_vect) {
7
  /*hier müsstest du jetzt noch feststellen, um welche flanke es sich handelt/ob PB2 high oder low ist*/
8
  /*tu etwas*/
9
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren