Forum: Mikrocontroller und Digitale Elektronik RFM12BP Ansteuerung Tx- Rx-Register


von MisterD (Gast)


Lesenswert?

Hallo Leute,

bin ein RFM12BP neubie. Ich versuche eine Funkverbindubg zwischen zwei 
RFM12BP herzustellen.
Ich steuere die beiden mit jeweils einem DLN 4N Protocol Adapter an. Die 
SPI Schnittstelle zu den Modulen habe ich hergestellt, aber wenn ich die 
Config. Commands (0x80D8, 0x8239...) schicke bekommt ich im Rx-Puffer 
jedes mal was anderes (SPI full duplex konfiguriert)

Meiner Frage: Müssen spezifische Bits/Bytes nach Senden eines 
Konfigurationsbytes empfangen werden?

Wenn ich zu Beispiel 0x8239 als power manag. sende, bekomme ich 0x0066 
zurück

Wie kann ich das nun interpretieren?

Gruß, Martin

von c-hater (Gast)


Lesenswert?

MisterD schrieb:

> bin ein RFM12BP neubie. Ich versuche eine Funkverbindubg zwischen zwei
> RFM12BP herzustellen.
> Ich steuere die beiden mit jeweils einem DLN 4N Protocol Adapter an. Die
> SPI Schnittstelle zu den Modulen habe ich hergestellt, aber wenn ich die
> Config. Commands (0x80D8, 0x8239...) schicke bekommt ich im Rx-Puffer
> jedes mal was anderes (SPI full duplex konfiguriert)

Das ist völlig normal. Mit zwei Ausnahmen (Status und RX-Fifo) sind alle 
Register der RFM-Dinger nur schreibbar, nicht lesbar.

Sprich: was du an Daten zurückbekommst, kannst du mit Ausnahme dieser 
beiden Register getrost in die Tonne kloppen.

von MisterD (Gast)


Lesenswert?

@ C-hater danke

"Sprich: was du an Daten zurückbekommst, kannst du mit Ausnahme dieser
beiden Register getrost in die Tonne kloppen."

Also alle die im SPI Rx-Puffer empfangene Bytes (siehe Dialog) sind 
irrelevant außer die Kommandos 0x0000 und 0xB000?

DLN_Init() OK!

Command Bytes:
Sent: 80D8      received: 0000
Sent: 82D9      received: 002C
Sent: A640      received: 96D8
Sent: C647      received: 002F
Sent: CC77      received: 0000
Sent: 94A0      received: 002C
Sent: C2AC      received: A1FD
Sent: CA81      received: 76EF
Sent: CED4      received: F3FC
Sent: CA83      received: 0012
Sent: C49B      received: 5936
Sent: 9850      received: 76F3
Sent: E000      received: 0000
Sent: C80E      received: 002C
Sent: B000      received: 0000
Sent: 0000      received: 0000

Tx_Init() OK!

Wobei 0x0000 und 0xB000 nicht bei der Konfiguration des Moduls gesendet 
werden.

Wenn ich nun ein paar Daten schicke (nach den Dummybytes und Sync. 
Bytes), bekomm ich 0xFFFE zurück. Ist es hier auch irrelevant?

Thread ist gestartet

Sent: B811      received: FFFE
Sent: B811      received: FFFE
Sent: B811      received: FFFE
Sent: B811      received: FFFE
Sent: B811      received: FFFE
Sent: B811      received: FFFE
Sent: B811      received: FFFE
Sent: B811      received: FFFE
Sent: B811      received: FFFE
Sent: B811      received: FFFE
Sent: B811      received: FFFE
Sent: B811      received: FFFE
Sent: B811      received: FFFE
Sent: B811      received: FFFE
Sent: B811      received: FFFE
Sent: B811      received: FFFE

Threaddauer: 281

Gruß, MisterD

von MisterD (Gast)


Lesenswert?

Klar ich sende immer das gleiche... Aber wichtig ist zu wissen, ob auch 
nach dem Senden von 0xB800 auch "nichts" zu erwarten ist. Mit "nichts" 
meine ich irrelevant

von c-hater (Gast)


Lesenswert?

MisterD schrieb:

> Also alle die im SPI Rx-Puffer empfangene Bytes (siehe Dialog) sind
> irrelevant außer die Kommandos 0x0000 und 0xB000?

Genau. Obendrein ist im konkreten Fall auch noch irrelevant, was B000 
zurückgibt, da steht nur was sinnvolles drin, wenn was empfangen wurde. 
Das würde aber durch Interrupt angezeigt, daraufhin wäre das 
Statusregister zu lesen und darin müßte das entsprechende Flag gesetzt 
sein. Erst wenn das der Fall war, ergibt es einen Sinn, das 
B000-Kommando auszuführen. Und nur dann kommt im unteren Byte was 
sinnvolles zurück, nämlich das empfangene Byte.

> Wenn ich nun ein paar Daten schicke (nach den Dummybytes und Sync.
> Bytes), bekomm ich 0xFFFE zurück. Ist es hier auch irrelevant?

Natürlich. Wie schon gesagt: Alles außer den beiden genannten Kommandos 
liefert immer irgendwelchen nutzlosen Müll zurück.

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.