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


von Ganove Nr.1 (Gast)


Angehängte Dateien:

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

von Tobi (Gast)


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...

von Ganove Nr.1 (Gast)


Lesenswert?

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

von thkais (Gast)


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.

von Matthias Friedrich (Gast)


Lesenswert?

jeder taster prellt, der eine mehr, der andere weniger.

von Ganove Nr.1 (Gast)


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!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.