Wie Dein Programm im Ganzen funktioniert, hab ich jetzt nicht nachvollzogen aber Folgendes fiel mir auf:
In der Isr_Timer0 wird erst der Timer0 gesetzt und dann abgefragt und eventuell nochmal gesetzt. Man könnte erst Timer0_reload und Wert verrechnen und dann abhängig vom errechneten Wert in der Bedingung den Timer0 nur einmal setzen und verhindert somit unnötiges "Hüpfen" des Timers. Timer0 ist ja keine Variable, sondern eine Hardwareeinheit im µC deren Veränderung ja auch gleich Auswirkung auf die HW hat.
In der Links-, Rechtsroutine kannst Du den Wert doch auch begrenzen? Je nachdem wie groß er ist, eben nicht mehr decrementieren oder incrementieren?läuft der Timer über wenn ich den DE über den Wert hinaus drehe. Wie kann ich das verhindern?
Gruß
Searcher
Lesezeichen