Was läuft denn hier eigentlich mit meinen Interrupts!?

Gast #129334
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
Angehängte Dateien:
Gast #129335
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...
Gast #129337
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.
Gast #129339
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

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.