Hallo
So vielleicht?
Code:
'### Dims ###
...
Dim Soll1_rc As Word
Dim Soll2_rc As Word
Dim Soll3_rc As Word
Dim Soll4_rc As Word
Dim Temp as Word
'### Clear Interrupt ###
Soll1_rc = Tcd0_cca
Soll2_rc = Tcd0_ccb
Soll3_rc = Tcd0_ccc
Soll4_rc = Tcd0_ccd
'### Set Temp ###
Temp1_rc = Soll1_rc
Temp2_rc = Soll2_rc
Temp3_rc = Soll3_rc
Temp4_rc = Soll4_rc
'### Main ###
Main:
If Temp1_rc <> Soll1_rc Then
If Temp1_rc < Soll1_rc Then
Temp = Soll1_rc - Temp1_rc
If Temp < 100 Then
Temp1_rc = Soll1_rc
Else
Temp1_rc = Temp1_rc + 100 ' Schrittweite1
End If
Else
Temp = Temp1_rc - Soll1_rc
If Temp < 50 Then
Temp1_rc = Soll1_rc
Else
Temp1_rc = Temp1_rc - 50 ' Schrittweite2
End If
End If
Tcc0_cca = Temp1_rc
Waitms 20 ' Wartezeit
End If
Tcc0_ccb = Soll2_rc
Tcc0_ccc = Soll3_rc
Tcc0_ccd = Soll4_rc
Goto Main
'*******************************************************************************
'### ISR #######################################################################
'*******************************************************************************
Capture_a:
Soll1_rc = Tcd0_cca
Return
Capture_b:
Soll2_rc = Tcd0_ccb
Return
Capture_c:
Soll3_rc = Tcd0_ccc
Return
Capture_d:
Soll4_rc = Tcd0_ccd
Return
(unkompiliert und ungetestet)
Die Verzögerung wird zum einen über die Schrittweite und zum anderen über die Wartezeit eingestellt. Ich hab's mal nur für einen Kanal geschrieben, bei mehreren Kanälen addieren sich die Verzögerungen, möglicherweise wird dann alles zu träge. Versuch macht kluch.
Gruß
mic
Lesezeichen