mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik RFM69 - RSSI Messung


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Hannes (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich habe mal eine Frage zu den RFM69 Modulen bezüglich der RSSI Messung.
Wie kann man prinzipiell den RSSI Wert während einer Datenübertragung
auslesen? Ich kann zwar den Echtzeitwert abfragen. Aber um ein Indiz für
die Empfangsstärke zu erhalten ist das nicht wirklich brauchbar. Kann 
der Wert, bei dem ein RSSI Interrupt ausgelöst wird im Modul 
zwischengespeichert werden und nach erfolgreichem Auslesen des FIFO 
nachträglich abgefragt werden?

Vielen Dank für eure Antworten, ihr würdet mir sehr weiterhelfen.
Hannes

von rfm69 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
https://github.com/LowPowerLab/RFM69
Nach dem Empfang einfach den Wert abrufen. Geht gut.

von Hannes (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ich schätze dann mache ich irgendetwas falsch. Der RSSI Wert wird nach 
diesem Aufruf einfach auf ein LCD Display geschrieben. Ich erhalte 
unmittelbar nach dem Auslesen des FIFOs Werte zwischen -110 - -115dB. 
Das sind dann schon die halbierten Werte. Dafür, dass die Module direkt 
nebeneinander sind, erscheint mir das einfach zu viel.
Steckt in meiner Ausleseroutine vielleicht ein Fehler?

uint8_t RSSI_value;
uint8_t Verzoegerung = 20;  // Timeout nach 20ms

//******** RSSI Wert abfragen ******
  RFM69_spi(0x2301 | 0x8000);     //RSSI Messung auslösen

  while(RFM69_spi(0x2300) & 0x02 && Verzoegerung != 0)
              // RSSI beendet wenn 1 - solange warten
  {
    _delay_ms(1);
    Verzoegerung--;
  }

  RSSI_value = RFM69_spi(0x2400);   //RSSI Wert auslesen

von Hannes (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hat hier vielleicht noch jemand eine Idee?

von Wolfgang (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hannes schrieb:
> Hat hier vielleicht noch jemand eine Idee?

In diesem Post wird der RSSI laufend ausgelesen, um die Sendeleistung zu 
steuern. Da sollte sich doch was abgucken lassen ;-)
https://lowpowerlab.com/2015/11/11/rfm69_atc-automatic-transmission-control/

von Morri (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ich benutze den RFM69CW mit einem MSP430G2553. Sobald ich per Interrupt 
eine korrekte Sync-Adresse gemeldet bekomme, sende ich das Kommando zum 
Starten der RSSI-Messung. Dann warte ich auf das Ende der Messung und 
lese den Wert aus.
interrupt (PORT2_VECTOR) wakeup port2_interrupt(void)
{
  unsigned char rssi;

  P2IFG = 0;
  eint();
  // Während des Empfangs RSSI aufnehmen
  RFM69_WRITE(RFM_REGRSSICONFIG, RFM_RSSICONFIG_START);
  while ((RFM69_READ(RFM_REGRSSICONFIG) & RFM_RSSICONFIG_DONE) == 0) {
  }
  rssi = RFM69_READ(RFM_REGRSSIVALUE);
  // Warten bis Nachricht vollständig empfangen wurde
  while ((RFM69_READ(RFM_REGIRQFLAGS2) & RFM_IRQFLAGS2_PAYLOADREADY) != RFM_IRQFLAGS2_PAYLOADREADY) {
  }
.....

Das Ergebnis passt sehr gut zur Erwartung bei unterschiedlichen 
Entfernungen zwischen Sender und Empfänger. Auch die optimale 
Antennenlänge läßt sich gut ermitteln.

von robs (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hol doch einfach direkt vor dem Auslesen des FIFO's den Wert aus dem 
Register, aber ohne Triggerung einer erneuten Messung. Das sollte 
nämlich der RFM bei Empfang der Preambel selbst schon gemacht haben, um 
AGC und AFC korrekt einstellen zu können.

Eine RSSI-Triggerung nach Auslesen des FIFO's ist zu spät. Da ist das 
Paket schon durch und du misst nur den RSSI auf Noise-Level.

von Lehrer (Gast)


Bewertung
-2 lesenswert
nicht lesenswert
robs schrieb:
> Hol doch einfach direkt vor dem Auslesen des FIFO's den Wert aus dem
> Register

Is schon wieder gut zwei Wochen her ..... ob das noch interessiert?

Für "FIFO's" gibt es eine tolle Seite zum Nachlesen:

http://www.deppenapostroph.info

von robs (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Wow! Ein (Be-) Lehrer!

von Tsmeey (Gast)


Bewertung
0 lesenswert
nicht lesenswert
... mich ja!

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.