Zitat Zitat von MrMiffy08 Beitrag anzeigen
Code:
Isr_timer0:
   Timer0_reload = 100                                      'Vorgabe für 50 / sec
   Timer0 = Timer0_reload + Wert

   If Timer0 = 25 Then   'Wertbegrenzung nach unten
   Timer0 = 25
   End If

   If Timer0 = 255 Then  'Wertbegrenzung nach oben
   Timer0 = 255
   End If

   Toggle Led_gelb                                          '= Stepper_takt
Return


Linksroutine:
Decr Wert
Return

Rechtsroutine:
Incr Wert
Return
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.

läuft der Timer über wenn ich den DE über den Wert hinaus drehe. Wie kann ich das verhindern?
In der Links-, Rechtsroutine kannst Du den Wert doch auch begrenzen? Je nachdem wie groß er ist, eben nicht mehr decrementieren oder incrementieren?

Gruß
Searcher