Hi s.frings; sieht erstmal gut aus; =D>

ich bin mit den Original Bibs und deren Enbindung ins AVR-Studio auch nicht so ganz glücklich. Deshalb habe ich mir sämtliche headers in eine nibobee.h und alle Sourcen in eine nibobee.c zusammen kopiert, in denen ich jetzt meine Anpassungen vornehme.

Aber ich war gerade auf Sourcefourge - die Nibobeelib ist mittlerweile Revision 29 vom 2.4.'10. Ein Terminalmode und eine Motorenregellung sind hinzugekommen. (Aber die Lösungen sehen wieder viiel komplizierter aus, als Deine "Links_zu_schnell_dann_Links_ Stopp" Methode. Die neuen Sourcen sind noch nicht released, sondern in einem Ordner "trunk" unter der Rubrik develop versteckelt.

Die Original Sourcen sind es wert, verfolgt zu werden - "Again what learned" denk ich mir.

Der Timer 1 macht ja nicht nur die beiden PWM Ausgänge, mit dem OVF wird auch eine Systemuhr gebildet (clock.c), deren Initialisierung in der motpid.c codiert war. Bei mir ist sie nach motpwm.c gewandert. Dadurch dass ich jetzt eine Systemzeit habe, kann ich generell auf delay() verzichten. Meine Hauptschleife wird (noch) im ms-Takt (Zykluszeit) abgearbeitet; wenn ich eine Zeitverzögerung brauche, wird einfache eine Variable auf die Zeit gestellt und dann zyklisch dekrementiert. Solange die Variable > 0 ist wird der zu verzögernde Programmteil halt nicht ausgeführt, aber alles andere dann trotzdem.
Während ich auf die volle ms warte, kann ich ja mal eben eine gemultiplexte LED Ausgabe machen, und mir mal den Sensorstatus in eine Variable einlesen nachdem ich mir den Vorherstand für eine Flankenerkennung gemerkt habe.

Tja dann wollte ich mir einen weiteren PWM-Ausgang für eine Analoganzeige einrichten. Aber der OC0 ist mit LED3 und der OC2 mit DIR_R belegt. Also jetzt fliegen erstmal die Original LEDs und Widerstände (die leider mit Masse und nicht mit den Pins verbunden sind). Der PB3 wird dann extra PWM Ausgang vom Timer 0 und mit PB0..PB2 werden dann 6 LEDs gemuxt.

Sorry, dass ich jetzt hier soviel reingeschrieben habe, aber mich stört immer Verwendung von delay(), das direkte Setzen und Abfragen der IO-Pins innerhalb der Mainloop. und ausserdem fehlt in der nibobee.h "B" bei "#define ODO_L readit(PORTD,2)"