www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik unsaubere interruptquelle


Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe eine Frage zur Tasterbeschaltung an einem mc.
Ich habe einen Eingang (gpio) ueber einen Widerstand (33k) auf Vcc
gelegt. Mit einem Taster ziehe ich den Eingang dann auf low.
Jetzt habe ich den Eingang als Interruptquelle bei fallender Flanke
eingestellt.
Wenn ich die Taste drücke wird die ISR aber öfter als einmal
aufgerufen. Muss ich da noch eine Kapazitaet einbringen?

danke
  Florian

Autor: Hubert.G (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
www.mikrocontroller.net/articles/AVR-GCC-Tutorial#.28Tasten-.29Entprellu 
ng

Autor: Ferrice (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja du hast 2 möglichkeiten!
Entweder du baust dir eine Schaltung die zum entprellen der taste oder
du schaltest sobald du in der interrupt-routine drinnen bist die
interrupts aus.
dann arbeitest du deinen programmtext ab und dann schaltest du die
interupts wieder ein.
falls das immer noch nicht reicht musst du noch eine zeitschleife in
die interruptroutine mit einpacken!

mfg

Autor: dave (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Interrupts sind allgemein in einer ISR ausgeschaltet. Wenn man in C
nicht grad eine ISR mit INTERRUPT deklariert, ist sie da auch aus.

Jedoch werden die IRQs nach der ISR abgearbeitet, aber immer max.
einer, denn da zählen nur die Flags...

dave

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Ferrice

"dann arbeitest du deinen programmtext ab und dann schaltest du die
interupts wieder ein.
falls das immer noch nicht reicht musst du noch eine zeitschleife in
die interruptroutine mit einpacken!"


Solche Hackermethode nennt man "trial and error", hat absolut nichts
mit zuverlässiger Programmierung zu tun und sollte man schleunigst
vergessen.

Ehe man sich völlig blindlings darauf verläßt, daß ein Programmteil
rein zufällig die richtige Ausführungszeit hat, nimmt man einfach einen
Timerinterrupt und weiß dann definitiv, daß das Abtastinterval immer die
richtige Entprellzeit hat !
Und das dann auch völlig unabhängig davon, ob man am Programm später
was entfernt oder noch hinzufügt.


Es ist immer besser, etwas wissentlich zu machen als nur rumzuprobieren
und dann zu hoffen, daß es klappt.


Der Link von Hubert.G ist daher schon goldrichtig.


Peter

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.