PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Atmega8 mit rfm12 nur halbe Funktion Hilfe!



mat-sche
02.12.2010, 19:36
Hallo Leute,

ich zerbreche mir meinen Kopf schon den ganzen Tag und find einfach den Fehler im Programm nicht!
Nutze das Programmteil zum Senden/Empfangen über ein RFM12 erfolgreich in anderen Applikationen (M32/128). Jetzt habe ich dies auf einen M8 übertragen. Alle Funktionen aus dem Programm laufen aber der Teil für das Senden/Empfangen laufen nicht. Der Empfang läuft teilweise aber nicht richtig. Es wird das erste empfangene Byte richtig erkannt, der Rest stimmt nicht mehr. Dann empfängt er nur sporadisch mit falschen Werten.
Schaut mal bitte darüber, weiß selber nicht mehr weiter...
Vielleicht liegt es an der SPI Funktion???
Hardware kann ich ausschließen weil ich 2 Boards habe, bei denen es nicht funktioniert.

Danke & Gruß MAT

mat-sche
04.12.2010, 09:24
Hi,

Fehler gefunden! Thema hat sich erledigt.
MAT

TheDarkRose
04.12.2010, 09:49
Und was war der Fehler??

mat-sche
04.12.2010, 11:41
Nun, ich hatte für die Empfangsroutine festgelegte Größe für den Empfangspuffer (Recive_buffer_size) zu klein eingestellt. In der unteren Sub habe ich dann noch Änderungen vorgenommen.
Sollte jetzt irgend woher ein Signal zur Auslösung der Empfangsroutine kommen, wird der gesammte Frame empfangen und nicht weiter ausgewertet.




'+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++ INT1 ISR(Daten vom RFM12)
'Interrupt Routine zum empfangen der bytes aus dem RFM 12
Ffit_isr:
'Stop Timer1
Spiin Fifo(1) , 2 '1 Byte lesen
Temp = Fifo(2)
If Temp = Snap_sync And Rf_sync = 0 Then
Rf_sync = 1
Lv = 1
Framelength = 4
End If
Rf12_data(lv) = Temp
If Lv = 3 Then Framelength = Temp
If Lv >= Framelength And Rf_sync = 1 Then 'alles eingetroffen
Rf_rxd = 1 'Flag setzen und Empfänger zurück setzen
Rf_sync = 0
End If
Incr Lv
' Überlauf abgefangen , passend zum Empfangsbuffer
If Lv >= Recive_buffer_size Then
Rf_sync = 0
Lv = 1
Call Rf_cmd(&H0000) 'read status
Call Rf_cmd(&Hca81) 'Reset FIFO wir warten wieder auf SYNC vom RFM 12
Call Rf_cmd(&Hca83) 'enable FIFO
End If
Return
End

Ripper121
08.12.2010, 13:33
Wie ist deine Beschaltung vom RFM12 an den Atmega8 und Atmega32?
Hast du Fusebits und Quartz verändert?
Könntest du bitte deine Codes für den Atmega32 und Atmega8 Posten?
Läuft das auch auf dem Pollin-Funk-Board?

mfg Ripp3r]D3[