Forum: Mikrocontroller und Digitale Elektronik RFM22B auf Funktion überprüfen


von horst (Gast)


Lesenswert?

Hallo zusammen!

Ich habe mir vor einiger Zeit ein paar RFM22B Funkmodule gekauft welche 
ich auch schon mit Beispielcodes von Ulrich Radig am laufen hatte...
Zum Test hatte ich einfach das RFM22B Modul mit einem Atmega88 auf einer 
Steckplatine.

Doch nun nachdem ich viele andere Testprogramme über mein unverändertes 
steckbrett drüberliefen, funktionieren die Module nicht mehr?

Die Anschlüsse habe ich schon mehrmals überprüft, der Atmega scheint 
auch zu funktionieren (Leds, Uart funktioniert) und das Programm 
auszuführen nur der RFM22B macht nichts..

Wie kann ich das am besten ohne Oszilloskop prüfen?

von horst (Gast)


Lesenswert?

Meine Fuses: (atmega88 externer 8mhz-quarz)
-U lfuse:w:0xcf:m -U hfuse:w:0xdf:m -U efuse:w:0x01:m

RFM22B Test mit Funkscanner auf selber Frequenz (869.545)  (Gleich wie 
in main.c)
Im Nebenbereich gescannt -> Negativ

Selbes Programm und selbe Fuses auf einer fertigen Schaltung (worauf es 
auch schon funktionierte) = Negativ

von Fox Mulder (Gast)


Lesenswert?

Schon mal alles aus- und eingeschaltet?

von horst (Gast)


Lesenswert?

Ja hab ich.
Auch habe ich das makefile angepasst. (atmega8->atmega88 ; und in den 
headerdateien meinen 8mhz)

Ich tippe auf die fuses, aber kann das problem nicht lösen.

von horst (Gast)


Angehängte Dateien:

Lesenswert?

Hab leider das Problem immer noch nicht lösen können :/

Hier mal mein angepasster Beispielcode und meine Schaltung

von horst (Gast)


Lesenswert?

Kann man das Modul durch falsche Signale tot programmieren?

von horst (Gast)


Lesenswert?

Also der µC funktioniert auf jedenfall, ich habe das ganze gerade mit 
einem neuen probiert. Das einzige was mir noch einfällt ist neue RFM22B 
zu kaufen...

Das werd ich wohl machen müssen um herauszufinden ob die alten tot sind.

von Martin T. (mthomas) (Moderator) Benutzerseite


Lesenswert?

Können die Registerwerte des Transceivers auf dem Modul noch ausgelesen 
werden? Wenn ja, dann wird der Fehler wahrscheinlich auf der "Funkseite" 
sein. Viel reparieren kann man da wahrscheinlich nicht, lohnt sich auch 
kaum.

Falls die Registerwerte nicht mehr ausgelesen werden können, die 
Verkabelung (VCC, GND, MOSI, MISO, SCK, CS) nochmals prüfen. SPI-Takt so 
langsam wie möglich. Vielleicht nur ein unzuverlässiger Kontakt am 
Steckbrett (hatte ich hier vor kurzem auch - elende Sucherei, zu 
billiges Teil). Übliche Verdächtige wie fehlenden Pull-Up bei CS und 
fehlenden Kondensator nahe am RFM22 sind ja bereits ausgeschlossen.

Ich habe hier die RF-Seite eines RFM22 durch zu hohe Betriebsspannung 
zerstört (nicht auf Spannung an den Programmierleitungen bei ISP 
geachtet, die ja per SPI auch am Funkmodul anliegen), Registerwerte 
konnte man bei dem defekten Teil dann aber dennoch auslesen/schreiben.

von Sascha W. (sascha-w)


Lesenswert?

horst schrieb:
> Kann man das Modul durch falsche Signale tot programmieren?
tot programmieren nicht, aber Möglichkeiten gibts einige
* AVR an NIRQ auf Ausgang gestellt
* NSEL angesteuert und gleichzeitig MISO am AVR auf Ausgang gehabt

Oder eben zu viel Spannung - notfalls auch über die Programmierleitung 
wie von Martin beschrieben

Sascha

von horst (Gast)


Lesenswert?

Martin Thomas schrieb:
> Können die Registerwerte des Transceivers auf dem Modul noch ausgelesen
> werden? Wenn ja, dann wird der Fehler wahrscheinlich auf der "Funkseite"
> sein. Viel reparieren kann man da wahrscheinlich nicht, lohnt sich auch
> kaum.

Wie mach ich das am besten?

von Sascha W. (sascha-w)


Lesenswert?

horst schrieb:
> Martin Thomas schrieb:
>> Können die Registerwerte des Transceivers auf dem Modul noch ausgelesen
>> werden? Wenn ja, dann wird der Fehler wahrscheinlich auf der "Funkseite"
>> sein. Viel reparieren kann man da wahrscheinlich nicht, lohnt sich auch
>> kaum.
>
> Wie mach ich das am besten?

lies mit der entsprechenden Funktion 'rf22_read()' ein paar Register 
aus, und lass den Wert auf ein Display oder über UART ausgeben. Nach 
einem Reset habe viele Register ja einen Default-Wert (siehe Datenblatt) 
den du dann auslesen müsstest.

Sascha

von horst (Gast)


Lesenswert?

Danke jetzt hab ich den Beweis:

Endgültig TOT!
Kein Register gibt was anderes aus als 0

von horst (Gast)


Lesenswert?

Wenn ich das auslese bekomm ich bei jedem auslesen andere Werte:

zB:
3000000
3000000
0000000
0000000
0000000
0127000
0000600
0000000
0000000
0000000
0000000
3000000
0101270
0000000


usart_tx_i ist meine Funktion für die ausgabe von Zahlen

usart_tx_i(rf22_read(0x06));
usart_tx_i(rf22_read(0x07));
usart_tx_i(rf22_read(0x08));
usart_tx_i(rf22_read(0x09));
usart_tx_i(rf22_read(0x0a));
usart_tx_i(rf22_read(0x0b));
usart_tx_i(rf22_read(0x0c));

Ich kenn mich nicht mehr aus.
Jedenfalls sind meine neuen Module unterwegs, dann sehen wir weiter

von Sascha W. (sascha-w)


Lesenswert?

was zeigst du da an? - rf22_read gibt genau EIN Byte zurück

Sascha

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
Noch kein Account? Hier anmelden.