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
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...
Aber ich seh doch aufm Oszi, dass da nix prellt. Wie wird denn so eine Entprellung Softwaremässig durchgeführt?
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.
jeder taster prellt, der eine mehr, der andere weniger.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.