mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Was läuft denn hier eigentlich mit meinen Interrupts!?


Autor: Ganove Nr.1 (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

vielleicht könnt ihr mir helfen, ich bin der Verzweiflung nahe:

Ich habe eine Schaltung mit 90s8515, die einen Geber (Reed, momentan
Taster) am INT Eingang hat. Wenn jetzt der Interrupt ausgelöst wird,
wird ein Zähler erhöht (immer um eins).
Zum Problem: Manchmal zählt er aber gleich zwei Schritte hoch, woran
kann das liegen? Prellen entfällt, da nicht mit DSO sichtbar.

Erstaunlich ist auch, wenn ich die Warteschleife auf ca 2 sek setzte,
wird der Zähler zum zweiten mal inkrementiert, wenn die Taste schon
ewig losgelassen wurde! Wie geht das?

Im Anhang befindet sich die ISR, vielleicht kann jemand was entdecken.

Danke
Boris

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich sag trotzdem mal prellen.

bleibt ein int nich so lange aktiv, bis er ausgeführt wurde (also erst
nach sei)? das würde das ansprechen nach der warteschleife erklären.
mal ganz davon abgesehen ist eine warteschleife in der int routine
denkbar ungünstig...

Autor: Ganove Nr.1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aber ich seh doch aufm Oszi, dass da nix prellt.
Wie wird denn so eine Entprellung Softwaremässig durchgeführt?

Autor: thkais (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So ein Oszi ist seeehr träge im Vergleich zum Controller.
Häng doch mal spaßeshalber einen 100nF Kondensator zwischen INT-Leitung
und GND.
Soll das ein Taster sein, der durch Menschenhand betätigt ist? Dann
würde ich die Abfrage ganz anders machen, nämlich über einen
Timer-Interruopt. 20-50 mal pro Sekunde abfragen, ob eine Flanke da
war. Dann hast Du die Entprellung automatisch mit dabei, da alles, was
nicht ins Zeitraster paßt, ignoriert wird.

Autor: Matthias Friedrich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jeder taster prellt, der eine mehr, der andere weniger.

Autor: Ganove Nr.1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also, danke schonmal vorab.

Kann es sich wirklich um prellen handeln? Denn der Interrupt wird
ausgelöst und sperrt ja sofort, weitere INTS. Die Routine wird
zweimal ausgefürht.

Ich habe sogar schon probiert, das INT Flag zu löschen, wo bei ich
davon ausgehe, dass der Controller ohnehin keine INTs queuen kann.

Ich versteh des einfach 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.