- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 7 von 7

Thema: DrehEncoder Problem (2 Interrupts?)

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    21.04.2005
    Ort
    Hannover
    Beiträge
    190

    DrehEncoder Problem (2 Interrupts?)

    Anzeige

    Praxistest und DIY Projekte
    Hallo!

    Folgendes:
    Ich bastel ja an meiner Wetterstation rum. Komme auch Schritt für Schritt voran.
    Nun habe ich den Wunsch ein Menü mittels DrehEncoder steuern zu können.
    So weit so gut. Habe schon den Encoder-Befehl von Bascom ausprobiert, der macht aber 4 Impulse aus einer Rastung.
    Deswegen habe ich mittels D-FF Eine Richtung und einen Takt erzeugt.
    Den habe ich auch mittels debounce-Befehl ausgewertet und funktioniert. Leider werden oft Impulse verschluckt weil die Schleife zu lange dauert.
    Ich habe mir gedacht das ganze mittels Interrupt zu lösen. Leider habe ich allerdings auch eine DCF77 mit dranhängen, wo ja auch ein interner Interrupt jede sekunde ausgelöst wird.
    Ich möchte jetzt nicht wenn ich den Encoder drehe zufällig den Interrupt stören und Sekunden verlieren.
    Und Prioritäten kann man ja anscheinend auch nicht vergeben.

    Hat da jemand Erfahrungen wie man sowas lösen kann?

    Vielen Dank
    Marten83

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Da du den Encoder ja nicht soooo schnell drehen kannst, würde ich ohne Interrupt einfach die A-B Pins regelmäßig abfragen und zusammen mit dem vorherigen Wert über eine Lookup-Tabelle auswerten.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    21.04.2005
    Ort
    Hannover
    Beiträge
    190
    Das geht leider nicht.
    Nach jeder Rastung habe ich wieder die gleiche Schalterstellung im Encoder.
    Ich probier das jetzt einfach so mit dem Interrupt. Auf ne Sekunde kommt es ja auch nicht an.

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    09.05.2007
    Beiträge
    202
    Hallo Marten83,

    ich hatte das Problem, dass bei meinem Encoder immer zwei Impulse aus einer Rastung gemacht wurden. Ich habe das so gelöst:

    Code:
    _left:
    Toggle Encbit
    If Encbit = 1 Then
       Decr Enc_temp
    End If
    Return
    
    _right:
    Toggle Encbit
    If Encbit = 1 Then
       Incr Enc_temp
    End If
    Return
    Gruß, Stefan

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    21.04.2005
    Ort
    Hannover
    Beiträge
    190
    Danke für die Anregung.

    Ich kann mir das so auf die schnelle nicht mit deinem Encbit zusammenreimen, aber ich habe das bei mir jetzt mit Interrupt gemacht und funktioniert bestens.
    Wenn mal n Sekündchen verloren geht (doch selten)
    Dann wird es durch das DCF77-Signal ja wieder ausgeglichen.
    Hier mein Code (wen's interessiert):
    Code:
    Enable Interrupts
    Config Int0 = Rising
    Enable Int0
    On Int0 Prog
    ...
    Prog:
    
       Waitus 200     'Wichtig, da das D-FF erst nach einem Takt die Richtung aktualisiert
       Set C            'Merkerbit zum löschen des Displays
       If Pind.1 = 0 Then
       Rotate Anzeige , Left
       Else
       Rotate Anzeige , Right
       End If
    
    Return
    Vielen Dank an Alle

    Marten83

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    09.05.2007
    Beiträge
    202
    Hallo Marten83,

    Encbit ist ein Flag (bit), welches pro Impuls getoggelt wird. Bei jedem zweiten Impuls wird eine Variable hoch oder runtergezählt.
    Gruß, Stefan

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    19.06.2007
    Beiträge
    33
    Hallo,

    sorry das ich den alten Thread nochmal ausgrabe.
    Aber ich hab auch das Problem das ich immer mind. 2-3 impulse bei einer Rasterung bekomme.
    Es kommt zwar gleich die "links" Antwort aber kurze danach eine "rechts" beim linksdrehen. Genau so aber umgekehrt in der anderen Richtung...

    Ist das dann sowas ähnliches wie Entprellen ?

    Wie kann ich das Problem beheben ?

    Ich benutze den Encoder-Befehl ziemlich genau so wie er in der Hilfe steht.

    Vielen Dank im voraus !

    M.f.G.
    Jürgen

Berechtigungen

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

Solar Speicher und Akkus Tests