hallo, ich kämpfe so seit ca. 3 tagen mit den ints des atmega128. und zwar habe ich 3 taster am Port D ( also auf INT0, INT1, INT2 ) zusätzlich 3 leds an Port E. Port D ist als input , Port E als output konfiguriert. laut datenblatt und dem imagecraft wizard ist die interrupteinstellung auch richtig. wenn ich den atmega resete oder frisch einschalte geht jeder der durch die 3 taster ausgelösten interrupts ( was ich durch die 3 leds an Port E sehen kann , die interrupts reagieren alle auf positive flanke ). mein problem liegt jetzt darin, dass wenn ich einen taster betätige der dazugehörige interrupt ausgelöst wird und ich kann den interrupt immer wieder auslösen. drücke ich jedoch einen andren taster im nachhinein passiert nichts. nur wenn ich den taster gedrückt halte kann ich einen andren interrupt auslösen. muss ich beim beenden des interrupts irgendein flag zurücksetzen ? im datenblatt stand drin, dass dies nach beendigung des ints das automatisch funktionert. wäre über ideen zur lösung sehr erfreut. gruss alex
Folgende Punkte solltest du noch beachten: Jeder Taster prellt, daher z.b. mittels Software entprellen. Durch das Prellen wird das entsprechende Flag erneut gesetzt. Daher vor Rückkehr aus der Interrupt-Routine das entsprechende Flag zurücksetzen. Während der Interrupt Routine ist die Ausführung von weiteren Interrupt normalerweise gesperrt. Die Flags werden aber aktulisiert und gespeichert.
die tasterentprellung ist softwaremäßig geregelt. das mit dem register habe ich schon einmal ausprobiert allerdings hat dies nicht funktioniert - laut datenblatt sollte durch schreiben einer 1 an die entsprechende stelle des EIFR registers der interruptflag gelöscht werden. ich hoffe nur, dass ich das im datenblatt so richtig verstanden habe - vielleicht ein andres register ?
ok - jetzt geht es. vielleicht habe ich nur vergessen die version mit dem EIFR schreiben nicht wirklich in den atmega geflasht ;) danke nochmal für den tipp. das die flag wärend des interrupts wieder gesetzt werden kann wusste ich zB noch nicht.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.