Forum: Mikrocontroller und Digitale Elektronik Codevision Interrupts


von Steffen Burr (Gast)


Lesenswert?

Hallo!

Ich versuche nun seit Stunden den externen Interrupt in Codevision zu
aktivieren.
Es funktioniert auch recht gut. Ich stelle den INT0 auf fallende Flanke
ein. Die Prozedur wird aufgerufen - aber auch bei einer steigenden
Flanke! Völlig egal, was ich in das MCUCR Register schreibe.

GIMSK=0b01000000;       // INT 1 deaktivieren - INT 0 aktivieren
MCUCR=0x00000010;       // Fallende Flanke INT 0 aktivieren
GIFR=0x01000000;

Was mache ich hier falsch? Warum wird die Prozedur bei jeder Flanke
aufgerufen?

Wozu wird das GIFR Register gebraucht? Aus dem Datasheet bin ich nicht
ganz schlau geworden.

Danke!
Steffen

von ape (Gast)


Lesenswert?

mhmm hast du den Code ausm Sourcecode kopiert?
das is nämlich auf jeden fall erstma falsch:
MCUCR=0x00000010;       // Fallende Flanke INT 0 aktivieren
GIFR=0x01000000;
wenn dann müsste da anstelle eines x ein b hin also:
MCUCR=0b00000010;       // Fallende Flanke INT 0 aktivieren
GIFR=0b01000000;
Ob das dein Problem beseitigt weiß ich aber nich :)
sicher das der Interrupt auch auf de rsteigenden Flanke ausgelöst wird
je nach dem wie du den Interrupt beschaltet hast könnte es ja auch
sein, dass du einen Prell Effekt hast (Wenn du einen Schalter zum
Auslösen benutzt)

von Steffen Burr (Gast)


Lesenswert?

Hia ape!

Du hast natürlich recht. Ich such da stundenlang nach dem Fehler und
dann ist es so was blödes! Aber mir ist es einfach nicht aufgefallen.

Es geht jetzt prima!

Danke!
Grüße
Steffen

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.