Wenn die Hardware um den Encoder bei jeder Drehung um eine Position ein Impuls erzeugt und ein Interrupt auslöst, der die Richtung in ISR einliest, könnte sich die Richtung mit neuem Wert überschreiben und braucht nicht gelöscht werden. Dann braucht man nur 2 Eingangspins beim µC und verliert keine Impulse. Es ist also mit dem Interrupt-Pin (Takt) besser und einfacher.
Ich habe das so überdenken und die einfachste Schaltung, die mir eingefallen ist, im Code skizziert.
Der NAND (N1) mit dem D-Flipflop (FF1) bilden einen Monoflop, dessen Impulslänge (Entprellen und Takt um 10ms) wird von R und C bestimmt. Die Werte können erst nach der Festlegung der Logik-Familie berechnet bzw. ermittelt werden. Die Diode (D) beschleunigt nur die Entladung vom C und kann bei niedriger Drehzahl (Hand) weg gelassen werden.
Die übrigen 2 NAND Gattern (N3 und N4) dienen als Ausgangstreiber. Die Schaltung wurde noch nicht ausprobiert, sollte aber funktionieren.
MfG
Code:
Vcc
+
|
+----+
| | _
| .--o--. +-| \
+-------------------|D S Q|-+ |N3)o---> Richtung
| | | _ _| +-|_/
| +---|T R Qo
| Vcc | | '--o--'
| + | | FF2|
| | | +----+
| +----+ |
| | | | _
| | .--o--. | +-| \
Drehencoder D1| _ +-|D S Q|-|--+--+-----+ |N4)o---> Takt
o-+-| \ | _ _| | | | +-|_/
+-o-_ |N1)o-|T R Qo-+ .-. |
| o---|_/ '--o--' R| | - D N1,N2,N3,N4=74XX00
=== D2 FF1| '-' ^
Gnd | _ | | FF1,FF2=74XX74
| / |-+--+
+-o(N2| |
\_|-+
|
- C
-
|
===
Gnd
Lesezeichen