mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik RFM12 eingehende Daten oszilloskopieren


Autor: Gregor B. (gregor54321)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!
Ich habe 2x RFM12 aufgebaut. Der Erste sendet mittels des kleinen 
Programms von Bennedikt K. einen Teststring raus. Mit dem Oszi kann ich 
am Antennenausgang per "FFT" periodisch noch einen kleinen Träger bei 
433 +/- 1MHz erkennen. Laut JTAG scheint auch alles durch zu laufen.

Der Empfänger beinhaltet ebenfalls Bennedikts Testprogramm. Allerdings 
bleibt dieses an der Stelle stehen, an der auf ein High am SDO des 
Moduls gewartet wird.

Hier der Code des Empfängers:
(bps geändert, Ausgangsleitung auf Minimum)
int main (void) {
  sei();
// -------  RFM12 init  -----------------------
  rf12_init();          // ein paar Register setzen (z.B. CLK auf 10MHz)
  rf12_setfreq(RF12FREQ(433.92));  // Sende/Empfangsfrequenz auf 433,92MHz einstellen
  rf12_setbandwidth(4, 1, 4);    // 200kHz Bandbreite, -6dB Verstärkung, DRSSI threshold: -79dBm 
  rf12_setbaud(1600);        // 1600 bps
  rf12_setpower(7, 6);      // -21db Ausgangangsleistung, 120kHz Frequenzshift

// --------------------------------------------
  for (;;)
  {
//    send();
    for (unsigned char i=0; i<100; i++)
      _delay_ms(10);

    receive();
  }
}

void receive(void)
{  unsigned char test[32];  
  rf12_rxdata(test,32);
  // daten verarbeiten
}

die rf12_init() sieht bei mir so aus:
(Clk-Ausgang auf 5MHz; AFC ohne Einschränkung; sonst alles identisch)
void rf12_init(void)
{
  RF_DDR=(1<<SDI)|(1<<SCK)|(1<<CS);
  RF_PORT=(1<<CS);

  for (unsigned char i=0; i<10; i++)
    _delay_ms(10);      // wait until POR done

  rf12_trans(0xC0D0);      // 14. AVR CLK: 5MHz
  rf12_trans(0x80D7);      //  1. Config Setting: Enable FIFO
  rf12_trans(0xC2AB);      //  6. Data Filter: internal
  rf12_trans(0xCA81);      //  7. Set FIFO mode
  rf12_trans(0xE000);      // 12. disable wakeuptimer
  rf12_trans(0xC800);      // 13. disable low duty cycle
  rf12_trans(0xC4C7);      //  9. AFC settings: autotuning: no restriction
}

An der Stelle mit dem Pfeil passiert nichts mehr. In der Ready-Funktion 
wird auf ein HighPegel am SDO gewartet.
void rf12_rxdata(unsigned char *data, unsigned char number)
{  unsigned char i;
  rf12_trans(0x82C8);      // RX on
  rf12_trans(0xCA81);      // set FIFO mode
  rf12_trans(0xCA83);      // enable FIFO
  for (i=0; i<number; i++)
  {
-->    rf12_ready();
    *data++=rf12_trans(0xB000);
  }
  rf12_trans(0x8208);      // RX off
}

Ist es möglich, am Modul die eintreffenden "Bits" direkt Ausgeben zu 
lassen? Ich weiß noch nicht wo mein Problem ist... Ich kann leider auch 
nicht wirklich messen, ob die korrekten Daten über die Antenne raus 
gehen (per SPI gehen auf jeden Fall die Richtigen rein!). Ich möchte 
gern sehen, was da so durch den Äther geht...
Weiß jemand Rat?

Beste Grüße, Gregor

Autor: Gregor B. (gregor54321)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Am RF12-Chip gibts ja wohl einen Pin19, der einen ARSSI bereit stellt, 
der auf dem RFM12-Modul aber wohl nicht heraus geführt ist. Im 
Datenblatt des RFM12S steht jedoch unter Features: "Analog and digital 
signal strengt indicator (ARSSI/DRSSI)". Wo soll der aber raus kommen? 
Übersehe ich etwas?

Was werde ich messen können, wenn ich entsprechend konfiguriert am Pin 
CFil (Kondi-Anschluss für analogen Filter) messe?

Autor: Gregor B. (gregor54321)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Am CFIL lässt sich dieses Schöne Signal messen...

Autor: Gregor B. (gregor54321)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Allerdings hab ich ein Interpretationsproblem. Auf dem Oszibild 
dargestellt ist der gesendete Wert 0xFF bei eingestellten 3.2 kbps. Wird 
das Signal codiert gesendet? Übertragen werden bei dieser 
Byte-geschwindigkeit höchstens 130Byte/sec, wären da nicht noch die 
langen Pausen zwischen den Bytes. Hat jemand seine Glaskugel zur Hand?
Anliegendes Bild stellt die Werte 255 bis 247 mit dem Logik Analyser 
dar.

Autor: Gregor B. (gregor54321)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das erste Bit ist sowas wie ein Start-Bit. Ist immer da...
Es haben doch schon so Viele mit dem RFM12 gearbeitet. Weiß mir denn 
keiner einen Tipp zu geben?

Autor: Gregor B. (gregor54321)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Allerdings bleibt dieses an der Stelle stehen, an der auf ein High
> am SDO des Moduls gewartet wird.

Für alle denen gleiches Problem unter kommt: der FSK-Pin muss nach High 
gezogen werden, wenn das interne TxRegister genutzt wird.


ARRSI gibts nicht, DRSSI lässt sich programmieren und anschließend 
auslesen. Gibt nur sinnvolle Werte zurück, während auch tatsächlich ein 
Nutzsignal empfangen wird.

Warum am Empfänger der oben dargestellte Datenmüll an CFIL empfangen 
wurden, hab ich nicht mehr raus bekommen. Nach weiteren Tests wird 
einfach das TxRegister HighByte-First hinter einander weg raus getaktet. 
Wenn die Clock-Recovery-PLL also nach 20x 0xFF durcheinander gekommen 
ist bleibt wohl auch nur Datenmüll.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.