Hallo Sternthaler,
bei meinen Versuchen mit dem Bluetooth-ASURO bei dem die Encoderwerte über die Funkschnittstelle übertragen werden, konnte ich ein interessantes Phänomen beobachten: Wenn die Motoren ausgeschaltet waren und der ASURO stillstand, gab es trotzdem manchmal den Fall, dass ein Encoder hochgezählt hat. Dies kam nur selten, bei bestimmten Stellungen der Codescheiben vor.Auch im Anhang (2 Beiträge vorher), ist das 'Nikolaus'-Programm von mir, wobei dort komplett nur über Interrupts gearbeit wird. Ich bin mir ziemlich sicher, dass in dem Programm keine Probleme mit den Interrupts auftreten, da ich ca. 10 Monate so alles durchgetestet hatte was nur irgendwie geht. (Soll nicht heißen, dass da tatsächlich kein Bug mehr vorhanden ist.)
Dieser Fehler würde Deine 94% Vorgabe erklären. Bei dem Zählvorgang werden wohl manchmal einige Ticks zuviel gezählt. Vielleicht gibt es doch in der Interruptauswerteroutine ein Problem.
Ein einfacher Test wäre vielleicht, bei jedem Encodertick einen Impuls auf einen Ausgangspin des Atmega8 zu geben und mit einem Speicheroszilloskop zu versuchen, den Ausreißer zu lokalisieren. Falls er regelmäßig kommt, könnte das ja auf einen Konflikt mit anderen Routinen hindeuten.
Immerhin läuft ja der 36Khz Interrupt und der 4Khz? Encoderinterrupt gleichzeitig.
Gruß,
robo
Lesezeichen