Externe Interrupts

Gast #19675
Lesenswert?

Hallo,

hab mal ne kurze Frage zu den externen Interrupts
INT0 u. INT1.
Hab mal ein bischen probiert und auch im Tutorial
nachgelesen.
Meine Tests :
Mcucr = &B00001010 'beide Interr. reagieren auf fallende Flanken
Mcucr = &B00001111 'beide Interr. reagieren auf steigende Flanken
Mcucr = &B00000101  Hier sollten laut Tutorial beide Interrupts auf jede 
Pegeländerung reagieren .
Machen Sie aber nicht.
Hat einer einen Rat für mich ????

Gruss Gerhard
Gast #19678
Lesenswert?

Die Option Änderung der Pegels gibt's beim 8515 nicht. Nur 
steigende/fallende Flanke und L-Pegel. Natürlich müssen die 
entsprechenden Flags für die Freigabe nicht nur im MCUCR sondern auch im 
GIMSK gesetzt werden und SEI nicht vergessen.
Gast #19680
Lesenswert?

Hallo Gerhard,

ich benutzte einen at90s4433. Der soll bei jeder Pegeländerung einen 
Interrupt auslösen. Das Komische ist, dass AVR-Studio beim Simulieren 
die INTF0 nicht setzt, sondern ich muss immer per Hand die Flagge 
anklicken. BUG??. Real läft es aber bestens!



so läfts in AVR-Studio nicht:

outp((1<<INT0), GIMSK);   // enable external int0 (PD2)
outp((0<<ISC01)|(1<<ISC00) , MCUCR);
            // any logical change creates interrupt0
...


wenn ich ISC01 setze (siehe unten), dann läft das ganze in AVR-Studio 
bestens.

outp((1<<INT0), GIMSK);   // enable external int0 (PD2)
outp((1<<ISC01)|(1<<ISC00) , MCUCR);
            // The rising edge of INT0 generates an interrupt request.
...

Bei Dir liegt es sicherlich am Chip, wenn der die Funktion garnicht 
kennt... Es würde mich interessiern, ob dieser Fehler von AVR-Studio 
schon mal jemandem aufgefallen ist?

Gruß
Zoltan
Gast #19681
Lesenswert?

Ist kein Bug. Bei Level Interrupt bzw. Level Change Interrupt wird der 
Interrupt zwar ausgelöst aber das entsprechende Flag nicht gesetzt. Ist 
allerdings im entsprechenden Datenblatt ausführlich dokumentiert.

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