www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Frust mit dem nRF24L01 und ATmega


Autor: Robert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich versuche mit zwei nRF24L01 von nordic und zwei ATmegas eine 
bidirektionale Übertragung hinzubekommen. Leider komme ich auch unter 
Zuhilfenahme verschiedener Bibliotheken (u.A. die von Atmel für seinen 
nRF-USB-Stick) nicht zum gewünschten Ergebnis. ich würde gerne 100 mal 
pro Sekunde 28 Byte übertragen, also insgesamt wahnsinnige (ironie) 
2800 Byte/s.

Meine Initialisierung sieht so aus:
  NRF_port_init();
  spi_init(SPI_MASTER);
  NRF_write_addr( RX_ADDR_P0, addr, 5 );            // Adresse RX Pipe 0 setzen
  NRF_write_addr( TX_ADDR, addr, 5 );              // Adresse TX setzen
  NRF_write_reg( EN_AA, 0x00 );                // Automatic Acknowledge aus
  NRF_write_reg( EN_RXADDR, (1<<ERX_P0) );          // Enable Pipe 0
  NRF_set_channel( 8 );                    // Set RF channel
  NRF_set_payload( 0, RF_BUFFER_SIZE );              // Set length of incoming payload
  NRF_write_reg( RF_SETUP, (3<<RF_PWR)|(1<<LNA_HCURR) );    // schaltet 2 Mbps aus! 
  NRF_init_rx();                             // Set nRf primary receiver
  NRF_enable();                              // Enable receiver

Die Kommunikation klappt auch manchmal, so dass ich grundsätzlich falsch 
konfigurierte Teilnehmer ausschließen kann. Die Module sind aber auch 
nur 30 cm auseinander, so dass ich in der beobachteten Form auch 
nornmale Paketverluste für unwahrscheinlich halte.

Folge extrem komische Beobachtungen konnte ich machen:

Wenn ich Daten empfange ist beim Lesen von STATUS das Data-Received-Bit 
nicht gesetzt, jedoch ist die Pipe-Nummer (RX_P_NO) 0, was also Daten in 
RX-Pipe 0 anzeigt. Diese kann ich auch auslesen und sie sind auch 
korrekt (kein altes Paket oder so). Zudem wird manchmal nach dem 
Einleiten des Sendevorgangs der IRQ nicht auf low gezogen wenn der 
Vorgang beendet sein müsste.

Hat jemand ein paar Tipps bzw. evtl. sogar Sourcecode (gerne für 
AT90USB1287 bzw. den USBKEY) den er mir zur Verfügung stellen könnte? 
Gerne kann ich auch meinen Code mal hochladen wenn jemand Zeit hat 
draufzuschauen.

Gruß
Robert

Autor: Harald (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ohne das ich jetzt konkret etwas zu den Details sagen könnte, aber 
vielleicht stehen die Teilnehmer zu dicht nebeneinander? Ich kenne das 
von anderen Funkmodulen, die einfach eine gewisse Mindestdistanz 
brauchen. Ist soweit auch nachvollziehbar, aus (mindestens) zwei 
Gründen:

1. Im Gerät wird für die Bildung der ZF selbst ein Oszillator aufgebaut. 
Dieser kann quasi als Sender den benachbarten Empfangskreis bei 
schlechter Selektivität beeinflussen. Auch bei reinen Empfängern (z.B. 
GPS-Empfänger) kann man diese Beeinflussung beobachten.

2. Bei "hoher" Sendeleistung kann die AGC des Empfängers an den Poller 
gefahren werden, aus der er erst nach einer gewissen Zeit wieder 
herauskommt.

Autor: Phil S. (zippi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Robert,

Hast du es hinbekommen?

Also das mit dem Abstand stimmt auf jedenfall nicht. Hab grade mal meine 
NRF24L01 zum laufen gebracht und die gehen auf 1cm genauso gut wie auf 
20m ;).

Würde mich mal interessieren wie weit du bist. Vll kann ich dir ja 
helfen.
Zurzeit übertrage ich 25mal/sek 32byte in jede richtung.

mfg

Autor: H. G. (ledi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Phil,

da du bereits Erfahrung mit dem Chip hast, bitte ich um Ansicht meines 
Beitrags: [[Beitrag "2,4GHz Funkchip RF24L01 - kein Empfang"]]

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.