So, wenn ich jetzt in die Routine den PWM-Ausgang setze, dann verzählt sich dar µC komischerweise ständig, besonders, wenn ich nur lagsam drehe. Wenn ich das weglasse, zählt er wieder jeden Schritt genau. Hier der Code, den ich bisher zum Testen geschrieben hab:
Code:
regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 16000000
$baud = 9600
Declare Sub Serial0charmatch()
Config Serialin = Buffered , Size = 30 , Bytematch = 13
Config Porta = Output
Config Pinc.0 = Input
Config Portc.1 = Output
Config Portb.3 = Output
Config Timer1 = Counter , Edge = Rising
Config Timer0 = Pwm , Compare Pwm = Clear Down , Prescale = 8
On Timer1 Count
Enable Timer1
Enable Interrupts
Dim T As Long
Dim Preset As Byte
T = 0
Preset = 1
Waitms 500
Load Timer1 , Preset
Do
!nop
Loop
Count:
Load Timer1 , Preset
If Pinc.0 = 1 Then
T = T + 1
Else
T = T - 1
End If
Return
Sub Serial0charmatch()
Local Incoming_data As String * 30
Local Soll As Long
Local E As Long
Input Incoming_data Noecho
Print T
Soll = Val(incoming_data)
E = Soll - T
E = 10 * E
'Compare0 = 127 - E <---hier ist der kritische Term, auskommentiert bereitet er Probleme
End Sub
Kann es sein, dass dadurch die Sub zu lange dauert und daher das Programm blockiert? Ich weiß irgendwie nicht, woran das liegen kann...
Lesezeichen