hallo ich habe einen encoder der firma elma typ e27. sieht so aus: --__--__--__ spur a --__--__--__spur b 1 2 3 4 5 6 7 ... nun mein problem mit der fallenden flanke der spur a löse ich einen interrupt aus. und möchte dann einen counter inkrementieren. aber der intterurpt löst bei jeder drehung aus (pos1 nach pos2) das darf nun wirklich nicht sein. kann das sein weil dieser encoder dermassen prellt? ich habe meinen source mal angehängt. bin um jeden tip dankbar. gruss tobias
hi Tobias, schau dir mal die dokumentation bezueglich TCON an... ...speziell die bits IT0 und IT1. viel erfolg Edgar
hallo edgar ich bin mir noch nicht so im klaren was TCON, IT0, IT1 mit dem problem zu tun haben soll. das IT0 u. IT1 flanken od. zustandgesteuert ist, ist mir schon klar. deshalb brauche ich ja EX5 (und nicht IT0 od. IT1) und der löst nur bei einer 1-0 flake einen interrupt aus. ohne rotary encoder funktioniert meine schaltung auch. aber sobald der encoder angeschlossen ist habe ich im moment für mich noch ein unerklärliches verhalten. gruss tobias
ich habe nun einfach mal einen schalter an EX5 angeschlossen und das problem habe ich immer noch. das heisst wenn ich den schalter einmal drücke wir bei einer 1-0 flanke ein interrupt ausgelöst.aber nicht nur einmal sondern zweimal. könnte es nun sein das ich in meiner interrupt routine das interrupt flag des EX5 nicht richtig lösche? ich habe EXIF in meiner reg51.def die adresse ox91 zugeordnet. mache ich da etwas falsch? gruss tobias
Hallo, Informatives zum Thema Encoder findest du auch in der dse-faq: http://www.dse-faq.elektronik-kompendium.de/dse-faq.htm#F.29 Gruß, Axel
In den Codebeispielen findet man auch was: http://www.mikrocontroller.net/forum/read-4-37992.html#37992 Peter
hallo peter genau das beispiel von dir habe ich genommen und versucht zu implementieren. aber irgendwas scheint noch nicht zu stimmen. da ich jedesmal einen anderen wert lese,obwohl ich den encoder gar nicht drehe. den source habe ich mal angehängt, vieleicht sieht ja jemand das problem.ich weiss im moment nicht weiter. besten dank tobias
@Tobias, sieht eigentlich genau so aus wie meins. Vielleicht kannst Du mal näher beschreiben, was Du fehlerhaftes beobachtest. Reagierts denn überhaupt auf das Drehen ? Peter
hallo peter nun habe ich das programm stark vereinfacht. in einer endlosschleife lese ich den zählerstand den encoder und gebe ihn auf einem lcd aus. (siehe anhang). als encoder habe ich nun einen bourns cjw1 angeschlossen. aber es funktioniert immer noch nicht richtig. fehlverhalten: -der zähler reagiert auf das drehen des encoder. es wird aber nur immer in die gleiche richtung gezählt. -der zähler wird nicht um 1 inkrementiert wenn ich eine position weiter drehe (rechts drehung) . manchmal sind es zwei inkrements manchmal ein inkrement. -wenn ich links drehe wird der zähler immer um etwa 10-14 inkrementiert. -wenn ich das delay vergrössere kann ich keine änderung mehr feststellen. (was auch logisch zu sein scheint) vieleicht hat jemand eine idee wo der fehler liegen könnte. besten dank tobias
der encoder heisst ecw1j. wobei in eingerasteter position die schalter immer offen sind. tobias
ich habe ein bisschen weiterprobiert. mit diesem encoder der in der rast stellung immer 0 sind kann der code mit der tabelle ja nicht funktionieren. der encoder schaltet folgendermassen: _--__--__--__--__-- A __--__--__--__--__--B 1 2 3 4 5 nun habe ich mein programm geändert. auf eine steigende flanke von A löse ich einen inetrrupt aus (versuche dann zu entprellen) und schaue ob B 1 oder 0 ist und bestimme dann die richtung. es funktioniert meistens. aber manchmal wird zweimal inkrementiert oder dekrementiert. kann das nun wegen dem prellen des schalters sein? kennt jemand eine bessere lösung zum entprellen als ich gemacht habe? ich habe mir auch schon überlegt einen MC14490 einzusetzen und das ganze hardware mässig zu lösen. tobias
nun habe ich es sauber hingekriegt. ich musst nur noch mein delay ein bisschen anpassen. das falsche inkrementieren war ein problem wegen dem prellen. tobias
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.