Das Folgende ist ein Nebenprodukt aus einem größeren Projekt. Die Abfrage des Drehimpulsgebers durch den "Hauptprozessor" (ATMega8) wollte allem sportlichen Ehrgeiz zum Trotz einfach nicht zuverlässig klappen und so habe ich das "Problem" irgendwann einfach ausgelagert.
Heraus gekommen ist eine kleine Schaltung mit einem ATtiny13. Die kann man als eigenständiges Modul in beliebige Projekte einbinden und ich denke, dass das deshalb für den einen oder anderen interessant sein dürfte.
Die Schaltung gibt pro vollständigem Drehschritt einen Impuls aus (unvollständige werden ignoriert). Über PB2/Pin7 kann man das Format der Ausgabe bestimmen :
PB2 offen - Richtung / Clock
PB2 auf Masse - Up / Down
Ist PB2 offen, so kommt auf PB1 ein L-Impuls während zeitgleich der Pegel an PB0 die Drehrichtung angibt. Liegt PB2 an Masse, so kommt abhängig von der Dehrichtung ein Impuls an PB0 oder PB1 (Details siehe Tabelle in der Schaltung).
Die Funktionsweise kann man optisch verfolgen, wenn man das Hex-File "mit Delay zum Test" programmiert. Bei diesem Hex-File ist die Dauer der Impulse soweit verlängert, dass man sie auf an PB0 und PB1 angeschlossenen LEDs sehen kann.
Verwendet habe ich den Drehimpulsgeber C11B13 von ALPS. Andere Typen mit identischem Schaltschema sind ebenfalls verwendbar - ggf. muss man die RC-Kombinationen zur Entprellung anpassen.
Der Aufbau ist unkritisch. Neben dem ATtiny13 und seinen obligatorischen Bauelementen braucht es nur noch zwei RC-Kombinationen zur Entprellung. Der Schalter S1 muss nicht sein, man kann den Pin7 natürlich auch hart verdrahten. Der ATtiny13 wird mit dem beiliegenden Hex-File programmiert und auf 9,6 MHz internen Takt eingestellt.
Für die Assembler-Freaks :
Die vielleicht etwas merkwürdig wirkenden Kürzel und Kommentare werden schnell klar, wenn man sich diese Quad-Decoder Schaltung ansieht :
http://www.mikrocontroller.net/articles/Datei:Schaltplan_quad_decoder.png
Das Programm simuliert einfach die Funktion dieser Logik-Schaltung. Ein- und Ausgänge des D-FlipFlop und der EOR-Gatter sind durch Register abgebildet und die elektrischen und logischen Verknüpfungen bewerkstelligt das Programm. Die Signalaufbereitung am Schluß reduziert auf einen Impuls pro Drehschritt (der Quad-Decoder würde vier herausgeben) und bewerkstelligt die Ausgabe im gewünschten Format.
Heraus gekommen ist eine kleine Schaltung mit einem ATtiny13. Die kann man als eigenständiges Modul in beliebige Projekte einbinden und ich denke, dass das deshalb für den einen oder anderen interessant sein dürfte.
Die Schaltung gibt pro vollständigem Drehschritt einen Impuls aus (unvollständige werden ignoriert). Über PB2/Pin7 kann man das Format der Ausgabe bestimmen :
PB2 offen - Richtung / Clock
PB2 auf Masse - Up / Down
Ist PB2 offen, so kommt auf PB1 ein L-Impuls während zeitgleich der Pegel an PB0 die Drehrichtung angibt. Liegt PB2 an Masse, so kommt abhängig von der Dehrichtung ein Impuls an PB0 oder PB1 (Details siehe Tabelle in der Schaltung).
Die Funktionsweise kann man optisch verfolgen, wenn man das Hex-File "mit Delay zum Test" programmiert. Bei diesem Hex-File ist die Dauer der Impulse soweit verlängert, dass man sie auf an PB0 und PB1 angeschlossenen LEDs sehen kann.
Verwendet habe ich den Drehimpulsgeber C11B13 von ALPS. Andere Typen mit identischem Schaltschema sind ebenfalls verwendbar - ggf. muss man die RC-Kombinationen zur Entprellung anpassen.
Der Aufbau ist unkritisch. Neben dem ATtiny13 und seinen obligatorischen Bauelementen braucht es nur noch zwei RC-Kombinationen zur Entprellung. Der Schalter S1 muss nicht sein, man kann den Pin7 natürlich auch hart verdrahten. Der ATtiny13 wird mit dem beiliegenden Hex-File programmiert und auf 9,6 MHz internen Takt eingestellt.
Für die Assembler-Freaks :
Die vielleicht etwas merkwürdig wirkenden Kürzel und Kommentare werden schnell klar, wenn man sich diese Quad-Decoder Schaltung ansieht :
http://www.mikrocontroller.net/articles/Datei:Schaltplan_quad_decoder.png
Das Programm simuliert einfach die Funktion dieser Logik-Schaltung. Ein- und Ausgänge des D-FlipFlop und der EOR-Gatter sind durch Register abgebildet und die elektrischen und logischen Verknüpfungen bewerkstelligt das Programm. Die Signalaufbereitung am Schluß reduziert auf einen Impuls pro Drehschritt (der Quad-Decoder würde vier herausgeben) und bewerkstelligt die Ausgabe im gewünschten Format.