Hallo,
ich versuchs mal mit einem neuem Thread. Wie im Betreff, möchte gerne 2
mega8 mit Bascom funkmäßig verbinden. Dazu nutze ich den Sender rfm02
und den empfänger rfm01. Jetzt soll der Empfänger die Syncsequenz AA AA
AA 2Dd4 .. Daten vom Sender erkennen, macht er aber nicht. ich weiss
nicht wo es hängt hiermal der Quellcode in Bascom für den Sender:
$regfile = "m8def.dat"
$crystal = 8000000
$baud = 9600
Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes ,
Polarity = Low , Phase = 0 , Clockrate = 128 , Noss = 1
Config Debounce = 30
Declare Function Rf12_trans(byval Wert As Word) As Word
Declare Function Low_trans(byval Mywert As Byte ) As Byte
Ddrc = &B11111000
Ddrd = &B00011111
Ddrb = &B00101110
Spi_cs Alias Portb.2 ' SS-Pin
Spiinit
Dim Temp As Word
Dim Temp_byte As Byte
Dim A(8) As Byte
Set Spi_cs
A(1) = &HAA
A(2) = &HAA
A(3) = &HAA
A(4) = &H2D
A(5) = &HD4
A(6) = &H45
A(7) = &H46
A(8) = &H47
Waitms 150
'initsequenz
Temp = Rf12_trans(&Hc0e0)
Temp = Rf12_trans(&H8f80)
Temp = Rf12_trans(&Hc2a0)
Temp = Rf12_trans(&Ha620)
Temp = Rf12_trans(&Hb400)
Temp = Rf12_trans(&H8f80)
Temp = Rf12_trans(&Hd2c0)
Temp = Rf12_trans(&Hc823)
Temp = Rf12_trans(&Hc038)
Reset Spi_cs
Temp_byte = &HC6
Spiout Temp_byte , 1
Set Spi_cs
Waitms 100
Do
Waitms 100
Reset Spi_cs
Temp_byte = &HC6
Spiout Temp_byte , 1
Set Spi_cs
Waitms 100
Reset Spi_cs
Spiout A(1) , 1
Waitus 10
Spiout A(2) , 1
Waitus 10
Spiout A(3) , 1
Waitus 10
Spiout A(4) , 1
Waitus 10
Spiout A(5) , 1
Waitus 10
Spiout A(6) , 1
Waitus 10
Spiout A(7) , 1
Waitus 10
Spiout A(8) , 1
Waitus 10
Set Spi_cs
Set Spi_cs
Waitms 100
Reset Spi_cs
Waitms 100
Waitms 100
Reset Spi_cs
Temp_byte = &HC4
Spiout Temp_byte , 1
Set Spi_cs
Waitms 100
Waitms 100
Reset Spi_cs
Temp_byte = &H64
Spiout Temp_byte , 1
Set Spi_cs
Waitms 100
Loop
End
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
Ist nicht der schönste Code, aber vielleicht fällt ja jamenden was
gravierendes auf.
Der SDO im Empänger soll auf high springen wenn was im FIFO ist.
gruss stevensen
Steve Bennet wrote: > Ist nicht der schönste Code, aber vielleicht fällt ja jamenden was > gravierendes auf. Ja, der RF02 hat kein FIFO. Du kannst nicht einfach die Daten senden, sondern musst Bit für Bit anlegen. Siehe RF02 Datenblatt, Seite 14.
hallo benedikt, danke für den Tipp, die Aussage das Rfm02 kein FIFO hat, hatte ich in verschiedenen Threads gelesen, habe das aber nicht einordenen können. Leider kann ich auch nicht gut C, besonders nicht diese sehr krytpischen Ausdrücke. Ich habe mir deine Beispiele in C angeschaut, aber noch nicht ganz verstanden. Gibt es eine Delayzeit (z.b. abhängig von der einsgestellten Baudzeit) wenn ich die einzelnen Bits schicke? Und wann ändert sich nIRQ? Das "Data Transmit Command" muß ich ja, kurz bevor ich Daten schicken, senden. Das wäre dann noch ein "normaler" SPI-Versand, danach die Daten bitweise? Wenn ich deine RFM01/RFM02 Beispiele ausprobieren möchte, kann ich da die Taktfrequenz von 10 auf 8 MHz ändern, ohne das es Timingprobleme gibt? Wären sie auch auf einem Mega8 lauffähig, wenn ich die Ports ändere? Ich hoffe ich verschwende nicht zu sehr deine Zeit und würde mich freuen wenn Du mir die Anzworten geben könntest.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.