Forum: Mikrocontroller und Digitale Elektronik Statusregister des RFM12 auslesen


von Marcel K. (viewer)


Lesenswert?

Hallo zusammen,
Ich habe eine Frage zum initialisieren des RFM12. Ich habe schon einige 
Beispielcodes durchforstet aber habe keine Lösung gefunden.
Wenn ich am RFM12-Funkmodul nichts einstelle (Werte wie sie laut POR im 
Datenblatt angegeben sind), müsste man trotzdem das Statusregister 
auslesen können, oder?
Also 0x0000 senden und dann zwei Dummybytes um das Register dann 
auszulesen. So richtig??

Ich meine damit, Spannung anlegen und dann Status auslesen.

Viele Grüße und nen schönen Abend,
Marcel

von R. W. (quakeman)


Lesenswert?

Ich habe es zwar ohne Initialisierung noch nicht getestet, aber 
theoretisch sollte es gehen.
Auf was genau willst du eigentlich hinaus mit deiner Frage?

Ciao,
     Rainer

von Urs (Gast)


Lesenswert?

Ja, das geht. Direkt nach dem Powerup kommt 0x4000, zurück. Schöner Test 
um zu sehen, ob die SPI Kommunikation funktioniert. Aber du brauchst 
keine zwei Dummy bytes hinterher zu schicken.

von Marcel K. (viewer)


Lesenswert?

Hallo Ihr beiden,
Danke für eure Antworten!!

@Rainer:
Ja, was ich will hätte ich schon etwas genauer ausdrücken können, sorry! 
Ich möchte wissen ob generell meine Komunikation zum Modul funktioniert. 
(ATMega 16 auf STK500) Ich wusste nicht, so wie es Urs schreibt, dass 
das Modul die 0x4000 nach dem einschalten sendet. Was mich jetzt etwas 
verwundert ist, dass ich keine Dummy bytes senden muss. Das heißt ja, 
dass das Modul selbstständig sendet und das dann mein µC nur ein Slave 
ist? Jetzt bin ich total verwirrt!! Habe ich da etwas falsch verstanden?

Danke nochmal und viele Grüße,
Marcel

von R. W. (quakeman)


Lesenswert?

Marcel K. wrote:
> Ich wusste nicht, so wie es Urs schreibt, dass
> das Modul die 0x4000 nach dem einschalten sendet. Was mich jetzt etwas
> verwundert ist, dass ich keine Dummy bytes senden muss. Das heißt ja,
> dass das Modul selbstständig sendet und das dann mein µC nur ein Slave
> ist? Jetzt bin ich total verwirrt!! Habe ich da etwas falsch verstanden?

Ich denke, das hast du jetzt etwas missverstanden.
Er meinte mit "direkt nach dem Powerup kommt 0x4000 zurück", daß du ohne 
vorherige Initialisierung nach dem Starten gleich das Status Register 
auslesen kannst. Das RFM12 sendet natürlich nicht unaufgefordert, denn 
dies würde dem SPI Protokoll widerstprechen.

Wenn du das Statusbyte lesen willst, sendest du 0x0000 (das sind 2 
Bytes) an das RFM12 und gleichzeitig empfängst du den Inhalt des 
Statusregisters (ebenfalls 2 Bytes). Das Senden und Empfangen per SPI 
geschieht parallel und nicht hintereinander.

Die 0x4000 beim ersten Auslesen besagen, daß das Bit POR (Power On 
Reset) gesetzt ist und wird nach dem ersten Auslesen automatisch 
gelöscht.

Ciao,
     Rainer

von Marcel K. (viewer)


Lesenswert?

@ Rainer,
Super!! Vielen dank für deine Erklärung! Jetzt noch eine Frage zum 
Telegramm. Ich möchte das ganze über die Hardware SPI machen. Dort 
können ja nur 8 Bit Packete versendet werden. Das heißt ich kann nach 
dem senden der ersten 8 Bit die ersten 8 Bit vom Modul in meinem 
Empfangsregister auslesen und nach dem sende der letzten 8 Bit die 
zweiten 8 Bits vom Modul?

Das heißt auch, dass ich beim ersten auslesen die 0x4000 bekomme und 
dann die 0x0000 beim zweiten auslesen!!

So richtig :)
Grüße,
Marcel

von R. W. (quakeman)


Lesenswert?

Marcel K. wrote:
> @ Rainer,
> Super!! Vielen dank für deine Erklärung! Jetzt noch eine Frage zum
> Telegramm. Ich möchte das ganze über die Hardware SPI machen. Dort
> können ja nur 8 Bit Packete versendet werden. Das heißt ich kann nach
> dem senden der ersten 8 Bit die ersten 8 Bit vom Modul in meinem
> Empfangsregister auslesen und nach dem sende der letzten 8 Bit die
> zweiten 8 Bits vom Modul?

Genau.
Du schickst die ersten 8 Bit und empfängst die ersten 8 Bit. Dann 
sendest du die zweiten 8Bit und empfängst die zweiten 8Bit. Du musst 
dabei über den Zeitraum der beiden Byte die SS Leitung aktiv lassen, 
damit das RFM12 die beide zusammen auch als 16Bit erkennt.

> Das heißt auch, dass ich beim ersten auslesen die 0x4000 bekomme und
> dann die 0x0000 beim zweiten auslesen!!

Fast.
Beim ersten Auslesen erhälst du 0x40 (8Bit) und beim zweiten Auslesen 
0x00 (8Bit). Macht zusammen 0x4000 (16Bit). ;)

Ciao,
     Rainer

von Marcel K. (viewer)


Lesenswert?

Hi Rainer,
Danke für die genaue Erklärung!! Mein letzter Beitrag war wieder etwas 
unersichtlich. Ich meinte, so wie Fox schrieb, dass ich bei ersten 
auslesen des Statusregisters die 0x4000 empfange und dann soll ja das 
POR- Bit selbststädig gelöscht werden. Dann empfange ich beim zweiten 
auslesen die 0x0000. Das meinte ich. Aber trotzdem 1000 Dank für die 
genaue Erklärung. Ich denke ich komme heute Abend noch zum 
ausprobieren!!

Viele Grüße aus der Nähe Heidelberg,

Marcel (",)

von Marcel K. (viewer)


Lesenswert?

Hallo Rainer,
also es geht jetzt bei mir. Generell sollte das SS Signal mal auf High 
gesetzt werden. (am besten in der INIT) Dann kann man die Leitung 
verweden wie man sie braucht. So klappt es jetzt auch bei mir ;o)

Danke nochmal und viele Grüße,
Marcel

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.