Hi,
hab mein Problem ganz gut und einfach lösen können.
Bei jedem Rastvorgang von A und B werden ja die Impulse um
ca. sag ich jetzt mal 180 Grad versetzt getätigt.
(siehe Bild aus Conrad Datenblatt; Habe ALPS-DrehEncounter v. Schuricht)
Z.B. in dem Moment, wenn A auf Low geht und somit PINB,3 gecleard wird,
springe ich in die ECP-Schleife und dann, erst wenn B (PINB,4) gecleard
wird, dann springts weiter zu meinem gewünschten Effekt (plus).
Damit löse ich diesen wirklich erst aus, wenn ich eine Komplette Rastung
des Dreh-Encoders getätigt habe. Keine Probleme mehr mit unerwünschten
Mehrfach-Impuls-Verarbeitungen bei ungünstiger Drehung des
Drehencounters! Funzt einwandfrei.
Eingabecheck:
sbis PINB,3 ;Encoder-PinA
rcall ECP
sbis PINB,4 ;Encoder-PinB
rcall ECM
sbis PINB,2 ;Encoder-PinD
rjmp start
rjmp Eingabecheck
ECP:
rcall wait2ms
sbis PINB,3
rjmp ECP
sbis PINB,4
rjmp plus
rjmp Eingabecheck
ECM:
rcall wait2ms
sbis PINB,4
rjmp ECM
sbis PINB,3
rjmp minus
rjmp Eingabecheck
Habe aber jetzt noch ein kleines anderes Problem!
Immer wenn ich genau diesen Code zu 32. mal ausführe,
d.h. wenn ich den drehencounter zum 32. mal gedreht habe,
dann wird scheinbar ein Reset ausgelöst!???
So als wäre da irgendein überlauf der bei 32 halt resetet.
??
(Wird übrigens ein Countdown-Timer mit über den Encoder einstellbarer
und auf LCD ausgegebener Zeit in Sekunden, Minuten und Stunden),
Weiß da wer Rat?
Grüße,
Andi.