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.