mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Interrupt Atmega168


Autor: Peter Kolb (amp65)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich möchte am Atmega168 einen ext. Interrupt am PCint18 (PD2) auslösen, 
fallende Flanke.
Er löst aber bei beiden Flanken aus.
Wo liegt mein Fehler?

Config Int2 = Falling
Enable Interrupts
Enable Pcint2
On Pcint2 Interrupt2
Pcmsk2.2 = 1

Danke Peter

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> ich möchte am Atmega168 einen ext. Interrupt am PCint18 (PD2) auslösen,
> fallende Flanke.
> Er löst aber bei beiden Flanken aus.
> Wo liegt mein Fehler?

Wenn die Konfiguration wirklich stimmt dann prellt wahrscheinlich dein 
Signal. Woher kommt es? Von nem Taster? Lange Leitung?

MfG
Falk

Autor: Peter Kolb (amp65)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Falk,
mein Signal kommt von einem Microtaster, der auf der selben Platine 
sitzt.
Habe ihn schon mit einem C 100n entprellt.
Der Int reagiert aber immer noch auf beide Flanken.
Kann man die Flanken direkt über ein Register auswählen?
Und über welches?
Wie müssen die Bit`s für Pcint2 fallende Flanke sitzen?
Gruß Peter

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist dieses Verhalten beim "pin change" Interrupt nicht normal? Ich 
vermute, dass "Int2" und "Pcint2" zwei verschiedene Paar Stiefel sind - 
der erste ist wohl der althergebrachte flanken/pegeltriggerbare 
Interrupt-Eingang, der zweite der nur bei neuen Devices zu findende "pin 
change" Interrupt.

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Pin-Change-Interrupts reagieren afaik generell auf beide Flanken. 
Wenn Du was Flanken-sensitives machen willst, musst Du entweder in der 
ISR den Pinzustand abfragen oder einen externen Interrupt benutzen. Bei 
letzteren kann man einstellen, ob sie auf pos., neg. Flanke oder 
Low-Pegel reagieren sollen. Generell aber wieder mal anzumerken: Externe 
Interrupts sind zur Abfrage von mechanischen Kontakten eigentlich eher 
ungeeignet. Besser mit nem Timer ne Zeitbasis erzeugen und alle paar zig 
Millisekunden die Taster einlesen. Dann kann man sich den ganzen 
Entprell-Kram sparen.

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A.K. hat natürlich auch recht: Du schmeißt da in Deinem Programm was 
durcheinander! Der Pin-Change-Interrupt 2 und der externe Interrupt 2 
haben nichts miteinander zu tun! Und außerdem hat der Mega168 afaik gar 
keinen externen Interrupt 2...

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.