Forum: Mikrocontroller und Digitale Elektronik Externe Interrupts


von Gerhard Humer (Gast)


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

von Peter D. (peda)


Lesenswert?

Und wenn Du jetzt noch verrätst, um welchen Chip es geht, könnte Dir 
sogar jemand helfen.

AVR ist nicht gleich AVR !


Peter

von Gerhard Humer (Gast)


Lesenswert?

Hi,

Hab's auf AT90S8515 probiert.
Sollte später ev. mal auf einem AT90S2313 laufen.


Gruss Gerhard

von mikki merten (Gast)


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.

von Gerhard Humer (Gast)


Lesenswert?

Hi,

Danke für die Antworten.
Kann mir einer verraten bei welchen AVR's diese Option
"Änderung des Pegels " funktioniert.


Gruss Gerhard

von Zoltan (Gast)


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

von mikki merten (Gast)


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.

von Zoltan (Gast)


Lesenswert?

Ok, aber obwohl der Interrupt ausgelöst wird macht, Flagge hin oder her, 
AVR-Studio nichts der wirkliche MC aber schon.
???

von mikki merten (Gast)


Lesenswert?

Steht auch in der AVR Studio Doku, dass der Level Change INT nicht 
korrekt simuliert wird.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.