So ich habe jetzt schonmal den Code für den RFM02 in Bascom abgeändert, Funktioniert scheinbar aber nicht einwandfrei. Hab mittels einer LED getestet wie weit er kommt. Er geht bis zum anfang der Rf12_init funktion und dann wars das. Und ich weiß nicht warum. Hier der Code:
Code:' generated. Take care that the chip supports all fuse bytes.' ######################################################################## ' ### RF12-Test in Bascom ' ### Basiert auf Code von Benedikt K. ' ### Joachim Fossie Bär Reiter 04/2007 ' ######################################################################## $regfile = "m88def.dat" $hwstack = 32 ' default use 32 for the hardware stack $swstack = 10 'default use 10 for the SW stack $framesize = 40 '$PROG &HFF,&HFF,&HD9,&H00' generated. Take care that the chip supports all fuse bytes. $crystal = 8000000 $baud = 19200 Baud = 19200 Declare Sub Rf12_init Declare Function Rf12_trans(byval Wert As Word) As Word Declare Sub Rf12_setfreq(byval Freq As Single) Declare Sub Rf12_setbandwith(byval Bandwith As Byte , Byval Gain As Byte , Byval Drssi As Byte) Declare Sub Rf12_setbaud(byval Rfbaud As Long) Declare Sub Rf12_setpower(byval Outpower As Byte , Byval Fskmod As Byte) Declare Sub Rf12_ready Declare Sub Rf12_txdata(byval Maxchar As Byte) Declare Sub Rf12_rxdata(byval Maxchar As Byte) Const Rf12freq = 433.92 Const Rf12baud = 19200 Const Maxchar = 32 'config the SPI in master mode.The clock must be a quarter of the slave cpu ' Hier ggf. den SoftSPI reinmachen Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 0 , Clockrate = 128 , Noss = 1 ' werden benötigt für rf12_ready Spi_cs Alias Portb.2 ' SS-Pin Config Spi_cs = Output Spi_sdo Alias Pinb.3 ' MOSI-PIN Set Spi_cs Config Portc.4 = Output Led Alias Portc. 4 Led = 1 'init the spi pins Spiinit ' was so gebraucht wird Dim Count As Byte Dim Temp As Word Dim Rfdata(32) As Byte Dim Text As String * Maxchar At Rfdata Overlay Print "Init" Waitms 1000 Call Rf12_init ' ein paar Register setzen (z.B. CLK auf 10MHz) ' ######################################################################## ' ###### Hauptproggi ' ######################################################################## Waitms 1000 Led = 0 Waitms 1000 Text = "Dies ist eia 433MHz Test !!!!!{013}{010}" ' Je nachdem ob Sender oder Empfänger die entsprechenden Zeilen aktivieren Do 'Ewigschleife ' Hier ist die Senderoutine Print "Sende" Call Rf12_txdata(maxchar) Wait 1 Toggle Portc.4 Loop End 'end program ' ######################################################################## ' ###### Unterroutinen ' ######################################################################## Sub Rf12_init: Toggle Portc.4 Waitms 1000 Temp = Rf12_trans(&Hcc00) Toggle Portc.4 Waitms 400 Temp = Rf12_trans(&H8b61) Toggle Portc.4 Temp = Rf12_trans(&Ha640) Toggle Portc.4 Temp = Rf12_trans(&Hd040) Toggle Portc.4 Temp = Rf12_trans(&Hc823) Toggle Portc.4 Temp = Rf12_trans(&Hc220) Toggle Portc.4 Temp = Rf12_trans(&Hc039) Toggle Portc.4 End Sub Sub Rf12_txdata(byval Maxchar As Byte) Temp = Rf12_trans(&H8238) Rf12_ready Temp = Rf12_trans(&Hb8aa) Rf12_ready Temp = Rf12_trans(&Hb8aa) Rf12_ready Temp = Rf12_trans(&Hb8aa) Rf12_ready Temp = Rf12_trans(&Hb82d) Rf12_ready Temp = Rf12_trans(&Hb8d4) Rf12_ready For Count = 1 To Maxchar Rf12_ready Temp = &HB800 + Rfdata(count) Temp = Rf12_trans(temp) Next Count Rf12_ready Temp = Rf12_trans(&H8208) End Sub Function Rf12_trans(byval Wert As Word) As Word Local Lowbyte As Byte Local Highbyte As Byte Lowbyte = Wert And 255 Shift Wert , Right , 8 Reset Spi_cs Highbyte = Spimove(wert) Lowbyte = Spimove(lowbyte) Set Spi_cs Temp = Highbyte * 256 Temp = Temp + Lowbyte Rf12_trans = Temp End Function Sub Rf12_ready Reset Spi_cs While Spi_sdo = 0 Wend End Sub







Zitieren

Lesezeichen