-         

Ergebnis 1 bis 10 von 10

Thema: ich bekomm das mit dem debounce ... erledigt danke!

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    12.02.2006
    Beiträge
    164

    ich bekomm das mit dem debounce ... erledigt danke!

    Anzeige

    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!

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    25.02.2005
    Beiträge
    175
    Poste doch mal Deinen Code...

    Grüße

    Torsten

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    01.11.2004
    Alter
    33
    Beiträge
    29
    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

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    12.02.2006
    Beiträge
    164
    ich dachte mir sowas schon, ich werd mal den code schnell umbasteln ...

    danke schonmal

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    12.02.2006
    Beiträge
    164
    JUHUUU

    es funktioniert PERFEKT


    aaaaah es kann so schön sein ...

    hmmm irgendwie brauch ich so gar keine interrupts mehr ..... fein fein

    vielen dank!

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.09.2004
    Ort
    Düsseldorf
    Beiträge
    3.948
    hmmm irgendwie brauch ich so gar keine interrupts mehr ..... fein fein
    Solange zwischen den Abfragen nicht zuviel Zeit vergeht funktioniert das recht gut.

    Wenn doch dann muste doch nen Int nutzen oder die Tasten länger gedrückt halten.
    Gruß
    Ratber

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    13.08.2004
    Beiträge
    101
    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
    ...

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.09.2004
    Ort
    Düsseldorf
    Beiträge
    3.948
    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

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    13.08.2004
    Beiträge
    101
    Kannst Du mir da mit einen "Codeschnipsel" unter die Arme greifen???

  10. #10
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.09.2004
    Ort
    Düsseldorf
    Beiträge
    3.948
    Ja,kein Problem .


    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
    Ich habs jetzt absichtlich mal ganz simpel und nachvollziehbar gehalten.
    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

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •