interrupt, Zwangsausloesung bei Erlaubnis

Gast #47466
Lesenswert?

Hallo, leute.
Noch eine Frage. Ist das wirklich so, dass wenn ich die interrupts
erlaube, dann werden die sofort ausgeloest oder das macht nur
AVR-Studio??? Weiss jemand wie man so was vermeiden kann?

also z.B. int0 ist in gimsk und mcucr configuriert ung jetzt folgt
sei... AVR-Studio macht sofort eine ausloesung von int0, obwohl keine
aenderung am pin int0 vorhanden sind. Nehmen wir an, ein Wert im r16
soll bei int0 incrementiert werden, wenn ich das richtig verstehe, dann
wird r16 sofort nach erlaubnis (sei - Befehl) ein mal incrementiert und
dann nur bei Aenderung am pin Int0
Gast #47467
Lesenswert?

Tip: Erst MCUCR schreiben, dann Setzen des Bit INT0 im GIMSK, dann  das
Bit INTF0 im GIFR-Register auf 0 setzen (Achtung! Dazu muss
unlogischerweise eine 1 in das Register geschrieben werden!), dann erst
SEI. So herum müsste es klappen. Habe es aber nicht ausprobiert.

MfG
Gerd
Gast #47468
Lesenswert?

Ich habe mich wahrscheinlich zukompliziert ausgedrueckt. Aber es ist so,
dass sofort nach dem "sei" Befehl wird interrupt ausgeloest. Nur ein
mal, dan laeuft alles weiter.

Und das will ich irgendwie vermeiden
Gast #47469
Lesenswert?

Aaaaaah so....
Jetzt habe ich kopiert was Du meinst.
Im GIFR-Register bit INTF0 wird 1 wenn ich wirklich level am Pin INT0
entschprechend MCUCR veraendere. Und am anfang muss ich von Hand sagen,
dass da eine Null ist (es ist kommisch, aber eine 0 wird dann, wenn ich
dort 1 reinschreibe) und dann kommt sei...Und uebergang zum
interrupt-vektor wird nicht gemacht, weil im INTF0 eine Null ist

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