Hi,
ja der Empfänger und Interupt muss nach dem senden wieder richtig initialisiert werden. Für RN-Mikrofunk habe ich gerade keinen Beispielcode parat aber für RN-AVR Universal.
Hier sieht die Senderoutine, die auch nach einen Interrupt Empfang funktioniert, so aus:
Code:
Sub Rfm12_senden(byval Anzahl As Integer)Local Ni As Byte
Disable Int0
D = Spitransfer(&H8238) 'Enable Transmitter; enable Synthesizer ;enable Crystal Osc
Gosub Rfm12_warte
D = Spitransfer(&Hb8aa)
Gosub Rfm12_warte
D = Spitransfer(&Hb8aa)
Gosub Rfm12_warte
D = Spitransfer(&Hb8aa)
Gosub Rfm12_warte
D = Spitransfer(&Hb82d)
Gosub Rfm12_warte
D = Spitransfer(&Hb8d4)
For Ni = 1 To Anzahl
Gosub Rfm12_warte
D = &HB800 + Ausgabedaten(ni)
D = Spitransfer(d)
Next Ni
Gosub Rfm12_warte
D = Spitransfer(&Hb8aa)
Gosub Rfm12_warte
D = Spitransfer(&Hb8aa)
Gosub Rfm12_warte
D = Spitransfer(&H82d9) 'alles aus
D = Spitransfer(&H82d9) 'Empfänger ein
D = Spitransfer(&Hca83)
D = Spitransfer(&H0000)
Eifr.intf0 = 1
Enable Int0
End Sub
Also so ähnlich oder fast genauso sollte es bei RN-Mikrofunk auch klappen.
Wichtig darin sind diese Zeilen:
Code:
Sub Rfm12_senden(byval Anzahl As Integer)
...
Disable Int0
...
D = Spitransfer(&H82d9) 'alles aus
D = Spitransfer(&H82d9) 'Empfänger ein
D = Spitransfer(&Hca83)
D = Spitransfer(&H0000)
Eifr.intf0 = 1
Enable Int0
End Sub
Ich nehme die Funktion selbst zum quittieren von Funkmessages!
Lesezeichen