Nabend zusammen Da ein anderer Thread mit dieser Problematik zu alt war wollte ich diesen nicht mehr ausgraben. Mein Problem ist das ich eine Funkverbindung mit 2 rfm12 modulen auf 869.850MHZ (100%dutycycle) aufbauen möchte. Das klappt soweit auch. Das Programm sendet ca alle 2 Sekunden die Zahlen von 1 bis 10 und der Empfänger gibt diese per uart aus. Hier mal das Ergebnis: 2 Data in: 0 0 0 0 0 0 0 0 0 0 3 Data in: 0 0 0 0 0 0 0 0 0 0 4 Data in: 0 0 0 0 0 0 0 0 0 0 5 Data in: 0 0 0 0 0 0 0 0 0 0 6 Data in: 0 0 0 0 0 0 0 0 0 0 7 Data in: 0 0 0 0 0 0 0 0 0 0 8 Data in: 1 2 3 4 5 6 7 8 9 10 9 Data in: 0 0 0 0 0 0 0 0 0 0 10 Data in: 1 2 3 4 5 6 7 8 9 10 11 Data in: 0 0 0 0 0 0 0 0 0 0 12 Data in: 1 2 3 4 5 6 7 8 9 10 13 Data in: 0 0 0 0 0 0 0 0 0 0 14 Data in: 1 2 3 4 5 6 7 8 9 10 15 Data in: 0 0 0 0 0 0 0 0 0 0 16 Data in: 1 2 3 4 5 6 7 8 9 10 17 Data in: 1 2 3 4 5 6 7 8 9 10 18 Data in: 170 0 0 0 0 0 0 0 0 0 19 Data in: 0 0 0 0 0 0 0 0 0 0 20 Data in: 1 2 3 4 5 6 7 8 9 10 21 Data in: 1 2 3 4 5 6 7 8 9 10 22 Data in: 170 0 0 0 0 0 0 0 0 0 23 Data in: 1 2 3 4 5 6 7 8 9 10 24 Data in: 170 255 255 255 255 255 255 255 255 255 25 Data in: 255 255 255 255 255 255 255 255 255 255 26 Data in: 255 255 255 255 255 255 255 255 255 255 27 Data in: 255 255 255 255 191 255 255 255 255 255 28 Data in: 170 0 0 0 0 0 0 0 0 0 29 Data in: 1 2 3 4 5 6 7 8 9 10 30 Data in: 170 0 0 0 0 0 0 0 0 0 31 Data in: 1 2 3 4 5 6 7 8 9 10 32 Data in: 170 0 0 0 0 0 0 0 0 0 33 Data in: 0 0 0 0 0 0 0 0 0 0 34 Data in: 1 2 3 4 5 6 7 8 9 10 35 Data in: 170 0 0 0 0 0 0 0 0 0 36 Data in: 1 2 3 4 5 6 7 8 9 10 37 Data in: 170 0 0 0 0 0 0 0 0 0 38 Data in: 0 0 0 0 0 0 0 0 0 0 39 Data in: 1 2 3 4 5 6 7 8 9 10 40 Data in: 170 0 0 0 0 0 0 0 0 0 41 Data in: 0 0 0 0 0 0 0 0 0 0 Man sieht das fast abwechselnd die Zahlen ankommen, oder einfach 10 0 ausgegeben werden. Hin und wieder taucht auch die Zahl 170 auf wobei mir der Ursprung dieses Werts noch nicht ganz klar ist. Interessant ist auch (zumindest für mich) das sobald ich den Sender mal aus mache 255 empfangen wird. Könnte hier vielleicht meine Schaltung Schuld sein? Verbindung m8=>Modul wie im Programm ersichtlich, alle anderen Anschlüsse liegen offen (ja sie liegen wirklich offen rum) Hier mal das Programm in Bascom Basic, die Software des Senders sieht gleich aus jedoch mit anderer Quarzfrequenz daher spare ich mir das diese hier zu posten. $regfile = "m8def.dat" $hwstack = 32 $swstack = 10 $framesize = 40 '$crystal = 11059200 $crystal = 4000000 $baud = 4800 Nsel Alias Portd.2 Sdi Alias Portb.3 Sdo Alias Pinb.4 Sck Alias Portb.5 Dim D As Word Dim Data_in(10) As Byte Dim Data_out(10) As Byte Dim N As Byte Dim Timeout As Word Dim T As Word Dim Tt As Word Dim Freq As Single Dim Count As Word Count = 1 Declare Sub Send_rfm12 Declare Sub Receive_rfm12 Declare Sub Freq_rfm12 Declare Sub Wait_rfm12 Declare Function Spi16(byval Dout As Word) As Word Config Nsel = Output Config Sdi = Output Config Sck = Output Config Sdo = Input Config Portc = Output 'Porta = &HFF Waitms 250 'Kurz warten damit das Modul starten kann sicher ist sicher 'Init Nsel = 1 Sck = 0 'D = Spi16(&H80d7) ' El , Ef , 11.5pf, 433 MHz band D = Spi16(&H80e7) ' El , Ef , 11.5pf, 868 MHz band D = Spi16(&H82d9) '!er , !ebb , Et , Es , Ex , !eb , !ew , Dc D = Spi16(&Ha67c) ' 434,15 MHz / 868,3 MHz D = Spi16(&Hc647) ' 4.8kbps D = Spi16(&H94a4) ' Vdi , Fast , 134 kHz , 0db , -79dbm D = Spi16(&Hc2ac) ' Al , !ml , Dig , Dqd4 D = Spi16(&Hca81) ' Fifo8 , Sync , !ff , Dr D = Spi16(&Hc483) ' @pwr , No Rstric , !st , !fi , Oe , En D = Spi16(&H9850) ' 90 kHz , power - 0 dB D = Spi16(&He000) ' D = Spi16(&Hc800) ' D = Spi16(&Hc000) ' 1 MHz , 2.2V Freq = 869.850 Freq_rfm12 Do For N = 1 To 10 Data_out(n) = N Next N Send_rfm12 Waitms 500 For N = 1 To 10 Data_in(n) = 0 Next N Timeout = 400 + Rnd(1000) Receive_rfm12 Count = Count + 1 Print Count; Print " Data in: " For N = 1 To 10 Print Data_in(n); Print " "; Next N Print "" Waitms 700 Loop Sub Freq_rfm12 If Freq < 800 Then Freq = Freq * 2 Freq = Freq - 860 D = Freq / 0.0050 If D < 96 Then D = 96 If D > 3903 Then D = 3903 D = D + &HA000 D = Spi16(d) End Sub Sub Send_rfm12 D = Spi16(&H8238) Wait_rfm12 D = Spi16(&Hb8aa) Wait_rfm12 D = Spi16(&Hb8aa) Wait_rfm12 D = Spi16(&Hb8aa) Wait_rfm12 D = Spi16(&Hb82d) Wait_rfm12 D = Spi16(&Hb8d4) For N = 1 To 10 Wait_rfm12 D = &HB800 + Data_out(n) D = Spi16(d) Next N Wait_rfm12 D = Spi16(&Hb8aa) Wait_rfm12 D = Spi16(&Hb8aa) Wait_rfm12 D = Spi16(&H8208) End Sub Sub Wait_rfm12 Nsel = 0 Do Loop Until Sdo = 1 End Sub Sub Receive_rfm12 Tt = Timeout * 10 D = Spi16(&H82c8) D = Spi16(&Hca83) For N = 1 To 10 Nsel = 0 T = 0 Do T = T + 1 Waitus 100 If T > Tt Then Goto Nosignal Loop Until Sdo = 1 D = Spi16(&Hb000) Data_in(n) = D Next N Nosignal: D = Spi16(&H8208) End Sub Function Spi16(byval Dout As Word) As Word Local Nspi As Integer Local Dspi As Integer Local Dsdo As Word Nsel = 0 Dsdo = 0 For Nspi = 1 To 16 Dspi = Dout And &H8000 If Dspi = 0 Then Sdi = 0 Else Sdi = 1 End If Dout = Dout * 2 Dsdo = Dsdo * 2 Dsdo = Dsdo + Sdo Sck = 1 Waitus 5 Sck = 0 Next Nspi Nsel = 1 Spi16 = Dsdo End Function Wenn irgendjemandem etwas auffallen sollte bitte ich um Mitteilung, das treibt mich doch grade etwas in den Wahnsinn :( Gruß
Hat denn Niemand eine Idee wieso 0 0 0 0 0 0 0 0 0 0 empfangen wird wenn der Sender aktiv ist, und 255 255 255 255 255 255 255 255 255 255 wenn der Sender aus ist? Das bedeutet doch das der Empfänger ein Signal bekommt, aber wie weiter? Einen haareraufenden Gruß
Hallo, habe mich nicht durch den Kram gewühlt (nichts mit Bascom am Hut...). Wenn Du Dein Telegramm komplett empfangen hast, muß Du den FIFO aus- und wieder einschalten, damit der RFM12 neu auf die Syncronisation wartet. Machst Du das nicht, bleibt er auf Empfang und empfängt allen möglichen Müll. rfm12_send_cmd(0xCA81); // set FIFO mode, FIFO off rfm12_send_cmd(0xCA83); // enable FIFO Mußt Du Dir selber nach Bascom tragen... Gruß aus Berlin Michael
Hi Das ist natürlich mal eine Idee, werde ich ausproieren sobald ich aus der Uni raus bin. Danke schonmal :) Gruß
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.