mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATmega128 und die Interrupts


Autor: Alexander Nagel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: mikki merten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Alexander Nagel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 ?

Autor: Alexander Nagel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.