Hilferuf Debounce

Gast #1219913
Lesenswert?
• ▲
▼
Hallo zäme,

ich han en Frag zum Debounce Befehl. Und zwar habe ich folgendes kleine 
Programm.
1
Do 
2
Config Debounce = 25
3
Debounce PIND.5, 0 , down, Sub
4

5

6
Loop
7

8

9
Down:
10
keypress_down = 0 ' zum entscheiden ob lang oder kurz gedrückt
11
Config Debounce = 2000
12
Debounce PIND.5, 1, down_long, Sub
13
if keypress_down = 0 then 
14
'ereignisse beim kurzen tastendruck
15
call decrement
16
call save
17
End If
18
Return
19

20
Down_long:
21
keypress_down = 1
22
return

Dies funktioniert überhaupt nicht. Wenn ich nun die taste drücke, fährt 
der im eiltempo die Zahl runter die mit decrement vermindert wird, egal 
ob ich lange oder kurz darauf drücke. Ich denke, dass es damit zu tun 
hat,  dass Debounce dass Programm nicht anhält, sonder nach 2sekunden 
wieder nachschaut, bis dahin läuft das Programm aber wieder 1000 mal 
durch den Debounce im Loop. Bitte gebt mir einen Anstoss in welche 
Richtung ich weitersuchen soll.

grüsse sascha
Gast #1220003
Lesenswert?
• ▲
▼
Soweit ich die Hilfe verstanden habe, prüft der Debounce den Pin und 
nach 25ms nocheinmal. Wenn diese beiden Ergebnisse übereinstimmen, gilt 
es als Tastendruck. Die Frage ist nur kann der Debounce wenn er in einer 
Sub aufgerufen wurde und später nicht mehr in der Sub ist, von alleine 
in die Sub zurückspringen, nochmals checken und dann die gewünschte 
Aktion ausführen.

Oder muss ich die ganze sache mit einem Timer lösen? Geht eine solche 
Abfrage überhaupt ohne Timer?

Grüsse
sascha
(Firma: e-jam GmbH) #1220947
Lesenswert?
• ▲
▼
Also soweit ich mich noch erinnere dient Debounce zur Tastenentprellung, 
d.h. du gibst eine Zeit vor und es wenn das Signal bei Debounce nach der 
Zeit t noch immer gleich ist gilt die Taste als gedrückt.
Was Du machst ist ein Setzen deiner Variablen auf 0 und dann eine 
Abfrage auf '0' und springst bei true in die Subroutine. Dein Zähler 
wird ohne Ende decrementieren.

Gruss
Eduard

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