Ich sag dir mal vom schematischen her wie ich das in der Programmierung gemacht habe. Ich hab mir auch alles selbst beigebracht, also wird das auch nicht zu 100% optimiert sein, aber es ist mal eine Orientierungshilfe.


-Ich habe nur eine einzige DoLoop-Schleife (mit wenigen Ausnahmen für LCD, spielt jedoch keine Rolle), sie bildet das Hauptprogramm.

-Soweit es möglich ist werden immer nur Flags abgefragt, damit nie gewartet werden muss. Beispiel: Anstatt zu warten bis man ein Zeichen über RS232 oder I2C empfängt liest man nur die Zustandsflags der Buffer aus.

-KEINE Delays verwenden. Nur dort wo es wirklich hardwarebedingt nicht anders möglich ist. Das gleiche gilt für alle anderen zeitfressenden Dinge.

-Um den Roboter softwaremäßig nicht bei einer Warteroutine fest zu fahren kann man Timer oder den Watchdog nutzen, die dann nach einer bestimmten Wartezeit die Routine beenden, überspringen

-Möglichst die Hardware voll ausnutzen. Also Hardware PWM, I2C, UART, auch Timer, Watchdog,...



Die Rechnerei an sich ist extrem zeitsparend. Eine Addition beispielweise dauert glaube ich nur 5 Cycles oder sowas. Das sind wenige µs bis ns. Da kannst also weis der Geier was berechnen und es lastet den µC nicht aus.