Okay, also ich hab es jetzt nochmal noch feiner umgeschrieben das Programm.
Und hab so weit erstmal etwas hin bekommen, das die Schaltung zumindest reagiert, sobald Daten an kommen.
Irgendwie scheint da das Hardware-SPI nicht so richtig zu funktionieren oder ich bein einfach zu blöd für...
Hab das SPI jetzt raus gelassen und ne komplette Software-SPI Lösung geschrieben. Und damit funktionierts...
Für alle dies Interessiert, hier der code (nur Schade das result beim Empfangen immer 0x00 ist, obwohl beim ersten Byte 0x31 gesendet wird...)
Code:' Empfangen von Daten auf dem Evaluation-Board ' Modul: RFM01 ' AVR: Mega8 $regfile = "m8def.dat" $crystal = 8000000 Declare Function Rf01_trans(byval Wert As Word) As Word Declare Function Read_fifo() As Byte Dim A As Byte Dim B As Byte Dim Temp As Word Dim Result As Byte Led1 Alias Portd.6 Led2 Alias Portd.5 Modul_power Alias Portd.4 Spi_cs Alias Portb.2 ' SS-Pin Spi_sdo Alias Pinb.4 ' MISO-PIN Ddrd.4 = 1 Ddrd.5 = 1 'LED 2 Ausgang Ddrd.6 = 1 Reset Led2 Reset Modul_power Wait 1 For A = 1 To 6 Toggle Led2 Waitms 200 Next A Reset Led2 Set Modul_power Waitms 200 Portb.2 = 1 'Slave inaktiv Portb.3 = 1 'MOSI auf high Portb.5 = 0 'Sck Low Portb.7 = 1 'FSK high Ddrb.2 = 1 Ddrb.3 = 1 Ddrb.4 = 0 'MISO = Eingang Ddrb.5 = 1 'Ddrd.2 = 0 'INT0 als Eingang 'Ddrd.7 = 1 'FSK als Ausgang Temp = Rf01_trans(&H0000) Temp = Rf01_trans(&H898a) Temp = Rf01_trans(&Ha640) Temp = Rf01_trans(&Hc847) Temp = Rf01_trans(&Hc69b) Temp = Rf01_trans(&Hc42a) Temp = Rf01_trans(&Hc240) Temp = Rf01_trans(&Hc080) Temp = Rf01_trans(&Hce88) Temp = Rf01_trans(&Hce8b) Temp = Rf01_trans(&Hc081) Ddrd.7 = 1 'FSK Ddrd.2 = 0 'nIRQ B = 0 Do Do Loop Until Pind.2 = 0 Set Led2 B = B + 1 Result = Read_fifo() If Result = &H00 Then Set Led1 Waitms 200 Reset Led1 End If If B = 18 Then Temp = Rf01_trans(&Hce88) Temp = Rf01_trans(&Hce8b) B = 0 'Set Led2 'Waitms 200 'Reset Led2 End If Reset Led2 Loop Function Rf01_trans(byval Wert As Word) As Word Temp = 0 Portb.5 = 0 'Low SCK Portb.2 = 0 'Low SS For A = 15 To 0 Step -1 If Wert.a = 1 Then Portb.3 = 1 Else Portb.3 = 0 End If Portb.5 = 1 'high sck nop nop nop nop Portb.5 = 0 Next A Portb.2 = 1 End Function Function Read_fifo() As Byte Portb.5 = 0 Portb.3 = 0 Portb.2 = 0 For A = 0 To 15 Portb.5 = 1 nop Portb.5 = 0 nop Next A For A = 7 To 0 Step -1 If Pinb.4 = 1 Then Result.a = 1 Else Result.a = 0 End If Portb.5 = 1 nop Portb.5 = 0 nop Next A Portb.2 = 1 Read_fifo = Result End Function End








Zitieren
Lesezeichen