Hallo,
ich versuche gerade eine Funkverbindung zwischen zwei AVRs (Atmega8) mit
zwei NRF24L01+ Modulen herzustellen.
Ich nutze die folgende Library:
https://github.com/kehribar/nrf24L01_plus
Problem: Der Empfänger scheint -unabhängig davon ob der Sender-AVR
überhaupt eingeschaltet ist oder nicht- immer etwas zu empfangen.
Zum Anzeigen des Empfangenen habe ich ein LCD Display angeschlossen
(funktioniert). Leider scheint das empfangene data_array leer zu sein:
Die Abfrage
1
uint8_tdata_array[4];
2
if(nrf24_dataReady()){
3
nrf24_getData(data_array);
4
char*string;
5
sprintf(string,"%c",data_array[1]);
6
lcd_string(string);
gibt ein leeres LCD zurück. Ändere ich %c in %d, erscheint ein @-Zeichen
auf dem Display. Die Umwandlung ist nötig, da lcd_string() einen
"String" erwartet.
Auf der Sendeseite sieht es gar nicht so schlecht aus: Eine LED
signalisiert mir ob die Übertragung erfolgreich war oder nicht. Wenn ich
den Empfänger einschalte, leuchtet die LED, schalte ich ihn aus,
erlischt auch die LED des Senders.
Hat schon einmal jemand mit dem Modul / der Library gearbeitet ?
LG Lampe
geändert, was jedoch leider nicht daran ändert, dass er nichts außer
Nullen empfängt. nrf24_dataReady() gibt dabei dauerhaft 1 zurück, daher
LCD Anzeige: 0 0 0 0 :(
Ich nehme, an, Du benutzt die rx/tx_examples, die bei der
Lib dabei sind?
>nrf24_dataReady() gibt dabei dauerhaft 1 zurück
Das liegt wohl da dran, dass Du in der Empfangsroutine 100ms
wartest, während der Sender nur 10ms Delay drin hat.
Beim Empfänger brauchst Du gar kein Delay.
Lass' ihn einfach auf
nrf24_dataReady()
warten und erhöhe das Delay beim Sender, so dass Du Dein
LCD besser beobachten kannst.
Das sind aber alles keine Gründe, warum Du nur 0en empfängst...
RX, TX Adressen stimmen?
Nachtrag:
Ich habe gerade einmal mit Hilfe dieser Library hier:
http://www.tinkerer.eu/AVRLib/nRF24L01/
versucht die Verbindung aufzubauen, leider ebenfalls ohne Erfolg. Dafür
erkennt der Empfänger nun wenigstens auch keinen Empfang mehr, wo keiner
sein sollte.
Ich habe einmal per
Von dem Datenblatt gibt's übrigens neuere Versionen,
meine ist von Sept. 2008 (Rev. 1.0).
Lass' dir doch 'mal die gesendeten und empfangenen Werte in der
spi_transfer() ausgeben und schau', ob die plausibel sind.
Bei SPI kommt die Antwort auf ein Kommando üblicherweise NICHT im
gleichen
Transfer (der Slave muss ja darauf erst reagieren), sondern im nächsten
(SPI read op/write op im Datenblatt).
Glaube aber weniger, dass Dein Prob auf SPI Ebene liegt, Deine RF Module
scheinen ja zu reagieren...
Lampe schrieb:> Ein SPI Problem ? Arbeite ich leider das erste mal mit :(
Dann inverstier doch mal in passendes Werkzeug, um solche Fragen direkt
beantworten zu können. Ein kleiner LA für unter 8€ sollte doch in jedem
Budget drin sein. (ebay-Suche "24MHz 8CH")