Nun, ich hatte für die Empfangsroutine festgelegte Größe für den Empfangspuffer (Recive_buffer_size) zu klein eingestellt. In der unteren Sub habe ich dann noch Änderungen vorgenommen.
Sollte jetzt irgend woher ein Signal zur Auslösung der Empfangsroutine kommen, wird der gesammte Frame empfangen und nicht weiter ausgewertet.
Code:
'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ INT1 ISR(Daten vom RFM12)
'Interrupt Routine zum empfangen der bytes aus dem RFM 12
Ffit_isr:
'Stop Timer1
Spiin Fifo(1) , 2 '1 Byte lesen
Temp = Fifo(2)
If Temp = Snap_sync And Rf_sync = 0 Then
Rf_sync = 1
Lv = 1
Framelength = 4
End If
Rf12_data(lv) = Temp
If Lv = 3 Then Framelength = Temp
If Lv >= Framelength And Rf_sync = 1 Then 'alles eingetroffen
Rf_rxd = 1 'Flag setzen und Empfänger zurück setzen
Rf_sync = 0
End If
Incr Lv
' Überlauf abgefangen , passend zum Empfangsbuffer
If Lv >= Recive_buffer_size Then
Rf_sync = 0
Lv = 1
Call Rf_cmd(&H0000) 'read status
Call Rf_cmd(&Hca81) 'Reset FIFO wir warten wieder auf SYNC vom RFM 12
Call Rf_cmd(&Hca83) 'enable FIFO
End If
Return
End
Lesezeichen