Hallo, ich habe eine Problem mit der Inbetriebname des RFM12 Moduls.
Folgende Hardware liegt vor:
Atmega128 mit HardwareSPI und entsprechend angeschlossenem RFM12 Modul.
Als Software versuchte ich diese Hier:
Beitrag "Beispielprogramm für RFM12 433MHz Funk-Module"
Leider funktionierte diese nicht. Also erkundigte ich mich und kam
darauf, dass es öfters probleme gibt, wenn man eine SoftwareSPI benutzt,
also wollteich das umstellen auf HardwareSPI nur finde ich das
Datenblatt des RFM12 Moduls nicht sehr aussagekräftig. Gibt es eventuell
eine ähnliche Rutine, die mit der HardwareSPI arbeitet? (Ich habe leider
keine Gefunden)
Oder kennt jemand eine gute beschreibung / Datenblatt /sonstige
Beispiele zum RFM12 Modul, aus denen man die einzelnen Befehlssequenzen
ablesen kann.
Ich scheiter leider schon daran nach der Initialisierung den Status des
Moduls auszulesen.
Wäre schön, wenn ihr mir da helfen könntet.
Sönke
Hi,
der verwendete IC auf den RFM Boards ist von Integration, jetzt Silabs,
und zwar von IA4420/21. Einfach mal dort reinschauen und das Datenblatt
saugen. Dort gibts auch einige nette Application Notes, mit denen kann
man jedes Problem welches mit dem Chip auftaucht lösen.
Grüße
Fasti
danke hab eins gefunden, aber irgendwie steht da auch nicht mehr drin,
als bei Pollin, nur beispielschaltungen, jedoch kein beispielcode.
Gibt es den eine Fertige gut kommentierte rutine, welche per SPI
(Hardware) funktioniert? oder kann mir jemand bei meiner helfen?
Hallo,
Ja, wie im Datenblatt beschrieben: Kommando 0x0000 rüberschieben und die
zurückgelesenen 16Bit interpretieren. Erst kommen die 6 Interruptbits,
dann die 10 Statusbits. Wenn weiter getaktet wird kommt der FIFO-Inhalt.
Status lesen als erste Amtshandlung ist zu empfehlen, einige meiner
Module waren ziemlich eigensinnig, wenn ich das nicht gemacht habe.
Meine Initialisierung als Empfänger:
Harware-SPI bei mir Mode0, 1MHz Takt.
Laß am besten die Taktausgabe des RFM erstmal an (0x8280) und setze den
Takt auf was anderes als 1MHz (0xC080 setzt 2,5MHz). Die müßten dann am
CLK rauskommen.
Gruß aus Berlin
Michael
Sönke Paschko wrote:
> So nachdem ich nun den Status auslese bringt mich das auch nicht weiter,> da dieser immer 0 ist. vor und nach dem init.
Klingt nach einem Hardwareproblem, also einem falsch angeschlossenen
RFM12 (oder in der Software falsch eingestellte Pins).
Sönke Paschko wrote:
> hm du meinst meine software ist richtig?
Wenn nichtmal das Auslesen des Status Registers nicht funktioniert, dann
liegt es eher nicht an der Software.
Wenn du die Software nahezu unverändert übernommen hast, dann sollte
diese passen. Die Anpassungen an den mega128 scheinen zumindest auch ok
zu sein.
Wenn jetzt noch die Hardware auch ok ist, sollte es eigentlich
funktionieren.
Hi,
das mit der Beschaltung hatten wir doch schon mal in nem anderen Thread
von dir geklärt. Kurz gesagt das passt.
>Außerdem nutze ich noch einen 10k an FSK/DATA/nFFS
Ich hoffe gegen VCC.
Mit Wieviel Volt betreibst du denn den At128 und den RFM12 ?
n8
Bei 5v und ja gegen VCC. Kannst du mir beim HardwareSPI helfen?
vielleicht klappt es da besser. Wie kann ich denn bei einem HardwareSPI
auf die Daten im FIFO zugreifen oder einfach nur den Status ausgeben?
wie Mus ich das SPI initialisieren?
ist SPCR = 0b01010001 richtig? (Master, SPI enable, Interrupt Disable,
CPU-Takt durch 16, Polarität auf
null und Datenübernahme bei der ersten Taktflanke)
Und vor allem wie lese ich Daten??
Woooooow so weit war ich noch nie, er meldet kurz einen Status,
0b10010000 nach dem ersten Initialisieren, anschließend resettete sich
der Mega128 und der Status ist wieder 0. Die Schleife läuft durch, und
tut so als würde sie senden. Aber der Status ist immer noch 0
Ich konnte noch einmal einen Status entlocken, auch wieder mit Reset,
der war 0b10000000
Kann es sein, das ich das Modul beim Start des uCs initialisieren muss?
Ich mach das alles erst später, wenn ich das Modul brauche und aufrufe.