Hilferuf Debounce

Gast #1219913
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
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)
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

Eine eigene Frage? Dieser Thread ist über 17 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.