Hintergrund
Das RFM läuft auf einem Jeelink-Clone (Arduino Nano 3.0) als Empfänger
für viele Sender. Der RFM wird nach dem Empfang schlafen gelegt und
meldet sich bei erneutem Empfang per Interrupt wieder. Funktioniert auch
alles problemlos, wenn die Frequenz manuell an die Frequenzabweichungen
der Sender und des RFM angepasst wird. Das ganze soll aber auch auf
anderen Jeelinks (-Clonen) mit anderen Sendern und entsprechend anderen
Frequenzabweichungen vernünftig ootb funktionieren. Dafür ist ja eine
AFC da, sollte also funktionieren - tuts aber mit diesen Einstellungen
nicht!
Problembeschreibung
Der Knackpunkt ist die Einstellung AFC bei VDI Hi im AFC-Register: die
AFC triggert nicht auf VDI Hi! Bemerkt hatte ich das, als die Frequenz
des RFM etwas verändert wurde, aber auch nach längerer Zeit keine bzw.
selten Empfang war -> keine AFC! Stellt man um auf AFC immer aktiv, dann
arbeitet die AFC, allerdings rastet sie dann auch auf Störer/Rauschen am
Ende des Offset-Limits ein und findet dann erst nach längerer Zeit
wieder die richtigen Sender.
Weitere Untersuchungen
Das Offset-Limit scheint einfach nur ein crop des Ausgangs der AFC zu
sein, also könnte die intern noch viel weiter weg sein und braucht dann
wieder bis sie zurück findet, manchmal schafft sie das auch gar nicht
mehr.
Das ist natürlich auch keine Lösung!
Weitere Untersuchungen zeigten, dass die AFC einfach nicht auf VDI Hi
triggert, wie eine Auswertung der OFFS im Statusregister ergeben hat.
Diese sind immer 0, egal welcher VDI-Modus aktiv ist - selbst bei
dauerhaft VDI Hi (Fast, Medium, Slow, HI). Bei der Einstellung AFC immer
aktiv schwankten die OFFS erwartungsgemäß stark im Bereich des Limits,
aber meistens recht passend bei Empfang der Sender - auch bei
Verstimmnung der Grundfrequenz. Auswertungen des VDI-Signals am PIN des
RFM per Oszilloskop zeigten das erwartungsgemäße Bild: viele Impulse bei
Fast, weniger Impulse bei Medium und "passende" Impulse bei Slow - bei
Hi war auch dauerhaft Hi-Pegel.
Kann dieses Problem jemand nachvollziehen?
Oder kann jemand die korrekte Funktion entgegen meiner Ergebnisse
bestätigen?
Oder eine Idee, wo das Problem liegen könnte?
Ein ähnliches Topic gabs schon mal, aber daraus geht nicht hervor, ob es
zu meinem Problem passt:
Beitrag "RFM12 Frequenzabgleich"
1
Hardware: RFM12S Rev 4.0 868
2
VCC & Pegel: 3,3V
3
AFC-Register: C4A7 (AFC bei VDI Hi, Offset +7..-8, AFC ein, Offset Register ein, präziser Modus ein)
Hallo,
lange her, daß ich in den RFM12-Datenblättern gekramt habe...
>Der RFM wird nach dem Empfang schlafen gelegt und>meldet sich bei erneutem Empfang per Interrupt wieder.
Mir fällt hier nur auf:
3. (a1=1, a0=0) The frequency offset is calculated automatically and the
center frequency is corrected when the VDI is high. The
calculated value is dropped when the VDI goes low. To improve the
efficiency of the AFC calculation two methods are recommended:
a. The transmit package should start with a low effective baud rate
pattern (i.e.: 00110011) because it is easier to receive. The
circuit automatically measures the frequency offset during this initial
pattern and changes the receiving frequency accordingly.
The further part of the package will be received by the corrected
frequency settings.
b. The transmitter sends the first part of the packet with a step higher
deviation than required during normal operation to ease
the receiving. After the frequency shift was corrected, the deviation
can be reduced.
In both cases (3a and 3b), when the VDI indicates poor receiving
conditions (VDI goes low), the output register is automatically
cleared. Use this “drop offset” mode when the receiver communicates with
more than one transmitter.
Der Sender sollte also genug Pattern-Bytes vor den Sync-Daten senden,
damit die AFC reagieren kann.
Gruß aus Berlin
Michael
Das ist wirklich ein wichtiger Punkt, aber selbst wenn ich VDI auf immer
HI im RC-Register definiere, gibt es keine Offset-Werte im
Status-Register.
Dieser Modus müsste nach meinem Verständnis das gleiche sein, als würde
ich im AFC-Register auf AFC immer aktiv schalten und das ist ja genau
der Punkt, diese beiden Betriebsarten sind eben nicht gleich...
Hab das ganze VDI-Gedöns jetzt mal in Software nachgebaut und schalte
die AFC nur scharf, wenn VDI slow (Software) Hi ist.
Was soll ich sagen, das funktioniert prima, bis auf dass es eigentlich
völlig bescheuert und überflüssig ist!
Hallo,
nimm das nicht zu ernst und sei froh, wenn es jetzt klappt.
Ich habe einige RFM hier seit ein paar Jahren mit Sensoren dran laufen.
Da stand in den Datenblättern von HopeRF nur die Hälfte, keiner wußte
100%tig, ob es ein IA4xxx oder ein SI4xxx war und was die überhaupt
unterscheidet.
Gruß aus Berlin
Michael
Hi Micha,
ich habe auch schon mit dem effekt gekaempft, den du beobachtet hast.
Welche Schritte machst Du denn in Software und in welcher Reihenfolge?
bye
MM
Hi Martin,
ich muss meine Aussage des vorigen Posts leider revidieren.
Der Fangbereich mit Software VDI oder ohne AFC ist derselbe.
Erklärungsversuch:
VDI ist je nach Einstellung abhängig von RSSI, DQD und CRL. Diese
dürften aber sowieso nur high werden, wenn die Mittenfrequenz bereits
gut passt (in meinem Fall +-1∆f). Also korrigiert die AFC in diesem Fall
maximal um +-1∆f, also eine lausige AFC.
Wenn meine Sender jetzt also mehr als +-1∆f neben der aktuell
eingestellten Mittenfrequenz liegen, dann werde ich nichts empfangen!
Ein Workaround dafür wäre ein Frequenz-Scan einzubauen: wenn eine
bestimmte Zeit nichts gültiges Empfangen wurde -> nach einem gültigen
Signal Suchen und die gefundene Frequenz dann als manuelle Korrektur auf
die Mittenfrequenz anzuwenden bzw. den Ziehkondensator entsprechend
anzupassen.
Eine vernünftige Lösung ist das aber auch nicht. Wenn meine Sender
untereinander größere Abweichungen haben, als der Fangbereich ist, dann
funktioniert das auch nicht.
PS: die Einstellung AFC immer aktiv ist übrigens auch Murks, da die
Begrenzung der Offsetkorrektur unbrauchbar implementiert ist.
Die AFC arbeitet weiterhin in ihrem maximalen Bereich von -64∆f .. +63∆f
und nur die Korrektur wird entsprechend Einstellung begrenzt.
Das hat zur Folge, dass sich die AFC gerne mal irgendwo weit Abseits der
Mittenfrequenz festbeisst, der Offset an den Poller läuft und es
durchaus sehr lange dauern kann, bis sie wieder auf die gewollten Sender
einrastet.
Ich glaube, ich werde mich mal dem RFM69CW zuwenden, vlt. ist die AFC
bei dem besser implemetiert - den JEELINK gibts auch in einer
RFM69CW-Version.
Edit 0:10: Nach Angabe hier im Forum ist AFC aktiv wenn VDI low ist, das
Datenblatt sagt aber das Gegenteil, was stimmt denn jetzt?