Forum: Mikrocontroller und Digitale Elektronik Interrupt enablen was passiert dabei???


von Sandro (Gast)


Lesenswert?

Hatte vor etwa 2-3 monaten einen beitrag hier geschriben mit einem
interrupt problem. Hatte einen interrupt, der auf beide flanken einen
inputs kommen soll. habe dann jedoch festgestellt, dass dieser teils
mehr als eigentlich ausgelöst, teils weniger kam.

hatte nun wieder mal zeit und den fehler gefunden. hatte die bedinnung
ob er aktiviert, oder deaktiviert sein soll "dauernd" mit einer if
abgefragt, und dann das interrupt enable bit gesetzt oder geresetet,
obs nun gesetzt war oder nicht!
nun wenn nun das interrupt enable bit gesetzt ist, und ich gebe erneut
den befehl es zu setzen (entspechend viele male), kann es sein das
interrupts ignoriert, oder zusätzliche hinzugezaubert werden.

wieso das? erscheint mir sehr unlogisch... hatte schon mal jemand
dieses problem???

von Sandro (Gast)


Lesenswert?

p.s. handelt sich um einen C167cr-lm

von Sandro (Gast)


Lesenswert?

niemand?

von Thomas S. (tstuetz)


Lesenswert?

Wenn ich dich richtig verstanden habe, hast du z.B:
im main() :

CC15IE=TRUE;
CC15IE=FALSE;

...

CC15IE=TRUE;
CC15IE=FALSE;

Durch Aufruf deiner Interruptroutine wird ja das CC15IR=FALSE;
Durch das wegsetzen und setzen "sieht" der Prozessor einen
Flankenwechsel wodurch wieder der Interrupt aufgerufen wird.

Ist völlig korrekt so.

Gruss

PS: kann Mann wunderbar dazu verwenden einen PEGEL-getriggerten
Interrupt an den C16x anzuschließen (der kennt ja nur
Flankengesteuerte).

von Sandro (Gast)


Lesenswert?

Thomas Stütz
ne stimmt nicht, habs wohl zu ungenau erklärt....

eher:
CC15IE = TRUE

und kurz darauf

CC15IE = TRUE

wird nirends FALSE gesetzt...

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.