Debounce Funktion

Gast #511827
Lesenswert?

Debounce wir nicht mit einem Timer ausgeführt, sondern ist ein Stück 
Maschinenprogramm, was eine Verzögerung von 25ms erzeugt, um einen
Eingang prellfrei abzufragen.

 Debounce Pind.0 , 0 , Paul , Sub

Wenn Pin D.0 auf 0 geht, springe in´s Unterprogramm "Paul".

MfG Paul
#512193
Lesenswert?

gast wrote:
> kann ich in einer ISR auch die debounce funktion verwenden?

Das wäre grober Unfug, denn die ISR sollte so kurz (so schnell) wie 
möglich sein, Debounce enthält aber eine Wartezeit. Tastenentprellung im 
(Timer-) Interrupt geht anders, da gibt es keine Wartezeiten. Siehe auch 
Tutorial und Wiki.

> werden die
> interrupts automatisch disabled wenn ich in einer ISR bin?

In Assembler ja, es sei denn, man schaltet in der ISR das I-Bit wieder 
ein.

Was Dein Compiler macht, weiß ich nicht. Zum Thema BASCOM und Interrupts 
solltest Du auch noch beachten, dass BASCOM beim Aufruf der ISR 
(unnötigerweise) alle 32 Register sichert um beim Rücksprung ins 
Programm wiederherstellt, das sind schonmal 128 Takte, in denen die CPU 
für die eigentliche Arbeit blockiert ist...

...
#512234
Lesenswert?

gast wrote:
> also wenn 10 interrupts während einer ISR auftreten werden diese
> nacheinander abgearbeitet?

Nein, das Interrupt-Flag des betreffenden Interrupts ist ein 
1-Bit-Zähler und kennt nur die Zählerstände 0 und 1.

Das kann man aber mit etwas logischem Verständnis alles aus dem 
Datenblatt des AVRs ableiten...

...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren