Poste doch mal Deinen Code...
Grüße
Torsten
ok es ist schon spät und ich bin müde ... aber dennoch:
habe ein entprell problem und bekomm die lösung weder aus der Suche hier noch in der hilfe von Bascom
ich bekomms nicht in meinen schädel.
also ich habe einen kippschalter, der löst einen countdown auf einer 7-segment anzeige aus. klappt alles. (int0 als externer interrupt mit rising)
habe in die do schleife ein disable - enable int0 mit waitms 30 reingepackt.
wenn ich jetzt schalte läuft der vorgang auch nur einmal ab. schalter zieht eingang auf gnd, pullups sind an.
schalte ich den schalter wieder runter, startet der vorgang aber erneut.
ich denke er prellt halt beim runterschalten auch ganz fein ....
das kann man doch mit DEBOUNCE einstellen oder?
da gibts drei parameter (pin,state,label) aber ich brings einfach nicht zusammen.
ich benutze pind.2
also
debounce pin2.d, 0, und label???
oder doch 1 ?
für label steht in der hilfe was mit sub usw usw, ich rufe halt nur int0serv auf, is das mein label?
ohje ....
ich muss ins bettchen ...
ein anfänger der müde augen vom suchen hat sagt danke!
Poste doch mal Deinen Code...
Grüße
Torsten
Ich weiß nicht, ob du den Debounce-Befehl mit einem Interrupt verbinden kannst - du musst eigentlich keinen Interrupt verwenden.
So funktioniert der Debounce-Befehl:
declare sub tastendruck
do
debounce pind.2 , 0 , tastendruck , sub
'pipapo restliches programm
loop
sub tastendruck
'hier steht was der taster machen soll
end sub
ich dachte mir sowas schon, ich werd mal den code schnell umbasteln ...
danke schonmal
JUHUUU
es funktioniert PERFEKT
aaaaah es kann so schön sein ...
hmmm irgendwie brauch ich so gar keine interrupts mehr ..... fein fein
vielen dank!
Solange zwischen den Abfragen nicht zuviel Zeit vergeht funktioniert das recht gut.hmmm irgendwie brauch ich so gar keine interrupts mehr ..... fein fein
Wenn doch dann muste doch nen Int nutzen oder die Tasten länger gedrückt halten.
Gruß
Ratber
Hallo,
Ich habe das auch mal ausprobiert, funktioniert alles.
Nur wie kann ich es machen, das wenn ich Taste1 festhalte und dann Taste3 drücke soll er zu Sub Fall4 springen. und nicht vorher irgendwo anders hinspringen.
Code:... Do For I = 1 To Keys Key = I Select Case Key Case 1 : Debounce Pind.0 , 1 , Fall1 , Sub Case 2 : Debounce Pind.1 , 0 , Fall2 , Sub Case 3 : Debounce Pind.2 , 0 , Fall3 , Sub End Select Next Loop ...
Indem du in den Debounce-Subs nur den Status der Tasten festhälst und am ende der Debounce-Befehle in einer eigenen Sub nochmal prüfst ob mehrere Gedrückt sind und dann erst reagierst.
Gruß
Ratber
Kannst Du mir da mit einen "Codeschnipsel" unter die Arme greifen???
Ja,kein Problem .
Ich habs jetzt absichtlich mal ganz simpel und nachvollziehbar gehalten.Code:Dim Taste1 As Bit Dim Taste2 As Bit Dim Taste3 As Bit ... Do For I = 1 To Keys Key = I Select Case Key Case 1 : Debounce Pind.0 , 1 , Fall1 , Sub Case 2 : Debounce Pind.1 , 0 , Fall2 , Sub Case 3 : Debounce Pind.2 , 0 , Fall3 , Sub End Select Next Gosub Auswert Loop ... Fall1: Taste1 = 1 Return Fall2: Taste2 = 1 Return Fall3: Taste3 = 1 Return Auswert: 'Hier kann man mit If...Then oder Case die Kombinationen auswerten. 'Die höherwertigen Mehrfachkombinationen zuerst. 'also erst 3er dann 2er und am Ende 1er Return
Das läst sich auch viel einfacher gestallten aber es geht ja ums Prinzip.
Erst wird einfach in Variablen der Status der Tasten festgehalten und erst am Ende der Abfrageschleife geprüft welche Tastenkombinationen gedrückt wurden.
wie gesagt läst sich das auch etwas geschickter machen als wie da oben.
Nicht das de gleiche einer rumspottet.
Gruß
Ratber
Lesezeichen