RFM22B Beispiel Projekt gesucht.

OP #2541481
Lesenswert?

Ich bin mit den ganzen Register überfordert ;-)

Für mein Projekt sollte ich Daten die ich an einen Atmega 328 schicke 
(I2C) über das RFM22B Modul an ein anderes RFM22B Modul welches am PC 
hängt senden. Das ganze bidirektional.

Leider programmiere ich erst seit ca 8 Monaten. Und aus den 
Datenblättern werde ich einfach nicht schlau.

Ich habe irgendwo mal gelesen das das Modul einen Modus hat bei dem es 
alles was es über SPI empfängt sendet. Sozusagen einen Automatik Modus. 
Ich glaube es war der Automatic Packet Handling Modus
Keine Ahnung ob das stimmt und ob ich den verwenden kann.

Daher die Suche nach einem Beispiel Projekt ohne viel Schnickschnack.

Gruß Christoph
#2542066
Lesenswert?

Ja das ist richtig dieser Modus heißt automatic transmission und wird im 
Register 0x08 konfiguriert.
Ein anderer Wert TX FIFO almost full (Register 0x7C) bestimmt bei 
welchem FIFO Füllungsgrad der Chip anfängt automatisch zu senden.
Nachdem Senden kehrt der Chip in den Idle State zurück.
Also braucht man lediglich, wie du es wolltest, über SPI Bytes 
rüberschieben. Den Rest mach dann der RFM, wenn alles andere richtig 
konfiguriert ist!

Ein komplettes Beispielprojekt kenne ich nicht.
Könnte mit ein paar Codeschnipseln aushelfen.
OP #2542592
Lesenswert?

Hallo Carsten

noch eine Frage
Ich benötige eine bidirektionale Verbindung zwischen den Modulen. Es 
sollten beide Senden und Empfangen können.

Meine Frage. Wie stelle ich es an das immer nur 1 Modul sendet? Es kann 
ja sein das beide zur gleichen Zeit senden was passiert dann. Konmmt 
dann nur Müll an??

Gruß Christoph
#2542618
Lesenswert?

Müll kommt nicht an, das Packet wird einfach nur verloren gehen.
Das Modul kann entweder Senden oder Empfangen, nichts gleichzeitig.
Also musst du die Modi einstellen/umschalten.

Ich habe Beide immer in RX Mode.
Das mit dem PC verbundene Modul sendet dann (vom PC Programm initiiert) 
und geht gleich wieder in RX.
Das Modul in der Ferne empfängt, sendet sofort (wenn was zu senden ist) 
und geht wieder in RX.
Gast #2542714
Lesenswert?

simpler ansatz:

jedes modul befindet sich permanent im rx modus. hierbei läuft ein timer 
mit einer bestimmten zeit, ist nach timerablauf nichts empfangen worden, 
wird das entsprechend in ner zählvariable vermerkt.

soll ein modul etwas senden, tut es das nur, wenn es so lange (oder 
länger) nichts empfangen hat, wie der normale transfer zwischen 2 
modulen dauert.



http://de.wikipedia.org/wiki/Carrier_Sense_Multiple_Access/Collision_Avoidance
#2564917
Lesenswert?

Hallo,

ja was könnte da falsch sein - sicher mindestens irgend ein Register.
Bin hier gerade selbst am basteln, hab mit dem Code von Uli und den 
darin enthaltenen Einstellungen für 2400Baud auch alles am laufen. Beim 
Versuch auf eine höhere Baurate zu gehen hab ich bisher immer nicht's 
mehr empfangen. Die Registerkalkulationstabelle von SiLabs liefert 
leider schon für die 2400Baud völlig andere Werte als die von Uli 
verwendeten.

Hast du die CRC-Prüfung an? Dann müssten doch die Pakete mit 
fehlerhaften Daten aussortiert werden - auch wenn dir das für die Lösung 
des Problems erst mal nicht hilft.

Sascha
OP #2565001
Lesenswert?

Hallo

Nachdem ich bei 19.2k Baud Probleme habe habe ich mir die AP Note 440 
angesehen. Die IF Filter Bandwidth steht momentan bei 127.9kHz.

Habe mit dem Lehrer diskutiert und der meine das ich einfach die 
Bandbreite erhöhen sollte da er dann empfindlicher ist. Ich habe dann 
auf Anraten vom Lehrer die Bandbreite auf die maximalen 620kHz gestellt. 
Leider empfange ich dann gar nichts. Grund unbekannt. Das selbe gilt 
wenn ich die Bandbreite z.B auf 56.2kHz stelle.

Das Frequency Deviation Register (0x72) steht auf 50kHz. Das soll ja der 
Frequenzhub zwischen dem 0 und 1er sein. Auch wenn ich den Erhöhe 
empfange ich nichts mehr. Mehr Hub sollte auch das erkenne von Daten 
vereinfachen.

PS: Natürlich habe ich die Register auf beiden Modulen ( Sender und 
Empfänger )geändert.

Vieleicht kann jemand der sich auskennt kurz ein paar Worte zu den 
Registern posten.

PSS: Laut AP NOTE 440 Seite 26 sind folgende Werte Default.
Datenrate: 40kbps
FD: 20kHz (Frequency Deviation)
BW: 80kHz (Filter Bandwidth)

Mit diesen Werten scheint der Sender sich aufzuhängen. Ich habe das 
Beispiel von Ulrich Radig bei dem die LED getoggelt wird sobald etwas 
gesendet wird. Leider leuchtet die LED dauernd. D.h das es nicht sendet.
OP #2566395
Lesenswert?

danke für die Hilfe

so ein kurzes Statusupdate.

Ich habe jetzt mal als Modulation OOK eingestellt und siehe da bei 40k 
Baud läuft alles ohne Fehler. Bei 50000 Paketen geht kein Einziges Paket 
verloren.

Welche Nachteile habe ich durch OOK. Es soll ja empfindlicher sein als 
FSK.
Und was ist mit GFSK??

Noch eine Frage
Wird der Manchester Code Hardwaremässig erzeugt oder muss ich das 
Software mässig implementiere?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren