Mit einem rotary-encoder mit AVR Mikro-controller

Ich habe Probleme dabei, ein rotary encoder, um richtig zu arbeiten mit dem AVR-Mikro-Controllern. Der encoder ist eine mechanische ALPS encoder, und ich bin mit Atmega168.

Klärung

Habe ich versucht mit einem Externen Interrupt zu hören, um die Stifte, aber es scheint, wie es ist zu langsam. Wenn der Pin Eine geht hoch, das interrupt-Verfahren beginnt und dann überprüft, ob die Pin B ist hoch. Die Idee ist, dass wenn Pin B hoch ist der moment, Pin, die Eine ging hoch, dann ist es drehen gegen den Uhrzeigersinn. Wenn der Stift B auf low, dann dreht sich im Uhrzeigersinn. Aber es scheint, wie der AVR zu lange dauert, um zu überprüfen, pol B, so ist es immer gelesen wie hoch.

Ich habe auch versucht zu erstellen, ein Programm, das einfach blockiert, bis Pin B Pin oder Eine verpasst. Aber es könnte sein, dass es zu viel Lärm, wenn der encoder gedreht wird, weil dies nicht funktioniert entweder. Mein letzter Versuch war eine timer-speichert die letzten 8 Werte in einen Puffer und prüft, wenn es geht von niedrig bis hoch. Das hat nicht funktioniert entweder.

Habe ich versucht scoping-encoder, und es scheint zwischen 2 und 4ms von der ersten Pin-änderungen, bis die andere Pin-änderungen.

InformationsquelleAutor Marius | 2008-08-29

Schreibe einen Kommentar