Timer1 – Probleme gelöst

Bis vor kurzem hatten wir noch große Probleme mit Timer1, welchen wir für Multitasking benötigten (Problem war ja, dass die RP6Lib es so nicht ermöglicht, eine negative Zahl als Geschwindigkeit zu verwenden. Man musste das mit changeDirection regeln. Dafür haben wir eine kleine Funktion geschrieben).

Wir haben lange geforscht und recherchiert, die Datenblätter des ATmegas32 gelesen bis zum Umfallen (deshalb auch so lange kein Artikel mehr). Nun haben wir im Forum von Arexx nachgefragt und eine Antwort bekommen:
Um den Timer zu aktivieren, muss man bestimmte Register setzen. Mit unseren paar Zeilen zum Aktivieren haben wir aus Versehen einen anderen, wichtigen Timer ,,verwirrt“, sodass sich der andere Timer und unser Timer ,,gehauen“ haben und sich das Programm aufhing. Mit einer einzigen Änderung konnte dieses Problem behoben werden, jetzt kann man die Geschwindigkeit von -200 bis 200 in eine normale Variable schreiben und der Roboter fährt, wenn die Zahl z.B. -200 ist, mit der Geschwindigkeit 200 rückwärts.

Kurz zur Erinnerung: Der Wallfollower Algorithmus gibt eine Zahl von -200 bis 200 aus. Anders ist das nicht möglich. Wenn man dann noch die Lichtsensoren am Boden für die Sackgassenerkennung implementieren will, kann es Zeitprobleme geben. Deshalb Multitasking.