> Timer_irq:
> Timer1 = Timervorgabe
>
> If I = 0 Then
> F1 = Fstart
> Fstart = Fstart + Z
>
> If Fstart = Fende Then
> I = 1
> End If
> End If
>
> If I = 1 Then
> Fstart = Fstart - z
> If Fstart = F1 Then
> I = 0
> End If
> End If
Lass die Werte für Fstart und Fende in Ruhe.
Du willst nur in jedem Timerinterrupt F1 hochzählen
oder erniedrigen.
Wenn das Richtungsflag auf 'nach oben' steht, willst du
F1 erhöhen. Erreichst du dadurch Fende, dann wird die
Richtung auf 'nach unten' umgeschaltet. Wird beim
Runterzählen wieder Fstart erreicht, wird die Richtung
wieder auf 'nach oben' umgestellt.
In keinem Fall musst du aber Fstart oder Fende verändern.
Das willst du auch nicht, denn das sind deine Eckdaten
an denen die Richtung umgestellt wird.
Im übrigen: Ist garantiert, dass Fstart + n * z
(n ganzzahlig, z beliebig) immer Fende ergibt?
Ich denke mal: eher nicht. Das heist es wird nicht
sehr schlau sein, die Richtungsumschaltung dann zu machen
wenn F1 exakt Fende ist.
Bsp:
FStart 1000
FEnde 2000
z 300
F1 nimmt dann die Werte an:
1000
1300
1600
1900
2200
Mit 2200 bist du schon grösser als die geforderten 2000.
Allerdings war F1 niemals exakt gleich 2000 und daher wird
auch die Umschaltung auf 'nach unten' nie durchgeführt.