Forum: Mikrocontroller und Digitale Elektronik RFM12 Verständnisprobleme


von PETROV (Gast)


Lesenswert?

Hallo Freunde !

Ich möchte mich ein wenig mit drahtloser Datenübertragung beschäftigen, 
und bin auf das
Funkmodul RFM12 gestossen.

Dabei habe ich auch den Beitrag und den Sourcecode von Benedikt K. aus 
dem Forum und das
Datenblatt von Hope RF studiert.

Erstmal muß dem Benedikt K. meinen Respekt zollen - mit so einer 
Datenblattqualität die Sache so
hinzukriegen ist schon nicht schlecht.

Trotzdem habe ich noch einige Verständnisprobleme:

1)
    Die Anzahl der Statusbits laut Datenblatt ist 18 ?
    Wie kriege 18 Bits mit der StandardSpi Funktion des Atmega. Der 
Commandcode für
     das Statuswort ist 0X0000 d.h. ich sende 2 Bytes und kriege 2 Bytes 
aus der SPI Funktion
     zurück. Wie komme ich zu den restlichen 2 Bits ?

2)
  Für die Abfrage ob Daten im Buffer stehen (Polling) oder der 
Sendebuffer bereit ist, wird einfach die
  MISO Leitung abgefragt !
  Warum ist sichergestellt, daß an der MISO Leitung immer RGIT oder FFIT 
Bit ansteht ohne
  das Statuskommando abzusetzen.

(Auszug aus Source von Benedikt K.)
 void rf12_ready(void)
{
  cbi(RF_PORT, CS);
  cbi(RF_PORT, SDI);
  asm("nop");
  while (!(RF_PIN&(1<<SDO))); // wait until FIFO ready
}

unsigned rf12_data(void)
{
  cbi(RF_PORT, CS);
  cbi(RF_PORT, SDI);
  asm("nop");
  if(RF_PIN&(1<<SDO))
    return 1;
  else
    return 0;
}

Vielleicht kann jemand meine Konfusion etwas begrenzen.

Vielen Dank Peter

von Michael U. (amiga)


Lesenswert?

Hallo,

wo hast Du 18 Statusbits her? Es sind nur 16.

Den jeweiligen Zustand von SDO hat der Hersteller der ICs festgelegt, 
steht auch so im Datenblatt. SDO hat den aktuellen Zustand von Bit0 im 
Statusword.

Abschnitt 15 Status Read Command beschreibt die Bits.
Im Diagramm ist auch zu sehen, daß der Status von SDO bereits gültig 
ist, sobald /nSEL aktiv wird.

Gruß aus Berlin
Michael

von PETROV (Gast)


Lesenswert?

@Michael U.

Ja Du hast recht - wie bin ich blos auf 18 Bits gekommen.

Der Status von SDO nach nSEL ist mir jetzt auch klar.

Danke vielmals

von PETROV (Gast)


Lesenswert?

Durch schnell hinschauen daher meine 18Bits (eigentlich 19)


Hex = 0000
Bit-Syntax: 0000000000000000<000>
Rückgabe-Syntax: x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | x10 | 
x11 | x12 | x13 | x14 | x15 | x16 | x17 | x18
x0 -> x5 = Interrupt bits
x6 -> x15 = Status Bits
x16 -> x18 = FIFO
x0 = FFIT / RGIT (RGIT = TX-Register ist bereit neue Daten zu senden ... 
kann mit dem TX-Register gelöscht werden)
    (FFIT = Die Anzahl der Datenbits im FIFO-Puffer hat das eingestellte 
Limit erreicht.
     Kann mit einer der FIFO-Lesemethoden gelöscht werden)
x1 = POR (PowerOnReset)
x2 = FFOV / RGUR (RGUR = Der Datenstrom beim Senden ist abgerissen, da 
nicht schnell genug Daten nachgeladen wurden)
     (FFOV = Der RX-FIFO ist übergelaufen)
x3 = WKUP
x4 = EXT (Externer IRq vom nINT-Pin)
x5 = LBD (Low Battery Detected)
x6 = FFEM (Der FIFO-Puffer ist leer/EMpty)
x7 = RSSI/ATS (ATS = )(RSSI = Die Signalstärke ist über dem 
eingestelltem Limit)
x8 = DQD
x9 = CRL
x10 = ATGL
x11 = OFFS_6 (sign of offset)
x12 = OFFS_3
x13 = OFFS_2
x14 = OFFS_1
x15 = OFFS_0
x16 = FO
x17 = FO+1
x18 = FO+2

Peter

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.