Gast
#1277729
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ß