Hallo
Deine Debug Ausgaben sind nach meinem Geschmack zu lang. Ich nehme dafür immer nur ein Zeichen, damit es schnell geht, auch mit Sendebuffer.
Code:
'Hier werden die Daten empfangen und geprüft auf die Bitzeiten
'Aufruf alle 80 µs
Timer0_overflow:
Timer0 = Timer0_reload
Incr Signal_count
'Ende gefunden oder Signal zu lang
If Signal_count > Pulse_max Then
print "A"
'Startbit = 1 and Pruef_bit = 0 dann Daten übergeben
If Daten_temp.pruef_bit = 0 And Daten_temp.start_bit = 1 Then
Print "B"
Daten = Daten_temp
Set Daten_empfangen
End If
Daten_temp = 0
End If
'Flankenwechsel ??
If Signal <> Signal_old.1 Then
Print Signal_count
'neuen Zustand merken
Toggle Signal_old
'Pulse zu kurz ??
If Signal_count < Pulse_min Then
Daten_temp = 0
Print "C"
End if
'Start oder Abfragezeitpunkt ??
If Daten_temp = 0 Or Signal_count > Pulse_1_2 Then
print "D"
'wenn noch nicht zuviele Daten, dann eine Stelle schieben
If Daten_temp.start_bit = 0 Then
Shift Daten_temp , Left , 1
Print "E"
End if
'Bit setzen wenn 0, da der Empfänger das Signal um 180° dreht, 0 = 1 1 =0 -> nicht notwendig
If Signal_old = 1 Then
Incr Daten_temp ' hier 1 da receiver keine Phasenverschiebung macht
Print "F"
end if
Signal_count = 0
End If
End If
Return
Probier das mal so
MFG
Dieter
Lesezeichen