Re: Inkrementalgeber Kategorie: Programmierung (von André H. - 20.12.2003 14:41) | |
Als Antwort auf Inkrementalgeber von Frank - 19.12.2003 16:50
| |
Hallo Frank, Zuerst eine Frage: Warum schreibst Du hierfür eine eigene Funktion ? Du kannst in Deinem Proggie einfach dies counter = counter + ports.getcount(0); schreiben. Jetzt aber zu Deinem Problem: Die Station hat im Bezug auf die Interruptsensiblen Ports leider einen massiven Hardwarefehler: Es wurden die Pull-Widerstände an den Ports P1H.0 bis P1H.3 vergessen. Das hat auch bei vielen zur Folge, wenn diese Ports unbeschalten sind, da� Programme sehr langsam laufen können. (z.B. in der Nähe von Leuchtsofflampen) Da ich davon ausgehe, das Dein Geber ein einfacher Schalter ist, benötigst Du aber dringend Pull-Ups. Beschalte diese Ports einfach mit je 10k gegen +5V. Falls Dein Ink-Geber mechanisch funzt, könnte es ein Kontaktprellen geben. Dies lie�e sich z.B. mit einem kleinem Konensator reduzieren. Hänge einfach einmal 10nF zwischen Port und GND. MfG André H. > Hallo zusammen, > Hallo Tom, Hallo Cris! > > Für die Abfrage des Pulsgebers spreche ich nur einen Kanal an (A-Kanal), die Richtung verwalte ich > software-seitig. > Hier meine Funktion zum Abfragen des Inkrementalgebers: > > function zaehle_Impulse() returns long > // liest den Zählerstand am Port P0 aus, an diesen ist der A-Kanal > // des Ink-gebers angeschlossen > { > long counter; > > counter = ports.getcount(0); > sleep 1; > > return counter; > } > > > Die erforderliche Aufsummierung erledige ich ebenfalls im weiteren Programm. > > Wie bereits in meinem Posting bzgl der Stabilität der CCII-Station beschrieben, liefert mir diese Routine > unterschiedliche Impulszahlen, obwohl derselbe Winkel abgefahren wird. Ist meine Funktion etwa > nicht ganz korrekt?? Hab ich was übersehen?? > > Viele Grü�e, > Frank Antworten bitte nur ins Forum! Fragen per EMail auf Forum-Postings werden nicht beantwortet! Das macht meine Heizung gerade | |
Antwort schreiben Antworten: |