Hallo zusammen, bin gerade an einem Projekt mitdem ich ein Drehgeber auswerten möchte... Da Spur A und Spur B zeitlich 90° verschoben sind habe ich mir folgenden Algorithmus ausgedacht. habe einen Atmega8 Wenn Spur_A "steigende Flanke" und Spur_B "kein signal --> log.0" dann zähle vor sonst zähle zurück hat jemand irgendein passendes stückchen Quellcode für mich oder kanns schnell runterschreiben? gruß
:
Verschoben durch Admin
>hat jemand irgendein passendes stückchen Quellcode für mich oder kanns >schnell runterschreiben? klar: if (track_A "rising flank" && track_B "no signal --> log.0"){ count forward; } else { count backward; } Es hat bestimmt auch noch jemand ein passendes stückchen Compiler oder kanns schnell runterschreiben.
Beim xMega und bei manchen kleinen ARMs hab ich Peripherie gesehen, die genau für die Auswertung derartiger Signale gedacht ist. > oder kanns schnell runterschreiben? Mal abgesehen davon, dass ich dazu keine Lust habe: dafür fehlen noch ein paar Infos. z.B. welche Programmiersprache? oder: woher kann man wissen, dass auf Spur A eine Flanke war? muss / kann man ständig den Portpin abfragen? Kann man einen externen Interrupt verwenden? zu den Interrupts: Der Mega8 kann sowohl steigende als auch fallende Flanken zum auslösen eines Interrupts verwenden. Dass würde ich nutzen, selbst wenn ich die Auflösung nicht benötige. Dann kann man sicherstellen, dass das Signal vor dem Interrupt für die steigende Flanke auf low war und der Interrupt nicht von einer Störung auf der Leitung ausgelöst wurde.
abgesehen davon, daß es inhaltlich vollkommener Quark ist. Solange sich nichts tut, zählt es nämlich laufend zurück.
Im Forum Codesammlung Artikel Übersicht nach Themen: Link: AVR Softwarepool Link: 7 Drehgeber Und dann lesen.