CUL SlowRF hängt -> kein in PLL lock

Begonnen von grobiballon, 24 September 2014, 14:04:22

Vorheriges Thema - Nächstes Thema

grobiballon

Hallo,

ich bin absoluter FHEM & CUL  & Linux-Laie und bin hier vielleicht auf dem Holzweg. Alles was ich hier zu Tage bringe sind Schnipsel die ich irgendwie zusammengesetzt habe. Vielleicht bin ich ja nicht auf dem holzweg, aber wenn etwas nicht stimmt oder unklar beschrieben ist, bitte ich um Verständnis.

Ich habe hier einen CUL FW1.61 am Rpi und der CUL schläft nach einiger Zeit ein. Ich hatte dazu schon einmal etwas geposted, die Sache aber aus den Augen verloren. Nun habe ich mich nochmal ausgiebig damit beschäftigt.

Siehe auch http://forum.fhem.de/index.php/topic,21599.msg150840.html#msg150840

Wenn der CUL nach einiger Zeit (verschieden) "einschläft" kann er durch ein X21 oder ähnlich wieder erweckt werden. Ein C99 ergibt im "eingeschlafenen Zustand" und nach einem X21 folgendes:

vor Stop  0D2E2D07D3913D04320000060021656A35E43023B900070018146C070091876BF85611EF2C3F1F4100597F3F88310B00
nach Stop 0D2E2D07D3913D04320000060021656A35E43023B900070018146C070091876BF85611EF2C161F4100597F3F88310B00
DEC       000102030405060708091011121314151617181920212223242526272829303132333435363738394041424344454647
HEX       000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F
                                                                                    ^^
                                                                                    !!


Dementsprechend ist das Register FSCAL1=x25 -> x3F. Nach Doku des CC1101 ist er damit nicht in PLL lock was aber nach meinem Verständnis für den Betrieb notwendig ist, da er so nicht mehr kalibriert ist.

hier der Putty- "info timer" Log:2014-09-23 20:31:59 FHT hz.Badezimmer actuator: 0%
2014-09-23 20:31:59 FHT hz.Badezimmer actuator: 0%
2014-09-23 20:32:11 FHT hz.Badezimmer start-xmit: 2
2014-09-23 20:32:11 FHT hz.Badezimmer FHZ:start-xmit: 2
2014-09-23 20:32:12 FHT hz.Badezimmer ack2: 2
2014-09-23 20:32:12 FHT hz.Badezimmer FHZ:ack2: 2
2014-09-23 20:32:16 FHT hz.Schlafzimmer actuator: 0%
2014-09-23 20:32:16 FHT hz.Schlafzimmer actuator: 0%
2014-09-23 20:32:16 FHT hz.Schlafzimmer start-xmit: 2
2014-09-23 20:32:17 FHT hz.Schlafzimmer FHZ:start-xmit: 2
2014-09-23 20:32:17 FHT hz.Schlafzimmer measured-temp: 21.7
2014-09-23 20:32:17 FHT hz.Schlafzimmer temperature: 21.7
2014-09-23 20:32:17 FHT hz.Schlafzimmer FHZ:measured-temp: 21.7
2014-09-23 20:32:17 FHT hz.Schlafzimmer ack: 0
2014-09-23 20:32:17 FHT hz.Schlafzimmer FHZ:ack: 0
2014-09-23 20:32:18 FHT hz.Schlafzimmer FHZ:ack: 0
fhem> 2014-09-23 21:47:13 CUL CUL_0 raw X67
2014-09-23 21:47:18 FHT hz.Kueche actuator: 0%
2014-09-23 21:47:18 FHT hz.Kueche actuator: 0%
2014-09-23 21:47:20 FHT hz.Schlafzimmer actuator: 0%
2014-09-23 21:47:20 FHT hz.Schlafzimmer actuator: 0%
2014-09-23 21:47:23 FHT hz.Badezimmer actuator: 0%
2014-09-23 21:47:24 FHT hz.Badezimmer actuator: 0%
2014-09-23 21:47:41 FHT hz.Wohnzimmer actuator: 0%
2014-09-23 21:47:41 FHT hz.Wohnzimmer actuator: 0%
2014-09-23 21:49:14 FHT hz.Kueche actuator: 0%


Kann es sein, dass hier der gleiche Fehler auftritt wie in diesem Thread  http://forum.fhem.de/index.php/topic,23223.0.html beschrieben? Leider ist der PLLcheck nur für die HM Version eingebaut und nicht für die FHT-Version. Es wird wahrscheinlich nur eine kleine Änderung im Code sein - aber dabei hört es bei mir auf. Vielleicht kann mir jemand dabei helfen. Zum Testen (unter Anleitung) bin ich gerne bereit.

Ich habe den rPi mehrmals auf unterschiedliche Arten mit FHEM ausgerüstet. Der CUL wurde mit verschiedenen FW zwischen 1.57 und 1.61 geflashed. Die FHEM-config auf ein absolutes Minimum reduziert und mit verschiedenen FHT's getestet, auch einzeln. Immer das Gleiche. Die Position der Geräte wurden auch verändert. Netzteile habe ich nun schon drei (bis 2A) durch.

Danke und Gruß
Andreas

noansi

#1
Hallo Rudolf,

wenn Du die in der angehängten zip Datei vorhanden Dateien mit den in den Firmware Code aufnimmst und dann

in board.h zum CUL (und anderen board.h)

#define HAS_CC1101_TX_INTDIS
#define HAS_CC1101_RX_INTEN

mit einbaust (und wenn der Platz bei CUL_V2 nicht reicht die entsprechenden #undef)

dann könntest Du grobiballon mit dem PLL check wohl helfen.

mit
#define HAS_CC1101_PLL_LOCK_CHECK_MSG_RXTX

tauchen dann auch entsprechende Problemhinweise dazu im Log auf.

@grobiballon:
Natürlich kannst Du Dir den Quelltext der Firmware auf http://culfw.de runterladen. Und es dann selber versuchen die Firmware mit den Änderungen zu compilieren und zu flashen.

Da es ein seltenes Phänomen mit dem PLL Lock ist, fände ich es besser, es in die offizielle Firmware einfließen zu lassen. Dass sie Umschalten, habe ich mit COC getestet (KS300 gesendet und das kam bei einer IPWE-1 an, anschließend weiter braver Empfang bei COC), ob es gegen das PLL-Lock Problem hilft, kann ich damit nicht testen, da ich normalerweise nur auf Homematic sende. Grundsätzlich ist es aber das gleiche Problem und sollte auf gleichem Weg zu beheben sein.

Gruß, Ansgar.

Edit: alter Anhang gelöscht

noansi

#2
Hallo Rudolf,

und weil der copy&paste Fehlerteufel zugeschlagen hatte hier noch eine kleine Korrektur ergänzt um eine board.h für CUL.
grobiballon hat es kompiliert und im Test und ich bin auf das Feedback gespannt.

Gruß, Ansgar.

Edit: alter Anhang gelöscht

grobiballon

Hallo,

ich habe die Änderungen eingefügt und FHEM läuft wieder. Spätestens nach dem Wochenende sehen wir, ob es was geholfen hat.

Großen Dank an noansi für die geänderten Dateien und die ausfühliche Hilfe für einen Linux-Dummie im Hintergrund.

Gruß, Andreas

noansi

Hallo Rudolf,

noch mal ein Update.
Nun wird nicht nur die RX/TX TX/RX Umschaltung überwacht, sondern auch der PLL-Lock an sich, mit Recover Versuch.
Das machte den kleinen Eingriff in RF-Receive erforderlich, so dass in RF_Analyze_Task regelmässig de Check läuft, wenn der SlowRF Empfang aktiv ist.

Gruß, Ansgar

grobiballon

Hallo,

ich habe die erste von noansi geänderte Version getestet (RX/TX TX/RX Umschaltungsüberwachung). Der CUL hängt wieder, im Log ist aber mal wieder nichts ungewöhnliches (außer das besagte Register). Nach X61 geht es weiter, als wenn nichts gewesen wäre.

2014-09-26 21:27:51 FHT FHT_0202 FHZ:end-xmit: 0T_0202 FHZ:ack: 0
2014-09-26 21:27:51 FHT FHT_0202 battery: ok
2014-09-26 21:27:51 FHT FHT_0202 lowtemp: ok
2014-09-26 21:27:51 FHT FHT_0202 window: closed
2014-09-26 21:27:51 FHT FHT_0202 windowsensor: ok
2014-09-26 21:27:51 FHT FHT_0202 warnings: none
2014-09-26 21:27:51 FHT FHT_0202 battery: ok
2014-09-26 21:27:51 FHT FHT_0202 lowtemp: ok
2014-09-26 21:27:51 FHT FHT_0202 window: closed
2014-09-26 21:27:51 FHT FHT_0202 windowsensor: ok
2014-09-26 21:27:51 FHT FHT_0202 FHZ:warnings: none
2014-09-26 21:27:51 FHT FHT_0202 ack: 0
2014-09-26 21:27:51 FHT FHT_0202 FHZ:ack: 0
2014-09-26 21:27:51 FHT FHT_0202 end-xmit: 0
2014-09-26 21:27:51 FHT FHT_0202 FHZ:end-xmit: 0
2014-09-26 21:27:52 FHT FHT_0202 FHZ:end-xmit: 0
2014-09-26 21:28:16 FHT FHT_0204 actuator: 0%
2014-09-26 21:28:18 FHT FHT_0203 actuator: 0%
2014-09-26 21:28:54 FHT FHT_0202 actuator: 0%
2014-09-26 21:29:36 FHT FHT_0201 actuator: 0%
2014-09-26 21:30:13 FHT FHT_0204 actuator: 0%
2014-09-26 21:30:15 FHT FHT_0203 actuator: 0%
2014-09-26 21:30:49 FHT FHT_0204 start-xmit: 16
2014-09-26 21:30:49 FHT FHT_0204 FHZ:start-xmit: 16
2014-09-26 21:30:50 FHT FHT_0204 measured-temp: 23.9
2014-09-26 21:30:50 FHT FHT_0204 temperature: 23.9
2014-09-26 21:30:50 FHT FHT_0204 FHZ:measured-temp: 23.9
2014-09-26 21:30:51 FHT FHT_0204 FHZ:measured-temp: 23.9


fhem> get CUL_0 raw C99
CUL_0 raw => 0D2E2D07D3913D04320000060021656A55E43023B900070018146C070090876BF85611EF2C3F1F4100597F3F88310B00
fhem> get CUL_0 raw C25
CUL_0 raw => C25 = 3F / 63
fhem> get CUL_0 ccconf
CUL_0 ccconf => freq:868.300MHz bWidth:325KHz rAmpl:42dB sens:4dB
fhem> set CUL_0 raw X61
2014-09-27 10:34:14 CUL CUL_0 raw X61
fhem> 2014-09-27 10:34:42 FHT FHT_0203 actuator: 0%


2014.09.26 21:30:50 5: CUL/RAW: /T02044279EFFA

2014.09.26 21:30:50 5: CUL_0: T02044279EF -77
2014.09.26 21:30:50 5: CUL_0 dispatch 810c04xx0909a0010204420079ef
2014.09.26 21:30:50 5: CUL/RAW: /T020443690033

2014.09.26 21:30:50 5: CUL_0: T0204436900 -48.5
2014.09.26 21:30:50 5: CUL_0 dispatch 810c04xx0909a001020443006900
2014.09.26 21:30:50 4: FHT FHT_0204 measured-temp: 23.9
2014.09.26 21:30:50 5: Triggering FHT_0204 (2 changes)
2014.09.26 21:30:50 5: Notify loop for FHT_0204 measured-temp: 23.9
2014.09.26 21:30:50 4: eventTypes: FHT FHT_0204 measured-temp: 23.9 -> measured-temp: .*
2014.09.26 21:30:50 4: eventTypes: FHT FHT_0204 temperature: 23.9 -> temperature: .*
2014.09.26 21:30:50 5: CUL/RAW: /T0204437900FA

2014.09.26 21:30:50 5: CUL_0: T0204437900 -77
2014.09.26 21:30:50 5: CUL_0 dispatch 810c04xx0909a001020443007900
2014.09.26 21:30:50 4: FHT FHT_0204 FHZ:measured-temp: 23.9
2014.09.26 21:30:50 5: Triggering FHT_0204 (1 changes)
2014.09.26 21:30:50 5: Notify loop for FHT_0204 FHZ:measured-temp: 23.9
2014.09.26 21:30:50 4: eventTypes: FHT FHT_0204 FHZ:measured-temp: 23.9 -> FHZ:measured-temp: .*
2014.09.26 21:30:51 5: CUL/RAW: /T0204437900FA

2014.09.26 21:30:51 5: CUL_0: T0204437900 -77
2014.09.26 21:30:51 5: CUL_0 dispatch 810c04xx0909a001020443007900
2014.09.26 21:30:51 4: FHT FHT_0204 FHZ:measured-temp: 23.9
2014.09.26 21:30:51 5: Triggering FHT_0204 (1 changes)
2014.09.26 21:30:51 5: Notify loop for FHT_0204 FHZ:measured-temp: 23.9
2014.09.26 21:30:51 4: eventTypes: FHT FHT_0204 FHZ:measured-temp: 23.9 -> FHZ:measured-temp: .*
2014.09.27 10:31:57 5: Cmd: >apt-get get CUL_0 raw C99<
2014.09.27 10:32:12 5: Cmd: >get CUL_0 raw C99<
2014.09.27 10:32:12 5: SW: C99
2014.09.27 10:32:12 5: CUL/RAW (ReadAnswer): 0D2E2D07D3913D04
320000060021656A
55E43023B9000700
18146C070090876B
F85611EF2C3F1F41
00597F3F88310B00

2014.09.27 10:32:46 5: Cmd: >get CUL_0 raw C25<
2014.09.27 10:32:46 5: SW: C25
2014.09.27 10:32:46 5: CUL/RAW (ReadAnswer): C25 = 3F / 63

2014.09.27 10:33:59 5: Cmd: >get CUL_0 ccconf<
2014.09.27 10:33:59 5: SW: C0D
2014.09.27 10:33:59 5: CUL/RAW (ReadAnswer): C0D = 21 / 33


Ich flashe gerade die letzte Version (mit PLL lock recover)

Gruß, Andreas

grobiballon

Hallo,

die letzte Version hat bei mir schon unerwartet früh ein PLL0 ergeben:

=~=~=~=~=~=~=~=~=~=~=~= PuTTY log 2014.09.27 11:20:53 =~=~=~=~=~=~=~=~=~=~=~=

fhem> info timer
fhem> get CUL_0 ccconf
CUL_0 ccconf => freq:868.300MHz bWidth:325KHz rAmpl:42dB sens:4dB
get CUL_0 raw V
CUL_0 raw => V 1.78 CUL868
fhem> get CUL_=0 raw C99
CUL_0 raw => 0D2E2D07D3913D04320000060021656A55E43023B900070018146C070090876BF85611EF2C161F4100597F3F88310B00
fhem> get CUL_0 raw C25
CUL_0 raw => C25 = 16 / 22
fhem> 2014-09-27 11:22:12 FHT FHT_0202 actuator: 0%
2014-09-27 11:22:54 FHT FHT_0204 actuator: 0%
[...]

2014-09-27 11:28:45 FHT FHT_0204 actuator: 0%
2014-09-27 11:28:56 FHT FHT_0201 actuator: 0%
2014-09-27 11:29:04 FHT FHT_0203 actuator: 0%
2014-09-27 11:29:56 FHT FHT_0202 actuator: 0%
2014-09-27 11:30:42 FHT FHT_0204 actuator: 0%
2014-09-27 11:30:51 FHT FHT_0201 actuator: 0%
2014-09-27 11:31:01 FHT FHT_0203 actuator: 0%
2014-09-27 11:31:02 FHT FHT_0203 measured-temp: 23.6
2014-09-27 11:31:02 FHT FHT_0203 temperature: 23.6
2014-09-27 11:31:02 FHT FHT_0203 battery: ok
2014-09-27 11:31:02 FHT FHT_0203 lowtemp: ok
2014-09-27 11:31:02 FHT FHT_0203 window: closed
2014-09-27 11:31:02 FHT FHT_0203 windowsensor: ok
2014-09-27 11:31:02 FHT FHT_0203 warnings: none
2014-09-27 11:31:38 FHT FHT_0201 measured-temp: 21.3
2014-09-27 11:31:38 FHT FHT_0201 temperature: 21.3
2014-09-27 11:31:39 CUL CUL_0 UNKNOWNCODE PLL0
2014-09-27 11:31:52 FHT FHT_0202 actuator: 0%


ich lasse nun mal alles so weiter laufen...

Gruß, Andreas

grobiballon

Hallo nochmal,

ich habe jetzt in 2 Stunden 4 PLL0 Nachrichten erhalten. Gefühlt ist das zu oft, der Fehler mit dem "schlafen" trat nicht so häufig aus. Kann es sein, dass ohne die PLL-Lock Erkennung der CUL sich in der Vergangenheit manchmal selber wieder "gefangen" hat und jetzt die PLL-Lock Erkennung schon vorher eingreift? Stehengeblieben könnte er dann in der Vergangenheit nur sein, wenn er sich halt mal nicht "erholt" hat...

Im übrigen kommen die PLL0 willkürlich, also nicht immer nach oder vor einem bestimmten FHT.

Gruß, Andreas

rudolfkoenig

@noansi: Gruppen mit "Fehler" im Namen abonniere ich nicht, deswegen bin ich nur versehentlich auf diese Diskussion aufmerksam geworden.

Wenn ich mich recht erinnere ist das CC1101 so konfiguriert, dass es bei jedem Sendevorgangn (bzw. danach) eine PLL Kalibration durchfuehrt. Das funktioniert hervorragend, wenn man z.Bsp. wg. einer FHT regelmaesig was sendet oder wenn man ein CUL als RFR einsetzt. Es kann sein, dass es in "READ-Only" Umgebungen es zu Problemen fuehrt.

Bevor ich aber ein Patch einspiele (bzw. anschaue), moechte wissen, ob es geholfen hat. Auf Verdacht baue ich nichts ein, da ich diese Beschwerden bisher zu selten gehoert habe, und es sind geschaetzt ueber 10.000 CULs mit culfw in Umlauf.

noansi

Hallo Rudolf,

gut, dass Du es doch gefunden hast.  :)

ZitatWenn ich mich recht erinnere ist das CC1101 so konfiguriert, dass es bei jedem Sendevorgang (bzw. danach) eine PLL Kalibration durchführt. Das funktioniert hervorragend, wenn man z.Bsp. wg. einer FHT regelmäßig was sendet oder wenn man ein CUL als RFR einsetzt. Es kann sein, dass es in "READ-Only" Umgebungen es zu Problemen fuehrt.
Wenn ich den Firmware Code für FHT beim groben überfliegen richtig verstehe, dann wird beim FHT Senden erst mal au IDLE geschaltet.
Damit wird auch vor dem Senden eine Autokalibrierung durchgeführt und nicht erst danach bei der gewählten cc1101 Einstellung dazu.

Mit X21 oder ähnlich wieder aufwecken ist auch klar, da dann der cc1101 neu initialisiert wird.

Dass der PLL beim Empfangszustand bei grobiballon nicht immer im Lock ist (sondern recht häufig nicht), ist schon nachgewiesen anhand der PLL0 Logeinträge bei ihm. Recovered wird auch, da er bisher keine PLL1 Einträge hat und auch keine PLL0 in sehr kurzen Abständen, die auf ein Problem bei der erneuten Kalibrierung hindeuten würden.

Leider kenne ich das FHT Protokoll nicht wirklich, um zu verstehen, ob da auch regelmäßig was gesendet wird. In fht.c steht so was im Kommentar.
Wenn das der Fall ist, könnte auch das Senden mit PLL Lock Problem schief gehen, wäre aber mit entsprechendem Testcode in der TX Umschaltung noch nachzuweisen.
Außerdem würde jedes Senden (ohne dass dazu vorher ein Empfang nötig ist) die Chance bieten, das der cc1101 sich per Autokalibrierung wieder erholt, d.h. nicht jeder Nicht-Lock Zustand würde dann auch zum sichtbaren Problem führen. (Nur bei der RX/TX/RX Umschaltung sollte es nach bisheriger Erfahrung überhaupt dazu kommen).
Weisst Du Näheres zum FHT Protokoll?

Gruß, Ansgar.

rudolfkoenig

ZitatWeisst Du Näheres zum FHT Protokoll?

Ja, leider, es ist ziemlich kaputt.

Es sind FS20 Telegramme mit einem anderen Checksum aber jeweils nur einmal gesendet, Die Kommunikation laeuft als Frage/Antwort ab, fuer die alle 15Minuten stattfindende Temperaturuebermittlung sind 7 Telegramm-Paare notwendig. Also 7-mal auf TX und dann auf RX schalten.
Wenn eine Nachricht verlorengeht, dann wird sie einmal wiederholt, wenn das auch schiefgeht, dann faengt das Ganze in 2 Minuten von vorne an.
Siehe auch http://www.fhemwiki.de/wiki/Maximal_nutzbare_Ger%C3%A4te#detailierte_Betrachtung

grobiballon

Hallo,

ich melde mich jetzt zurück nach 25h Betrieb zurück. Es sind 47 PLL0 Meldungen aufgetreten, keine PLL1. Der CUL ist nicht - wie sonst üblich ausgestiegen. Der PLL Lock recover scheint bei meinem CUL wirklich etwas zu bewirken. Ich habe mal die Dämpfungen vor den PLL0 Nachrichten überflogen und es ist da keine Abhängigkeit zu erkennen (-80 bis -40). Es ist auch nicht auszumachen, dass ein bestimmtes Gerät die PLL0-Meldung auslöst.

Seit dem Kauf des CUL vor ca. einem Jahr hatte ich keine 25h Betrieb ohne Aussetzer. Der Betrieb in der Vergangenheit war nur durch ein regelmäßig abgesetztes X21 möglich. Dementsprechend scheinen die Änderungen tatsächlich etwas bewirkt zu haben.

Gruß, Andreas

noansi

#12
Hallo Rudolf,

im Anhang nun noch eine Version, die auch bei der RX/TX und TX/RX Umschaltung den PLL-Lock checkt und ggf. einen Recoverversuch unternimmt.

Mit dem zusätzlichen define HAS_CC1101_SWITCH_STATE_PLL_LOCK_CHECK ist das zuschaltbar.

Wenn grobiballon damit noch bessere Empfangserfolge hat, dann wäre das die Variante der Wahl.

Getestet hab ich wieder, dass damit KS300 Nachrichten auch gesendet (und empfangen) werden können.

Gruß, Ansgar.

PS: In bisher ungenutzten Funktionen habe ich auch noch die Rückgabelogik umgedreht bzw. vereinheitlicht. D.h. vom Code her ist es die Variante der Wahl und nur der "#define HAS_CC1101_SWITCH_STATE_PLL_LOCK_CHECK" in board.h sollte dann den Unterschied machen.

Edit: Anhang gelöscht

grobiballon

Hallo,

bis jetzt lief der CUL wie gehabt. Habe nun die letzte Revision von noansi drauf geflashd.

Gruß, Andreas

rudolfkoenig

Ich habe das Patch angeschaut, und es stoeren mich 2 Sachen:
- es aendert vieles, was mit dem Problem nichts zu tun hat (Kommentare, Formatierung etc). So kann ich es gar nicht pruefen.
- der Loesungsaufwand ist im Verhaeltnis zur Aufgabe viel zu gross. Ein 5-Zeiler, der CC1100_FSCAL1 auf 0x3f prueft, und dann set_ccoff/ccRX aufruft, muesste reichen. Ja, man verliert die detailliertere Debug-Ausgabe, aber der Code bleibt verstaendlich, und klein. Am besten aus clock.c/Minute_Task aufgerufen, dann profitieren alle Protokolle davon, und die  MCU pollit die CC1101 nicht dauernd.

Ich nehme es auf meine TODO-Liste.

grobiballon

Hallo,

die letzte Version von noansi läuft auch unproblematisch. Es gibt nur das PLL0 reporting. Die anderen PLL-Nachrichten erscheinen nicht. Ich würde mir wünschen wenn du Rudolf, diese Modifikationen in ein Release einbauen könntest. Leider hören meine Programmierkenntnisse bei QBASIC auf  ;) weshalb ich Euch hier nicht weiterhelfen kann. Als Testobjekt stehe ich weiterhin gerne zur Verfügung.

Vielen Dank an Euch Beide für die Mühen die Ihr in dieses Projekt steckt!

Gruß, Andreas

noansi

Hallo Rudolf,

Zitat- es aendert vieles, was mit dem Problem nichts zu tun hat (Kommentare, Formatierung etc). So kann ich es gar nicht pruefen.

Ja, kann ich bezüglich etwas erhöhtem Aufwand verstehen. Aber ich habe versucht es strukturiert aufzubauen und mit Kommentaren verständlich zu machen (schon aus Eigennutz, denn mit zunehmender Weisheit steigt auch die Vergesslichkeit  ;) ).
Es ist halt eine Sammlung verschiedener RX/TX Umschalt- und Prüfmöglichkeiten für den CC1101 PLL Lockzustand. Die defines geben die Möglichkeit der Auswahl bzw. Speicherplatzminimierung, um auch CULV2 noch eine Chance zu lassen (sofern generell genug freie Bytes raus zu quetschen sind).
Deswegen gibt es in cc1101_pllcheck.h eine Erklärung der möglichen defines und dann noch ein Abhängigkeitscheck, der fehlende ggf. ergänzt, damit es auch zu kompilieren ist.

Zitat- der Loesungsaufwand ist im Verhaeltnis zur Aufgabe viel zu gross. Ein 5-Zeiler, der CC1100_FSCAL1 auf 0x3f prueft, und dann set_ccoff/ccRX aufruft, muesste reichen. Ja, man verliert die detailliertere Debug-Ausgabe, aber der Code bleibt verstaendlich, und klein. Am besten aus clock.c/Minute_Task aufgerufen, dann profitieren alle Protokolle davon, und die  MCU pollit die CC1101 nicht dauernd.

Nun ccRX und ccTX werden häufiger über die verschiedenen Module verwendet. Um nicht alle anpacken zu müssen, und trotzdem bei jeder Umschaltung direkt prüfen zu können, habe ich in cc1100.h/-.c die Abfrage der defines HAS_CC1101_TX_INTDIS und HAS_CC1101_RX_INTEN ergänzt, damit der Präprozessor einfach den Modulaufruftext umwandelt.
Werden die beiden nicht in board.h definiert, dann wird die alte Variante benutzt, wie bekannt.
Das nach einer Kalibrierung der Lockzustand überprüft werden sollte, steht auch in den Chipdokus, hatte ich schon mal erwähnt, meine ich. Und daher ist das die Lösung mit den Nägeln mit Köpfen (für CULV2 platztechnisch leider nicht in allen Varianten, deswegen für das Kompilieren abschaltbar, ist ja nicht jeder Chip so empfindlich).

Wenn jemand einen superempfindlichen cc1101 hat, dann kann auch der Recoverversuch schief gehen und daher gibt es die Testcheckfunktionen sowohl für RX, als auch mit etwas Blick nach vorne auch für TX.

Der Taskcheck auf PLL-Lock im RX Zustand kommt mit den Änderungen nur im RfAnalyze_Task (rf_receive.c) und rf_asksin_task (rf_asksin.c) vor und prüft auch nur, wenn jeweils die Empfangsfunktionalität aktiviert ist. Also effektiv einmal pro Hauptschleifendurchlauf. Aus meiner Sicht sollte der Chip möglichst schnell wieder auf Empfang gehen, egal ob im Slow-RF, Fast-RF oder ASKSIN. Ansonsten ist die gesparte Zeit nichts Wert (für die mit empfindlichem cc1101).

In der Prüfung selbst wird auch erst nachgeschaut, ob der cc1101 im Empfangszustand ist und nur dann wird auch das SCAL1 Register geprüft. So gesehen kann man es generell einmal als Task in die Hauptschleife einbauen und bei asksin und Slow-RF wieder raus werfen. Das hatte ich schon mal vorgeschlagen, wurde aber abgelehnt, da damals nicht bekannt war, dass auch andere Modi betroffen sein können.
Wenn man bei jeder Zustandumschaltung noch den letzten Zustand in einer globalen Variablen ablegen würde, dann könnte auch das Lesen des MARCSTATE Registers dafür entfallen, nur muss dann auch jeder die Umschaltroutinen benutzen. Ich fürchte, dass ist so nicht ganz realistisch, so weit ich es im Code bisher gesehen habe.

Wenn man es komplett einbaut, braucht man die Debugausgabe nicht zwingend und kann sie per löschen der defines dazu aus dem Kompilat entfernen.
Derzeit werden es die Betroffenen gar nicht merken, das sie es sind und tauschen Netzteile, suchen die Schuld beim Rechner, versuchen Störsender zu minimieren etc. . Das grobiballon überhaupt auf dieses Problem, respektive die Threads dazu gestoßen ist, ist schon ein günstiger Zufall für ihn.

Für die Umschaltung nach TX mit CCA ist eine eigene Variante erforderlich, respektive es fehlen noch die Varianten mit Interrupt, wenn sie mal jemand benutzen möchte. Und streng genommen sind sie dafür noch nicht ganz sauber, weil eigentlich zur Problembehebung erst mal nach IDLE, dann nach RX und dann erst wieder nach TX geschaltet werden dürfte, damit auch dann der CCA wieder durchgeführt wird.
Hier ist in jedem Fall ein einstellbarer Timeout sinnvoll, da ich selber schon über den Watchdog gemerkt habe, dass das bei ASKSIN recht lang werden kann (was auch immer da so lange gesendet oder gestört hat).

set_ccoff/ccRX darfst Du zur Problemlösung nicht aufrufen, weil Du entweder was Abschaltest, was Du gar nicht willst (asksin, moritz, ccon) oder den Interrupt aktivierst, was in ASKSIN nicht willkommen ist, da dort gepollt wird und Slow-RF damit nichts zu tun hat. Respektive es wird Folgecode erforderlich und das für jedes Modul was sich noch einer ausdenkt.

Man könnte die Autocalibrierung rauswerfen und das auf eine Umschaltvariante, also nach RX, mit manueller Kalibrierung beschränken und somit auch die Prüfung. Eigentlich wird sie auch nur dann gebraucht, wenn die Chiptemperatur oder Spannungsversorgung deutlich schwankt, wenn ich die Chipdoku da richtig verstanden habe. Nur wer berücksichtigt das in Zukunft immer und benutzt die Umschaltroutinen?

Aus unter anderem diesen Gründen ist das ganze so umfangreich geworden, auch, wenn es erst nicht danach aussieht. Viel aufwändiger ist aber, erst mal das Problem zu ergründen, wenn man es hat.

Gruß, Ansgar.

grobiballon

ZitatViel aufwändiger ist aber, erst mal das Problem zu ergründen, wenn man es hat.

Das habe ich gemerkt  8).

Wenn ich die Tage Zeit habe beteilige ich mich auch mal mit meinen bescheidenen Möglichkeiten und füge einen Eintrag in das FHEMwiki unter bekannte Probleme. Dann haben es andere in Zukunft einfacher.

Gruß, Andreas

grobiballon

Hallo,

ich habe seit Beginn der Tests zwei PLL1-Meldungen erhalten. Hier ein Log als Beispiel:

2014.09.30 10:25:15 5: CUL_0: T020300B000 -49
2014.09.30 10:25:15 5: CUL_0 dispatch 810c04xx0909a00102030000b000
2014.09.30 10:25:15 4: FHT hz.Kueche actuator: 0%
2014.09.30 10:25:15 5: Triggering hz.Kueche (1 changes)
2014.09.30 10:25:15 5: Notify loop for hz.Kueche actuator: 0%
2014.09.30 10:25:15 4: eventTypes: FHT hz.Kueche actuator: 0% -> actuator: .*%
2014.09.30 10:25:38 5: CUL/RAW: /T020400BA000A

2014.09.30 10:25:38 5: CUL_0: T020400BA00 -69
2014.09.30 10:25:38 5: CUL_0 dispatch 810c04xx0909a00102040000ba00
2014.09.30 10:25:38 4: FHT hz.Wohnzimmer actuator: 0%
2014.09.30 10:25:38 5: Triggering hz.Wohnzimmer (1 changes)
2014.09.30 10:25:38 5: Notify loop for hz.Wohnzimmer actuator: 0%
2014.09.30 10:25:38 4: eventTypes: FHT hz.Wohnzimmer actuator: 0% -> actuator: .*%
2014.09.30 10:27:04 5: CUL/RAW: /T020100BA00F1

2014.09.30 10:27:04 5: CUL_0: T020100BA00 -81.5
2014.09.30 10:27:04 5: CUL_0 dispatch 810c04xx0909a00102010000ba00
2014.09.30 10:27:04 4: FHT hz.Schlafzimmer actuator: 0%
2014.09.30 10:27:04 5: Triggering hz.Schlafzimmer (1 changes)
2014.09.30 10:27:04 5: Notify loop for hz.Schlafzimmer actuator: 0%
2014.09.30 10:27:04 4: eventTypes: FHT hz.Schlafzimmer actuator: 0% -> actuator: .*%
2014.09.30 10:27:05 5: CUL/RAW: /T02014269DEF1

2014.09.30 10:27:05 5: CUL_0: T02014269DE -81.5
2014.09.30 10:27:05 5: CUL_0 dispatch 810c04xx0909a0010201420069de
2014.09.30 10:27:05 5: CUL/RAW: /T0201436900F1

2014.09.30 10:27:05 5: CUL_0: T0201436900 -81.5
2014.09.30 10:27:05 5: CUL_0 dispatch 810c04xx0909a001020143006900
2014.09.30 10:27:05 4: FHT hz.Schlafzimmer measured-temp: 22.2
2014.09.30 10:27:05 5: Triggering hz.Schlafzimmer (2 changes)
2014.09.30 10:27:05 5: Notify loop for hz.Schlafzimmer measured-temp: 22.2
2014.09.30 10:27:05 4: eventTypes: FHT hz.Schlafzimmer measured-temp: 22.2 -> measured-temp: .*
2014.09.30 10:27:05 4: eventTypes: FHT hz.Schlafzimmer temperature: 22.2 -> temperature: .*
2014.09.30 10:27:05 5: CUL/RAW: /T0201446900F1

2014.09.30 10:27:05 5: CUL_0: T0201446900 -81.5
2014.09.30 10:27:05 5: CUL_0 dispatch 810c04xx0909a001020144006900
2014.09.30 10:27:05 4: FHT hz.Schlafzimmer battery: ok
2014.09.30 10:27:05 4: FHT hz.Schlafzimmer lowtemp: ok
2014.09.30 10:27:05 4: FHT hz.Schlafzimmer window: closed
2014.09.30 10:27:05 4: FHT hz.Schlafzimmer windowsensor: ok
2014.09.30 10:27:05 4: FHT hz.Schlafzimmer warnings: none
2014.09.30 10:27:05 5: Triggering hz.Schlafzimmer (5 changes)
2014.09.30 10:27:05 5: Notify loop for hz.Schlafzimmer battery: ok
2014.09.30 10:27:05 4: eventTypes: FHT hz.Schlafzimmer battery: ok -> battery: ok
2014.09.30 10:27:05 4: eventTypes: FHT hz.Schlafzimmer lowtemp: ok -> lowtemp: ok
2014.09.30 10:27:05 4: eventTypes: FHT hz.Schlafzimmer window: closed -> window: closed
2014.09.30 10:27:05 4: eventTypes: FHT hz.Schlafzimmer windowsensor: ok -> windowsensor: ok
2014.09.30 10:27:05 4: eventTypes: FHT hz.Schlafzimmer warnings: none -> warnings: none
2014.09.30 10:27:07 5: CUL/RAW: /PLL0

2014.09.30 10:27:07 5: CUL_0: PLL0
2014.09.30 10:27:07 5: Triggering CUL_0 (1 changes)
2014.09.30 10:27:07 5: Notify loop for CUL_0 UNKNOWNCODE PLL0
2014.09.30 10:27:07 4: eventTypes: CUL CUL_0 UNKNOWNCODE PLL0 -> UNKNOWNCODE PLL0
2014.09.30 10:27:07 2: CUL_0: unknown message PLL0
2014.09.30 10:27:07 5: CUL/RAW: /PLL1

2014.09.30 10:27:07 5: CUL_0: PLL1
2014.09.30 10:27:07 5: Triggering CUL_0 (1 changes)
2014.09.30 10:27:07 5: Notify loop for CUL_0 UNKNOWNCODE PLL1
2014.09.30 10:27:07 4: eventTypes: CUL CUL_0 UNKNOWNCODE PLL1 -> UNKNOWNCODE PLL1
2014.09.30 10:27:07 2: CUL_0: unknown message PLL1
2014.09.30 10:27:09 5: CUL/RAW: /T020200B20031

2014.09.30 10:27:09 5: CUL_0: T020200B200 -49.5
2014.09.30 10:27:09 5: CUL_0 dispatch 810c04xx0909a00102020000b200
2014.09.30 10:27:09 4: FHT hz.Badezimmer actuator: 0%
2014.09.30 10:27:09 5: Triggering hz.Badezimmer (1 changes)
2014.09.30 10:27:09 5: Notify loop for hz.Badezimmer actuator: 0%
2014.09.30 10:27:09 4: eventTypes: FHT hz.Badezimmer actuator: 0% -> actuator: .*%
2014.09.30 10:27:11 5: CUL/RAW: /T020300B00032

2014.09.30 10:27:11 5: CUL_0: T020300B000 -49
2014.09.30 10:27:11 5: CUL_0 dispatch 810c04xx0909a00102030000b000
2014.09.30 10:27:11 4: FHT hz.Kueche actuator: 0%
2014.09.30 10:27:11 5: Triggering hz.Kueche (1 changes)
2014.09.30 10:27:11 5: Notify loop for hz.Kueche actuator: 0%
2014.09.30 10:27:11 4: eventTypes: FHT hz.Kueche actuator: 0% -> actuator: .*%
2014.09.30 10:27:34 5: CUL/RAW: /T020400BA000C

2014.09.30 10:27:34 5: CUL_0: T020400BA00 -68
2014.09.30 10:27:34 5: CUL_0 dispatch 810c04xx0909a00102040000ba00
2014.09.30 10:27:34 4: FHT hz.Wohnzimmer actuator: 0%
2014.09.30 10:27:34 5: Triggering hz.Wohnzimmer (1 changes)
2014.09.30 10:27:34 5: Notify loop for hz.Wohnzimmer actuator: 0%
2014.09.30 10:27:34 4: eventTypes: FHT hz.Wohnzimmer actuator: 0% -> actuator: .*%
2014.09.30 10:29:00 5: CUL/RAW: /T020100BA00F1

2014.09.30 10:29:00 5: CUL_0: T020100BA00 -81.5
2014.09.30 10:29:00 5: CUL_0 dispatch 810c04xx0909a00102010000ba00
2014.09.30 10:29:00 4: FHT hz.Schlafzimmer actuator: 0%
2014.09.30 10:29:00 5: Triggering hz.Schlafzimmer (1 changes)
2014.09.30 10:29:00 5: Notify loop for hz.Schlafzimmer actuator: 0%
2014.09.30 10:29:00 4: eventTypes: FHT hz.Schlafzimmer actuator: 0% -> actuator: .*%
2014.09.30 10:29:05 5: CUL/RAW: /T020200B20030

2014.09.30 10:29:05 5: CUL_0: T020200B200 -50
2014.09.30 10:29:05 5: CUL_0 dispatch 810c04xx0909a00102020000b200
2014.09.30 10:29:05 4: FHT hz.Badezimmer actuator: 0%
2014.09.30 10:29:05 5: Triggering hz.Badezimmer (1 changes)
2014.09.30 10:29:05 5: Notify loop for hz.Badezimmer actuator: 0%
2014.09.30 10:29:05 4: eventTypes: FHT hz.Badezimmer actuator: 0% -> actuator: .*%
2014.09.30 10:29:06 5: CUL/RAW: /T02024269E830

2014.09.30 10:29:06 5: CUL_0: T02024269E8 -50
2014.09.30 10:29:06 5: CUL_0 dispatch 810c04xx0909a0010202420069e8
2014.09.30 10:29:06 5: CUL/RAW: /T020243690030

2014.09.30 10:29:06 5: CUL_0: T0202436900 -50
2014.09.30 10:29:06 5: CUL_0 dispatch 810c04xx0909a001020243006900
2014.09.30 10:29:06 4: FHT hz.Badezimmer measured-temp: 23.2
2014.09.30 10:29:06 5: Triggering hz.Badezimmer (2 changes)
2014.09.30 10:29:06 5: Notify loop for hz.Badezimmer measured-temp: 23.2
2014.09.30 10:29:06 4: eventTypes: FHT hz.Badezimmer measured-temp: 23.2 -> measured-temp: .*
2014.09.30 10:29:06 4: eventTypes: FHT hz.Badezimmer temperature: 23.2 -> temperature: .*
2014.09.30 10:29:06 5: CUL/RAW: /T020244690030

2014.09.30 10:29:06 5: CUL_0: T0202446900 -50
2014.09.30 10:29:06 5: CUL_0 dispatch 810c04xx0909a001020244006900
2014.09.30 10:29:06 4: FHT hz.Badezimmer battery: ok
2014.09.30 10:29:06 4: FHT hz.Badezimmer lowtemp: ok
2014.09.30 10:29:06 4: FHT hz.Badezimmer window: closed
2014.09.30 10:29:06 4: FHT hz.Badezimmer windowsensor: ok
2014.09.30 10:29:06 4: FHT hz.Badezimmer warnings: none
2014.09.30 10:29:06 5: Triggering hz.Badezimmer (5 changes)
2014.09.30 10:29:06 5: Notify loop for hz.Badezimmer battery: ok
2014.09.30 10:29:06 4: eventTypes: FHT hz.Badezimmer battery: ok -> battery: ok
2014.09.30 10:29:06 4: eventTypes: FHT hz.Badezimmer lowtemp: ok -> lowtemp: ok
2014.09.30 10:29:06 4: eventTypes: FHT hz.Badezimmer window: closed -> window: closed
2014.09.30 10:29:06 4: eventTypes: FHT hz.Badezimmer windowsensor: ok -> windowsensor: ok
2014.09.30 10:29:06 4: eventTypes: FHT hz.Badezimmer warnings: none -> warnings: none
2014.09.30 10:29:08 5: CUL/RAW: /T020300B00032

2014.09.30 10:29:08 5: CUL_0: T020300B000 -49
2014.09.30 10:29:08 5: CUL_0 dispatch 810c04xx0909a00102030000b000
2014.09.30 10:29:08 4: FHT hz.Kueche actuator: 0%
2014.09.30 10:29:08 5: Triggering hz.Kueche (1 changes)
2014.09.30 10:29:08 5: Notify loop for hz.Kueche actuator: 0%
2014.09.30 10:29:08 4: eventTypes: FHT hz.Kueche actuator: 0% -> actuator: .*%
2014.09.30 10:29:31 5: CUL/RAW: /T020400BA0007

2014.09.30 10:29:31 5: CUL_0: T020400BA00 -70.5
2014.09.30 10:29:31 5: CUL_0 dispatch 810c04xx0909a00102040000ba00
2014.09.30 10:29:31 4: FHT hz.Wohnzimmer actuator: 0%
2014.09.30 10:29:31 5: Triggering hz.Wohnzimmer (1 changes)
2014.09.30 10:29:31 5: Notify loop for hz.Wohnzimmer actuator: 0%
2014.09.30 10:29:31 4: eventTypes: FHT hz.Wohnzimmer actuator: 0% -> actuator: .*%
2014.09.30 10:31:01 5: CUL/RAW: /T020200B20030

2014.09.30 10:31:01 5: CUL_0: T020200B200 -50
2014.09.30 10:31:01 5: CUL_0 dispatch 810c04xx0909a00102020000b200
2014.09.30 10:31:01 4: FHT hz.Badezimmer actuator: 0%
2014.09.30 10:31:01 5: Triggering hz.Badezimmer (1 changes)
2014.09.30 10:31:01 5: Notify loop for hz.Badezimmer actuator: 0%
2014.09.30 10:31:01 4: eventTypes: FHT hz.Badezimmer actuator: 0% -> actuator: .*%
2014.09.30 10:31:04 5: CUL/RAW: /T020300B00031

2014.09.30 10:31:04 5: CUL_0: T020300B000 -49.5
2014.09.30 10:31:04 5: CUL_0 dispatch 810c04xx0909a00102030000b000
2014.09.30 10:31:04 4: FHT hz.Kueche actuator: 0%
2014.09.30 10:31:04 5: Triggering hz.Kueche (1 changes)
2014.09.30 10:31:04 5: Notify loop for hz.Kueche actuator: 0%
2014.09.30 10:31:04 4: eventTypes: FHT hz.Kueche actuator: 0% -> actuator: .*%
2014.09.30 10:31:28 5: CUL/RAW: /T020400BA0003

2014.09.30 10:31:28 5: CUL_0: T020400BA00 -72.5
2014.09.30 10:31:28 5: CUL_0 dispatch 810c04xx0909a00102040000ba00
2014.09.30 10:31:28 4: FHT hz.Wohnzimmer actuator: 0%
2014.09.30 10:31:28 5: Triggering hz.Wohnzimmer (1 changes)
2014.09.30 10:31:28 5: Notify loop for hz.Wohnzimmer actuator: 0%
2014.09.30 10:31:28 4: eventTypes: FHT hz.Wohnzimmer actuator: 0% -> actuator: .*%
2014.09.30 10:32:51 5: CUL/RAW: /T020100BA00F3

2014.09.30 10:32:51 5: CUL_0: T020100BA00 -80.5
2014.09.30 10:32:51 5: CUL_0 dispatch 810c04xx0909a00102010000ba00
2014.09.30 10:32:51 4: FHT hz.Schlafzimmer actuator: 0%
2014.09.30 10:32:51 5: Triggering hz.Schlafzimmer (1 changes)
2014.09.30 10:32:51 5: Notify loop for hz.Schlafzimmer actuator: 0%
2014.09.30 10:32:51 4: eventTypes: FHT hz.Schlafzimmer actuator: 0% -> actuator: .*%
2014.09.30 10:32:57 5: CUL/RAW: /T020200B20030

2014.09.30 10:32:57 5: CUL_0: T020200B200 -50
2014.09.30 10:32:57 5: CUL_0 dispatch 810c04xx0909a00102020000b200
2014.09.30 10:32:57 4: FHT hz.Badezimmer actuator: 0%
2014.09.30 10:32:57 5: Triggering hz.Badezimmer (1 changes)
2014.09.30 10:32:57 5: Notify loop for hz.Badezimmer actuator: 0%
2014.09.30 10:32:57 4: eventTypes: FHT hz.Badezimmer actuator: 0% -> actuator: .*%
2014.09.30 10:33:01 5: CUL/RAW: /T020300B00030

2014.09.30 10:33:01 5: CUL_0: T020300B000 -50
2014.09.30 10:33:01 5: CUL_0 dispatch 810c04xx0909a00102030000b000
2014.09.30 10:33:01 4: FHT hz.Kueche actuator: 0%
2014.09.30 10:33:01 5: Triggering hz.Kueche (1 changes)
2014.09.30 10:33:01 5: Notify loop for hz.Kueche actuator: 0%
2014.09.30 10:33:01 4: eventTypes: FHT hz.Kueche actuator: 0% -> actuator: .*%
2014.09.30 10:33:25 5: CUL/RAW: /T020400BA0003

2014.09.30 10:33:25 5: CUL_0: T020400BA00 -72.5
2014.09.30 10:33:25 5: CUL_0 dispatch 810c04xx0909a00102040000ba00
2014.09.30 10:33:25 4: FHT hz.Wohnzimmer actuator: 0%
2014.09.30 10:33:25 5: Triggering hz.Wohnzimmer (1 changes)
2014.09.30 10:33:25 5: Notify loop for hz.Wohnzimmer actuator: 0%
2014.09.30 10:33:25 4: eventTypes: FHT hz.Wohnzimmer actuator: 0% -> actuator: .*%
2014.09.30 10:33:40 5: CUL/RAW: /T02014269DEF1

2014.09.30 10:33:40 5: CUL_0: T02014269DE -81.5
2014.09.30 10:33:40 5: CUL_0 dispatch 810c04xx0909a0010201420069de
2014.09.30 10:33:41 5: CUL/RAW: /T0201436900F0

2014.09.30 10:33:41 5: CUL_0: T0201436900 -82
2014.09.30 10:33:41 5: CUL_0 dispatch 810c04xx0909a001020143006900
2014.09.30 10:33:41 4: FHT hz.Schlafzimmer measured-temp: 22.2
2014.09.30 10:33:41 5: Triggering hz.Schlafzimmer (2 changes)
2014.09.30 10:33:41 5: Notify loop for hz.Schlafzimmer measured-temp: 22.2
2014.09.30 10:33:41 4: eventTypes: FHT hz.Schlafzimmer measured-temp: 22.2 -> measured-temp: .*
2014.09.30 10:33:41 4: eventTypes: FHT hz.Schlafzimmer temperature: 22.2 -> temperature: .*
2014.09.30 10:33:41 5: CUL/RAW: /T0201446900F1

2014.09.30 10:33:41 5: CUL_0: T0201446900 -81.5
2014.09.30 10:33:41 5: CUL_0 dispatch 810c04xx0909a001020144006900
2014.09.30 10:33:41 4: FHT hz.Schlafzimmer battery: ok
2014.09.30 10:33:41 4: FHT hz.Schlafzimmer lowtemp: ok
2014.09.30 10:33:41 4: FHT hz.Schlafzimmer window: closed
2014.09.30 10:33:41 4: FHT hz.Schlafzimmer windowsensor: ok
2014.09.30 10:33:41 4: FHT hz.Schlafzimmer warnings: none
2014.09.30 10:33:41 5: Triggering hz.Schlafzimmer (5 changes)
2014.09.30 10:33:41 5: Notify loop for hz.Schlafzimmer battery: ok
2014.09.30 10:33:41 4: eventTypes: FHT hz.Schlafzimmer battery: ok -> battery: ok
2014.09.30 10:33:41 4: eventTypes: FHT hz.Schlafzimmer lowtemp: ok -> lowtemp: ok
2014.09.30 10:33:41 4: eventTypes: FHT hz.Schlafzimmer window: closed -> window: closed
2014.09.30 10:33:41 4: eventTypes: FHT hz.Schlafzimmer windowsensor: ok -> windowsensor: ok
2014.09.30 10:33:41 4: eventTypes: FHT hz.Schlafzimmer warnings: none -> warnings: none
2014.09.30 10:34:46 5: CUL/RAW: /T020100BA00F2

2014.09.30 10:34:46 5: CUL_0: T020100BA00 -81
2014.09.30 10:34:46 5: CUL_0 dispatch 810c04xx0909a00102010000ba00
2014.09.30 10:34:46 4: FHT hz.Schlafzimmer actuator: 0%
2014.09.30 10:34:46 5: Triggering hz.Schlafzimmer (1 changes)
2014.09.30 10:34:46 5: Notify loop for hz.Schlafzimmer actuator: 0%
2014.09.30 10:34:46 4: eventTypes: FHT hz.Schlafzimmer actuator: 0% -> actuator: .*%
2014.09.30 10:34:53 5: CUL/RAW: /T020200B20031

2014.09.30 10:34:53 5: CUL_0: T020200B200 -49.5
2014.09.30 10:34:53 5: CUL_0 dispatch 810c04xx0909a00102020000b200
2014.09.30 10:34:53 4: FHT hz.Badezimmer actuator: 0%
2014.09.30 10:34:53 5: Triggering hz.Badezimmer (1 changes)
2014.09.30 10:34:53 5: Notify loop for hz.Badezimmer actuator: 0%
2014.09.30 10:34:53 4: eventTypes: FHT hz.Badezimmer actuator: 0% -> actuator: .*%
2014.09.30 10:34:54 5: CUL/RAW: /T02024269E830

2014.09.30 10:34:54 5: CUL_0: T02024269E8 -50
2014.09.30 10:34:54 5: CUL_0 dispatch 810c04xx0909a0010202420069e8
2014.09.30 10:34:54 5: CUL/RAW: /T020243690030

2014.09.30 10:34:54 5: CUL_0: T0202436900 -50
2014.09.30 10:34:54 5: CUL_0 dispatch 810c04xx0909a001020243006900
2014.09.30 10:34:54 4: FHT hz.Badezimmer measured-temp: 23.2
2014.09.30 10:34:54 5: Triggering hz.Badezimmer (2 changes)
2014.09.30 10:34:54 5: Notify loop for hz.Badezimmer measured-temp: 23.2
2014.09.30 10:34:54 4: eventTypes: FHT hz.Badezimmer measured-temp: 23.2 -> measured-temp: .*
2014.09.30 10:34:54 4: eventTypes: FHT hz.Badezimmer temperature: 23.2 -> temperature: .*
2014.09.30 10:34:54 5: CUL/RAW: /T020244690030


Wie zu sehen ist, kommt - wie erwartet - die PLL1 Nachricht direkt nach der PLL0. Die Kommunikation geht danach aber normal weiter. Verstehe ich es richtig, dass wenn mein CUL bei einer PLL1 Nachricht einen schlechten Tag hat er immernoch aus dem Tritt  kommen kann?

Gruß, Andreas

noansi

Hallo Andreas,

es sollte mit den Änderungen nicht passieren, dass die Kommunikation einschläft, so lange der CUL sich noch in den PLL-Lock bringen lässt, was offenbar geht. Dafür sorgt der zyklische Test über den Taskaufruf, falls die TX/RX-Umschaltung schief geht.

Wenn er empfindlicher würde, könnte die Kommunikation aber holpriger werden.

Dein Log zeigt aber, dass es passieren kann, dass die erneute Kalibrierung mit Schalten nach IDLE und dann SCAL tatsächlich schief gehen kann und mehrere RX/TX TX/RX Schaltversuche nicht ganz sinnlos sind.

Ist dein CUL eigentlich höheren Temperaturschwamkungen ausgesetzt? Z.B. weil die Sonne drauf scheinen kann?

Gruß, Ansgar.

noansi

Hallo Rudolf,

die in der letzten Nachricht von Andreas aufgetretenen PLL-Lock Fehler müssen beim jetzigen Stand bei der Umschaltung nach TX aufgetreten sein.

fht80b_sendpacket schaltet nach IDLE und löst damit die nächste Autokalibrierung aus.

Ich habe es mit meinem Problem-CUL nachgestellt, indem ich mit dem RandomTimer alle 2 Minuten eine K... Temperaturmessage rausgeschickt habe. Ergebnis: 4 Tage lang nichts (da in meiner Umschaltung nach RX bzw TX mit Interrupt kein IDLE vorkommt und damit die Autokalibrierung nicht angestoßen wird, sofern die Umschaltung erfolgreich ist und diese daher jeweils direkt erfolgt). Empfang ist danach immer brav weiter gelaufen.

In ks_send habe ich nun mal testweise zu Anfang ein ccStrobe(CC1100_SIDLE); eingebaut und damit das Verhalten von fht80b_sendpacket nachgestellt.
Im Log tauchen bei mir nun alle paar Stunden PLL0 Einträge auf, d.h. die Umschaltung nach TX klappt nicht immer ohne PLL-Lock Fehler.

Für Andreas würde das ohne Umschalt-Check bedeuten, dass der CUL nicht immer sendet, sprich er dem FHT nicht zuverlässig antworten würde.

Damit macht der PLL-Lock Check bei der State-Umschaltung in beide Richtungen, TX oder RX, Sinn, wenn ich die ASKSIN Erfahrung mit einbeziehe.

In Summe machen also nach jetziger Betrachtung alle Checks Sinn, die ich eingebaut habe. Ob es mit noch weniger Code umzusetzen ist, steht auf einem anderen Blatt.  ;)
Für CULs mit härteren Umgebungsbedingungen (Temperatur und Spannungsschwankungen) würde es noch Sinn machen, zu RX über IDLE zu wechseln und damit regelmäßig eine Kalibrierung zu erzwingen.

Vielleicht ist es noch eine Überlegung wert, den CC1100_OUT_PIN (vgl. cc1101 errata) als Indikator für den PLL Lock zu benutzen, da er ja nur während des Sendens benötigt wird um die Bits raus zu schieben. Dann würde aus dem cc1101 Register Lesen eine Portbitabfrage, die natürlich mit der zusätzlichen Umschaltung der GDO0 Funktion bei der RX/TX Umschaltung erkauft wird. Und da der Pin dann trotz Lock noch toggeln kann (vgl. errata) muss die Flanke noch ausgewertet werden und ein entsprechendes Merkbit bereit gestellt werden. Gefühlt schneller, aber eher mehr Code?!?

Gruß, Ansgar.

grobiballon

Hallo,

mein CUL ist eigentlich keinen großen Temperaturschwankungen ausgesetzt. Er steht an einem Ort, wo er keine direkte Sonne abbekommen kann.

Zu Deinen weiteren Ausführungen kann ich leider nichts beitragen. Da hört es dann bei mir auf  :-[

Gruß, Andreas

noansi

Hallo Andreas, hallo Rudolf,

ich habe die Änderungen jetzt nochmal überarbeitet.

Wenn ich es richtig gesehen habe, dann ist der Tranceiver in der Hauptschleife immer auf Empfang.
Daher habe ich den zyklischen Check in die Hauptschleife als Task eingebaut (und dementsprechend in rf_receive.c und rf_asksin.c raus genommen).
Es ganz an den Anfang des Minute-Tasks zu legen, wäre auch eine Möglichkeit um die Änderung in CUL.c zu vermeiden.

Die Umschaltung RX und TX mit check habe ich umgebaut und dabei ist mir auch noch eine Unschärfe in meiner letzten Version aufgefallen. Wenn bei der TX Umschaltung ein PLL-Lockproblem auftrat, wurde zwar das Lock-Problem zu beheben versucht, wenn das direkt mit angestoßener Kalibrierung gelang jedoch nicht wieder in TX geschaltet, sondern blieb in IDLE. Das sollte jetzt nicht mehr passieren.

Der Umbau auf Basis von Trunk459 hat dazu geführt, dass auf Kosten der Lesbarkeit wenigstens der zyklische Test/Recover in absoluter Minimalversion und ohne PLL_Meldungen auch für CUL_V2 compilierbar wurde und bei der gcc Version 4.7.2 mit 12176 + 8 Bytes gerade noch so zu flashen sein sollte (Funktion kann ich leider nicht testen, mangels Hardware).

Außerdem habe ich nicht benötigte Funktionen raus geworfen, bis auf einen zyklischen TX Lock Check, falls das doch mal gebraucht würde.

Die Meldungen sind geändert, fangen aber weiterhin mit PLL an und dann kommen zwei hex Ziffern, so dass damit genauer das Auftreten des PLL Problems nachvollziehbar wird (Senden, Empfang, Umschaltung, Recover etc.). PLL01 entspricht dem bisherigen PLL0. Ein TX Recover sollte nun mit PLLB5 auffallen.

@Andreas: wäre schön, wenn Du nochmal testen könntest.

@Rudolf: Damit einfach nachvollziehbar wird, was nach allen #defines im Code übrig bleibt, habe ich #warning Compilerausgaben eingebaut, so dass die aktiven defines ausgegeben werden. Das ist am Anfang von cc1101_pllcheck.h auch abschaltbar.

Gruß, Ansgar.

grobiballon

Hallo Ansgar,

Ich bekomme in der letzten Version nur die V2 compiliert. Vielleicht bin ich aber auch einfach nur zu blöde...

Gruß, Anderas

grobiballon

Hi,

mit dem aktuellen trunk hat es nun funktioniert. Ich werde berichten...

Gruß, Andreas

grobiballon

...es geht schon los:
2014.10.09 22:07:02 3: set CUL_0 raw B01
2014.10.09 22:07:02 1: /dev/ttyACM0 disconnected, waiting to reappear (CUL_0)
2014.10.09 22:07:30 3: Setting CUL_0 baudrate to 9600
2014.10.09 22:07:30 1: /dev/ttyACM0 reappeared (CUL_0)
2014.10.09 22:07:30 3: CUL_0: Possible commands: BbCFiAZEGMKUYRTVWXefmltux
2014.10.09 22:16:50 2: CUL_0: unknown message PLL01
2014.10.09 22:16:50 2: CUL_0: unknown message PLLB5
2014.10.09 22:33:58 2: CUL_0: unknown message PLL01
2014.10.09 22:33:58 2: CUL_0: unknown message PLLB5
2014.10.09 22:34:46 2: CUL_0: unknown message PLL01
2014.10.09 22:34:46 2: CUL_0: unknown message PLLB5
2014.10.09 22:38:04 2: CUL_0: unknown message PLL01
2014.10.09 22:38:04 2: CUL_0: unknown message PLLB5
2014.10.09 22:38:04 2: CUL_0: unknown message PLL01
2014.10.09 22:38:04 2: CUL_0: unknown message PLLB5


Gruß
Andreas

noansi

Hallo Andreas,

PLL01 -> Check auf PLL-Lock hat das Lock Problem aufgedeckt
PLLB5 -> Es ist bei der Umschaltung nach TX aufgetreten, Recover nach RX hat funtkioniert. (Und danach wurde erneut, aber erfolgreich auf TX geschaltet.)

Die Folge kurz hintereinander (gleiche Sekunde) müssen zwei FHT Sendepakete gewesen sein.

Das ist in der Tat recht häufig. Da ein PLLF5 fehlt hat aber jedes mal der Recover funktioniert und somit wurde doch ein funktionierender TX Sendezustand erreicht.
Da ein PLL74 und PLL02 fehlt, hat der RX Recover in cc1101_checkPLL funktioniert. Und der nächste TX Umschaltversuch war erfolgreich.
Bekommst Du jetzt auch mehr Daten rein?

Mein Problem CUL bringt das nicht so häufig (mit dem ergänzten switch nach IDLE am Anfang von ks_send).

Das es nur bei TX passiert liegt an der Umschaltung nach IDLE vor dem FHT Senden, was eine Autokalibrierung bei der Umschaltung nach TX auslöst.

Bekommst Du nun auch mehr/stabiler Daten rein? Wäre zu erwarten, wenn das Senden stabiler funktioniert.
Ist auch noch ein PLL74, PLL02 oder PLLF5 aufgetreten?

Gruß, Ansgar.

grobiballon

#27
Hallo Ansgar,

es kommen bis jetzt keine weiteren Meldungen als die PLL01/B5. Ich habe auch nie wirklich Empfangsprobleme gehabt - also es war nicht so, dass ich erwartete regelmäßige Updates der FHTs nicht bekommen habe. Das hat immer funktioniert, bis der CUL es irgendwann mal nicht in den PLL lock geschafft hat.

Also kurzum, deine Modifikation hat nicht den Empfang verbessert, sondern im Wesentlichen sorgt er nur dafür, dass der CUL überhaupt aktiv bleibt. Und letzteres macht dein Patch gut. Auf jeden Fall habe ich seit deiner ersten Modifikation keine Aussetzer mehr gehabt.

Vielleicht sollte man später nur die Meldungen anzeigen lassen, wenn ein Recover nicht geklappt hat (debugging ausgenommen) . Wenn es klappt ist es ja nicht so wild und bedarf keiner Info.

Gruß
Andreas

EDIT: PS: Dieser Therad hat gefühlt im Vergleich zu Anderen eine recht hohe Anzahl an Aufrufen. Gibt es hier noch weitere die ein ähnliches Problem haben, bzw die den Patch angewand haben?

grobiballon

Moin,

jetzt gab es auch mal folgendes:
2014.10.11 23:17:47 2: CUL_0: unknown message PLL01
2014.10.11 23:17:48 2: CUL_0: unknown message PLL74
2014.10.11 23:17:48 2: CUL_0: unknown message PLL02
2014.10.11 23:17:48 2: CUL_0: unknown message PLLB5
2014.10.11 23:17:48 2: CUL_0: unknown message PLL01
2014.10.11 23:17:48 2: CUL_0: unknown message PLLB5


Gruß, Andreas

noansi

Hallo Andreas, hallo Rudolf,

Der Log Auszug sagt:

PLL01 -> Check auf PLL-Lock hat das Lock Problem aufgedeckt
PLL74 -> Nach schalten von IDLE auf RX (State RX erreicht) in cc1101_checkPLL() war der Chip nicht in PLL Lock. (Schalten nach IDLE und dann nach RX ist der PLL-Lock Recoverversuch von cc1101_checkPLL(), wenn Autokalibrierung IDLE nach RX/TX aktiv ist)
PLL02 -> Recoverversuch nach RX in cc1101_checkPLL() hat nicht funktioniert (zusammen mit PLL74: obwohl der Chip in RX State ist)
PLLB5 -> das Lock Problem ist beim Umschalten nach TX aufgetreten, es wird (bis zu 254 mal) nochmal versucht nach TX zu schalten
PLL01 -> Check auf PLL-Lock hat das Lock Problem aufgedeckt (neuer Schaltversuch von RX nach TX, aber ohne PLL Lock von vorher!)
PLLB5 -> das Lock Problem ist beim Umschalten nach TX aufgetreten, aber da PLL74 und PLL02 fehlen hat diesmal der Recover nach RX funktioniert. Es wird erneut versucht nach TX zu schalten
keine weiteren Meldungen -> nächster Schaltversuch nach TX war erfolgreich mit PLL Lock.

Das zeigt, dass auch die wiederholten Schalt-/Recover-Versuche Sinn machen, um erfolgreich, d.h. mit PLL-Lock, in den gewünschten Zielzustand zu schalten. Denn ohne den PLL-Lock geht weder Senden noch Empfang.


Damit stellt sich mir nun noch die Frage, die Anzahl der #defines zu reduzieren und den jetzigen Stand zu zementieren, um den Code besser lesbar zu machen oder es in der Form zu lassen, um künftig bei Nutzung nur eines Teils der Funktionen ggf. ein paar Bytes Programmspeicher sparen zu können.

Ergänzen sollte ich noch eine regelmäßige Zwangs-Kalibrierung, z.B. indem das Schalten nach RX in den toRX Funktionen (wegen CCA) immer über ein vorheriges Schalten nach IDLE (oder autocal-unabhängig zusätzlich SCAL) läuft. Denn wenn nur direkt nach TX oder nur direkt nach RX geschaltet wird, was die jeweiligen Schaltfunktionen jetzt regulär machen, dann wird nicht neu (auto)kalibriert.
Notwendig ist das aber nur, wenn Versorgungsspannung oder Temperatur des CC1101 schwanken, vgl. Chip Doku. Damit kommt es zwar vermutlich nicht zu einem Lock Problem, aber unerwünschte Frequenzschwankungen sind möglich.

CC1101 Doku:
ZitatThe VCO characteristics vary with temperature
and  supply  voltage  changes  as  well  as  the
desired  operating  frequency.  In  order  to
ensure  reliable  operation,  CC1101  includes
frequency synthesizer self-calibration circuitry.
This calibration should be done regularly, and
must be performed after turning on power and
before  using  a  new  frequency  (or  channel).
ZitatThe frequency synthesizer must be calibrated
regularly.
ZitatSince  the  current  calibration  values  are  only
valid  for  a  finite  temperature  range  (typically
±40C) the PLL must be re-calibrated if the lock
indicator does not indicate PLL lock.

Bei COC z.B. der auf dem RasPi montiert ist (meist in einem Gehäuse) gibt es den Warmlauf von kaltem stromlosen System nach Dauerbetrieb, wo immerhin eine Erwärmung um mehrere 10°C möglich ist. Da würde es für den Betrieb mit reinem Empfang (KS300, TX3) sogar Sinn machen, die Kalibrierung nach dem Empfang eines gültigen Datenpakets z.B. alle halbe Stunde (um den Empfang nicht unnötig häufig zu stören) zu erzwingen. (rf_receive: Im Interrupt geht es leider nicht, weil cc1101 Registerzugriffe über die SPI Schnittstelle im Interrupt nicht möglich sind)
Beides kostet natürlich noch einige Bytes mehr Programmspeicher.

Gruß, Ansgar.

noansi

Hallo Rudolf, hallo Andreas,

hier nun die Version mit Kalibrirung bei Umschaltung nach RX und regelmäßiger Kalibrierung nach ASKSIN und SlowRF Empfangsmessages alle ca. 35 Minuten.

Gruß, Ansgar.

grobiballon

Hallo Ansgar, Hallo Rudolf,

ich habe die letzte Version gerade geflasht. Da ich gerade in Dubai bin, weiss ich noch nicht wie ich Zeit finde, den Log zurückzumelden...

Gruß, Andreas

noansi

Hallo Rudolf,

und hier zum besseren Lesen mal eine weitgehend #ifdef entkernte Version von cc1101_pllcheck.c (nicht zum Kompilieren gedacht):

#include "board.h"

#include <avr/io.h>
#include "cc1100.h"
#include "delay.h"
#include "display.h"
#include "fncollection.h"
#include "clock.h"

#include "cc1101_pllcheck.h"



//*******************************************************************************************
// use to calibrate after a reception of a message, when next message is expected after a pause

typedef union {
struct {
uint8_t byte0;
uint8_t byte1;
uint8_t byte2;
uint8_t byte3;
} bytestamp;
struct {
uint16_t word0;
uint16_t word1;
} wordstamp;
uint32_t timestamp;
} CC1101_timeout_t;

static uint8_t cc1101_reg_calib_time;

void
cc1101_RX_regular_calibration(void)
{
uint8_t ts = ((CC1101_timeout_t)ticks).bytestamp.byte2 & 0xfc; // 0xfffc0000 -> every 0x40000 ticks a change -> every aprox. 35 minutes with ticks at 8ms resolution

if (ts != cc1101_reg_calib_time) { // with byte check overflow after about 37 hours, that should be enough
cc1101_toRX(); // do calibration and switch back to RX
cc1101_reg_calib_time = ts;
}
}


//*******************************************************************************************
// check if stuck in RX state without PLL Lock and try to recover

# ifdef HAS_CC1101_RX_PLL_LOCK_CHECK_TASK_WAIT_SIMPLE

void
cc1101_RX_check_PLL_wait_task(void) // this version is for CUL_V2 with low PRG memory
{
// check PLL Lock and try to calibrate. Possibly restoring a saved calibration could be faster...
if (cc1100_readReg( CC1100_FSCAL1 ) != 0x3f) return; // success, PLL in Lock as described in CC1101 doc and errata

// try to recover as no PLL Lock as described in CC1101 doc and errata
// with Autocal enabled for the transition from RX/TX to IDLE this gives a new chance for a working calibration
cc1101_ToStateStrobeAck(CC1100_SIDLE, CC1100_STATE_IDLE); // first switch to IDLE

        // to save PRG memory we may assume autocal ia enabled, so manual calibration should not be required!!!
/*
if ((cc1100_readReg(CC1100_MCSM0) & 0x30) != 0x10) // Autocalibration IDLE to RX/TX enabled?
{
ccStrobe( CC1100_SCAL ); // No, do manual calibration, as no Autocal from IDLE to RX is configured
cc1101_wait_state(MARCSTATE_IDLE, 4); // and wait for IDLE state to be reached. This may fail, if it timeouts.
}
*/

// with Autocal enabled for the transition from IDLE to RX/TX this gives a new chance for a working calibration
cc1101_ToStateStrobeAck(CC1100_SRX, CC1100_STATE_RX); // Allways try to recover to RX (needed for CCA). This may fail, if it timeouts.

return; // error, no PLL Lock and could not recover
}

# else // HAS_CC1101_RX_PLL_LOCK_CHECK_TASK_WAIT_SIMPLE

uint8_t
cc1101_RX_check_PLL_wait_task(void) // this version is the normal one, but uses more PRG memory
{
return (cc1101_checkPLL() < CC1101_PLL_LOCK_CHECK_FAIL); // check PLL-Lock and try calibration to recover, return 0 on fail
}

# endif // HAS_CC1101_RX_PLL_LOCK_CHECK_TASK_WAIT_SIMPLE


//*******************************************************************************************
#ifdef HAS_CC1101_RX_INTEN

uint8_t
cc1101_toRX_IntEnable(void) // returns 0 on fail
{
uint8_t res = cc1101_toRX();

if (res) {
EIFR  |= _BV(CC1100_INT); // clear interrupt flag for transceiver not to have an old obsolet signal triggering an interrupt
EIMSK |= _BV(CC1100_INT); // enable interrupt for transceiver
}

return res;
}
#endif //HAS_CC1101_RX_INTEN


//*******************************************************************************************
uint8_t
cc1101_toTX_CCA(uint8_t poll_to)  // poll_to=1 times out after aprox. 0.6s, choose poll_to with respect to watchdog timeout!!! returns 0 on fail
{
do {
if (cc1101_toTX()) {
return 1; // success
}
}
while (--poll_to);

return 0; // 0 = failed
}


//*******************************************************************************************
#ifdef HAS_CC1101_TX_INTDIS

uint8_t
cc1101_toTX_IntDisable(void) // returns 0 on fail
{
  EIMSK  &= ~_BV(CC1100_INT);  // disable interrupt for transceiver

  return cc1101_toTX();
}
#endif //HAS_CC1101_TX_INTDIS


//*******************************************************************************************
uint8_t
cc1101_toRX(void) // returns 0 on fail
{
# ifdef HAS_CC1101_FORCE_RX_CAL
cc1101_ToStateStrobeAck(CC1100_SIDLE, CC1100_STATE_IDLE); // first switch to IDLE

if ((cc1100_readReg(CC1100_MCSM0) & 0x30) != 0x10) // Autocalibration IDLE to RX/TX enabled?
{
ccStrobe( CC1100_SCAL ); // No, do manual calibration, as no Autocal from IDLE to RX is configured
cc1101_wait_state(MARCSTATE_IDLE, 4); // and wait for IDLE state to be reached. This may fail, if it timeouts.
}
# endif // HAS_CC1101_FORCE_RX_CAL

return cc1101_toState(CC1100_SRX, CC1100_STATE_RX, CC1101_PLL_LOCK_CHECK_FAIL);
}


//*******************************************************************************************
uint8_t
cc1101_toTX(void) // returns 0 on fail
{
return cc1101_toState(CC1100_STX, CC1100_STATE_TX, CC1101_PLL_LOCK_CHECK_RECOVERED_TO_RX);
}


//*******************************************************************************************
uint8_t
cc1101_toState(uint8_t StateStrobe, uint8_t StateCheckVal, uint8_t PLLCheckErrLimit)
{
uint8_t res = CC1101_MAX_RXTX_SWITCH_TRIES;

do {
if (cc1101_ToStateStrobeAck(StateStrobe, StateCheckVal)) {

if (cc1101_checkPLL() < PLLCheckErrLimit) {
break; // success
}

cc1101_display_errmsg(StateStrobe | 0x80); // PLLB4 -> RX, PLLB5 -> TX switch PLL check failed
}
}
while (--res);

if (!res) {
cc1101_display_errmsg(StateStrobe | 0xC0); // PLLF4 -> RX, PLLF5 -> TX switch failed
}

return res; // 0 = failed, > 0 success
}


//*******************************************************************************************
uint8_t
cc1101_checkPLL(void)  // noansi: returns 0 on success, 1 on recover end in RX state, 2 on no PLL-Lock (TX or RX will not work)
{
// check PLL Lock and try to calibrate. Possibly restoring a saved calibration could be faster...
if (cc1100_readReg( CC1100_FSCAL1 ) != 0x3f) return CC1101_PLL_LOCK_CHECK_INLOCK; // success, PLL in Lock as described in CC1101 doc and errata

// try to recover as no PLL Lock as described in CC1101 doc and errata
cc1101_display_errmsg(0x01); // PLL01 -> PLL Lock problem found

cc1101_ToStateStrobeAck(CC1100_SIDLE, CC1100_STATE_IDLE); // first switch to IDLE

if ((cc1100_readReg(CC1100_MCSM0) & 0x30) != 0x10) // Autocalibration IDLE to RX/TX enabled?
{
ccStrobe( CC1100_SCAL ); // No, do manual calibration, as no Autocal from IDLE to RX is configured
cc1101_wait_state(MARCSTATE_IDLE, 4); // and wait for IDLE state to be reached. This may fail, if it timeouts.
}

if (cc1101_ToStateStrobeAck(CC1100_SRX, CC1100_STATE_RX)) { // Allways try to recover to RX (needed for CCA). This may fail, if it timeouts.
// check PLL lock again
if (cc1100_readReg( CC1100_FSCAL1 ) != 0x3f) { // PLL in Lock as described in CC1101 doc and errata?
return CC1101_PLL_LOCK_CHECK_RECOVERED_TO_RX; // we recovered, but are in RX
}

cc1101_display_errmsg(CC1100_SRX | 0x40); // PLL74 -> PLL RX recover failed
}

cc1101_display_errmsg(0x02); // PLL02 -> Failed to recover from PLL Lock problem

return CC1101_PLL_LOCK_CHECK_FAIL; // error, no PLL Lock and could not recover
}


//*******************************************************************************************
uint8_t
cc1101_ToStateStrobeAck(uint8_t StateStrobe, uint8_t StateCheckVal) // returns 0 on fail
{
uint8_t res = 255; // try it up to 255 times

do {
if ((ccStrobe( StateStrobe ) & CC1100_STATUS_STATE_BM) == StateCheckVal) {
break; // success
}
}
while (--res);

if (!res) {
cc1101_display_errmsg(StateStrobe); // PLL<statestrobe> -> Failed to switch to state statestrobe
}

return res; // 0 = failed, > 0 success
}


//*******************************************************************************************
uint8_t
cc1101_wait_state(uint8_t state, uint8_t poll_us) // returns 0 on fail
{
uint8_t res = 255; // 255 tries

do
{
if (cc1100_readReg( CC1100_MARCSTATE ) == state) {
break; // ok, state reached
}
my_delay_us( poll_us );
}
while (--res);

if (!res) {
cc1101_display_errmsg(state | 0x80); // PLL<state | 0x80> -> Failed waiting for MARCSTATE
}

return res; // 0 = failed, > 0 success
}


//*******************************************************************************************

uint8_t disable_PLLNOLOCK_MSG = 0; // do not display PLLNOLOCK related errors if > 0

//*******************************************************************************************

void
cc1101_display_errmsg(uint8_t disp_value)
{
  if (!disable_PLLNOLOCK_MSG)
  {
    DS_P( PSTR( "PLL" ) );
    DH2( disp_value );
    DNL( );
  }
}


//*******************************************************************************************


Gruß, Ansgar.

grobiballon

#33
Hallo,

ein Log-Auszug aller PLL Meldungen seit dem letzten Firmwarestand:


2014.10.12 21:35:55 2: CUL_0: unknown message PLL01
2014.10.12 21:49:37 2: CUL_0: unknown message PLL01
2014.10.12 22:05:02 2: CUL_0: unknown message PLL01
2014.10.12 22:05:02 2: CUL_0: unknown message PLLB5
2014.10.12 22:05:25 2: CUL_0: unknown message PLL01
2014.10.12 22:05:25 2: CUL_0: unknown message PLLB5
2014.10.12 22:18:38 2: CUL_0: unknown message PLL01
2014.10.12 22:35:22 2: CUL_0: unknown message PLL01
2014.10.12 22:35:22 2: CUL_0: unknown message PLLB5
2014.10.12 22:36:08 2: CUL_0: unknown message PLL01
2014.10.12 23:14:36 2: CUL_0: unknown message PLL01
2014.10.12 23:17:44 2: CUL_0: unknown message PLL01
2014.10.12 23:17:44 2: CUL_0: unknown message PLLB5
2014.10.12 23:19:39 2: CUL_0: unknown message PLL01
2014.10.12 23:21:25 2: CUL_0: unknown message PLL01
2014.10.12 23:37:55 2: CUL_0: unknown message PLL01
2014.10.12 23:39:51 2: CUL_0: unknown message PLL01
2014.10.12 23:54:36 2: CUL_0: unknown message PLL01
2014.10.13 00:05:25 2: CUL_0: unknown message PLL01
2014.10.13 00:05:25 2: CUL_0: unknown message PLL74
2014.10.13 00:05:25 2: CUL_0: unknown message PLL02
2014.10.13 00:05:25 2: CUL_0: unknown message PLLB5
2014.10.13 00:05:25 2: CUL_0: unknown message PLL01
2014.10.13 00:05:25 2: CUL_0: unknown message PLLB5
2014.10.13 01:01:42 2: CUL_0: unknown message PLL01
2014.10.13 01:01:42 2: CUL_0: unknown message PLLB5
2014.10.13 01:01:46 2: CUL_0: unknown message PLL01
2014.10.13 01:03:41 2: CUL_0: unknown message PLL01
2014.10.13 01:03:41 2: CUL_0: unknown message PLLB5
2014.10.13 01:37:46 2: CUL_0: unknown message PLL01
2014.10.13 01:37:46 2: CUL_0: unknown message PLL01
2014.10.13 01:37:46 2: CUL_0: unknown message PLLB5
2014.10.13 01:53:44 2: CUL_0: unknown message PLL01
2014.10.13 02:01:45 2: CUL_0: unknown message PLL01
2014.10.13 02:01:45 2: CUL_0: unknown message PLLB5
2014.10.13 02:18:23 2: CUL_0: unknown message PLL01
2014.10.13 02:23:54 2: CUL_0: unknown message PLL01
2014.10.13 02:23:54 2: CUL_0: unknown message PLLB5
2014.10.13 02:25:25 2: CUL_0: unknown message PLL01
2014.10.13 02:34:56 2: CUL_0: unknown message PLL01
2014.10.13 02:34:56 2: CUL_0: unknown message PLLB5
2014.10.13 02:57:44 2: CUL_0: unknown message PLL01
2014.10.13 02:57:44 2: CUL_0: unknown message PLLB5
2014.10.13 03:33:47 2: CUL_0: unknown message PLL01
2014.10.13 03:33:47 2: CUL_0: unknown message PLLB5
2014.10.13 04:01:38 2: CUL_0: unknown message PLL01
2014.10.13 04:01:38 2: CUL_0: unknown message PLLB5
2014.10.13 04:39:32 2: CUL_0: unknown message PLL01
2014.10.13 04:50:46 2: CUL_0: unknown message PLL01
2014.10.13 04:52:42 2: CUL_0: unknown message PLL01
2014.10.13 04:52:49 2: CUL_0: unknown message PLL01
2014.10.13 04:52:49 2: CUL_0: unknown message PLL01
2014.10.13 04:52:49 2: CUL_0: unknown message PLLB5
2014.10.13 05:04:27 2: CUL_0: unknown message PLL01
2014.10.13 05:06:24 2: CUL_0: unknown message PLL01
2014.10.13 05:14:55 2: CUL_0: unknown message PLL01
2014.10.13 05:14:55 2: CUL_0: unknown message PLLB5
2014.10.13 05:18:45 2: CUL_0: unknown message PLL01
2014.10.13 05:18:46 2: CUL_0: unknown message PLL01
2014.10.13 05:18:46 2: CUL_0: unknown message PLLB5
2014.10.13 05:20:26 2: CUL_0: unknown message PLL01
2014.10.13 05:20:27 2: CUL_0: unknown message PLL01
2014.10.13 05:20:27 2: CUL_0: unknown message PLLB5
2014.10.13 05:34:26 2: CUL_0: unknown message PLL01
2014.10.13 05:34:26 2: CUL_0: unknown message PLLB5
2014.10.13 05:37:30 2: CUL_0: unknown message PLL01
2014.10.13 05:37:30 2: CUL_0: unknown message PLLB5
2014.10.13 05:37:37 2: CUL_0: unknown message PLL01
2014.10.13 05:37:37 2: CUL_0: unknown message PLL01
2014.10.13 06:02:45 2: CUL_0: unknown message PLL01
2014.10.13 06:02:45 2: CUL_0: unknown message PLLB5
2014.10.13 06:08:48 2: CUL_0: unknown message PLL01
2014.10.13 06:33:37 2: CUL_0: unknown message PLL01
2014.10.13 06:33:37 2: CUL_0: unknown message PLLB5
2014.10.13 06:36:27 2: CUL_0: unknown message PLL01
2014.10.13 06:37:39 2: CUL_0: unknown message PLL01
2014.10.13 06:37:39 2: CUL_0: unknown message PLLB5
2014.10.13 07:24:46 2: CUL_0: unknown message PLL01
2014.10.13 07:24:46 2: CUL_0: unknown message PLLB5
2014.10.13 07:49:49 2: CUL_0: unknown message PLL01
2014.10.13 07:49:49 2: CUL_0: unknown message PLLB5
2014.10.13 07:53:23 2: CUL_0: unknown message PLL01
2014.10.13 07:53:23 2: CUL_0: unknown message PLLB5
2014.10.13 08:03:56 2: CUL_0: unknown message PLL01
2014.10.13 08:24:27 2: CUL_0: unknown message PLL01
2014.10.13 08:24:27 2: CUL_0: unknown message PLLB5
2014.10.13 08:34:06 2: CUL_0: unknown message PLL01
2014.10.13 08:34:06 2: CUL_0: unknown message PLLB5
2014.10.13 08:37:02 2: CUL_0: unknown message PLL01
2014.10.13 08:37:02 2: CUL_0: unknown message PLLB5
2014.10.13 08:38:03 2: CUL_0: unknown message PLL01
2014.10.13 08:38:03 2: CUL_0: unknown message PLLB5
2014.10.13 09:03:57 2: CUL_0: unknown message PLL01
2014.10.13 09:33:47 2: CUL_0: unknown message PLL01
2014.10.13 09:44:59 2: CUL_0: unknown message PLL01
2014.10.13 09:51:55 2: CUL_0: unknown message PLL01
2014.10.13 10:01:33 2: CUL_0: unknown message PLL01
2014.10.13 10:01:33 2: CUL_0: unknown message PLLB5
2014.10.13 10:06:42 2: CUL_0: unknown message PLL01
2014.10.13 10:06:42 2: CUL_0: unknown message PLLB5
2014.10.13 10:06:44 2: CUL_0: unknown message PLL01
2014.10.13 10:18:02 2: CUL_0: unknown message PLL01
2014.10.13 10:19:48 2: CUL_0: unknown message PLL01
2014.10.13 10:52:03 2: CUL_0: unknown message PLL01
2014.10.13 10:52:27 2: CUL_0: unknown message PLL01
2014.10.13 10:52:28 2: CUL_0: unknown message PLL01
2014.10.13 11:25:01 2: CUL_0: unknown message PLL01
2014.10.13 11:34:56 2: CUL_0: unknown message PLL01
2014.10.13 11:36:58 2: CUL_0: unknown message PLL01
2014.10.13 11:36:58 2: CUL_0: unknown message PLLB5
2014.10.13 11:52:14 2: CUL_0: unknown message PLL01
2014.10.13 12:03:54 2: CUL_0: unknown message PLL01
2014.10.13 12:05:42 2: CUL_0: unknown message PLL01
2014.10.13 12:05:42 2: CUL_0: unknown message PLLB5
2014.10.13 12:15:27 2: CUL_0: unknown message PLL01
2014.10.13 12:21:20 2: CUL_0: unknown message PLL01
2014.10.13 12:21:37 2: CUL_0: unknown message PLL01
2014.10.13 12:23:17 2: CUL_0: unknown message PLL01
2014.10.13 12:23:17 2: CUL_0: unknown message PLLB5
2014.10.13 12:33:38 2: CUL_0: unknown message PLL01
2014.10.13 12:33:38 2: CUL_0: unknown message PLLB5
2014.10.13 12:54:27 2: CUL_0: unknown message PLL01
2014.10.13 12:54:27 2: CUL_0: unknown message PLLB5
2014.10.13 12:54:45 2: CUL_0: unknown message PLL01
2014.10.13 13:19:36 2: CUL_0: unknown message PLL01
2014.10.13 13:37:05 2: CUL_0: unknown message PLL01
2014.10.13 13:49:48 2: CUL_0: unknown message PLL01
2014.10.13 13:49:48 2: CUL_0: unknown message PLLB5
2014.10.13 13:50:46 2: CUL_0: unknown message PLL01
2014.10.13 13:52:57 2: CUL_0: unknown message PLL01
2014.10.13 14:06:00 2: CUL_0: unknown message PLL01
2014.10.13 14:06:00 2: CUL_0: unknown message PLLB5
2014.10.13 14:34:04 2: CUL_0: unknown message PLL01
2014.10.13 14:34:04 2: CUL_0: unknown message PLLB5
2014.10.13 14:45:36 2: CUL_0: unknown message PLL01
2014.10.13 14:45:36 2: CUL_0: unknown message PLLB5
2014.10.13 14:49:39 2: CUL_0: unknown message PLL01
2014.10.13 14:49:39 2: CUL_0: unknown message PLLB5
2014.10.13 15:04:27 2: CUL_0: unknown message PLL01
2014.10.13 15:04:27 2: CUL_0: unknown message PLLB5
2014.10.13 15:36:53 2: CUL_0: unknown message PLL01
2014.10.13 15:44:46 2: CUL_0: unknown message PLL01
2014.10.13 15:44:46 2: CUL_0: unknown message PLLB5
2014.10.13 16:02:37 2: CUL_0: unknown message PLL01
2014.10.13 16:02:37 2: CUL_0: unknown message PLL01
2014.10.13 16:02:37 2: CUL_0: unknown message PLLB5
2014.10.13 16:04:27 2: CUL_0: unknown message PLL01
2014.10.13 16:04:27 2: CUL_0: unknown message PLLB5
2014.10.13 16:05:31 2: CUL_0: unknown message PLL01
2014.10.13 16:33:38 2: CUL_0: unknown message PLL01
2014.10.13 16:33:38 2: CUL_0: unknown message PLLB5
2014.10.13 16:35:42 2: CUL_0: unknown message PLL01
2014.10.13 17:02:47 2: CUL_0: unknown message PLL01
2014.10.13 17:04:46 2: CUL_0: unknown message PLL01
2014.10.13 17:04:46 2: CUL_0: unknown message PLLB5
2014.10.13 17:17:42 2: CUL_0: unknown message PLL01
2014.10.13 17:17:42 2: CUL_0: unknown message PLLB5
2014.10.13 17:19:22 2: CUL_0: unknown message PLL01
2014.10.13 17:19:22 2: CUL_0: unknown message PLLB5
2014.10.13 17:20:22 2: CUL_0: unknown message PLL01
2014.10.13 17:25:23 2: CUL_0: unknown message PLL01
2014.10.13 17:25:23 2: CUL_0: unknown message PLLB5
2014.10.13 17:36:45 2: CUL_0: unknown message PLL01
2014.10.13 17:50:26 2: CUL_0: unknown message PLL01
2014.10.13 17:50:26 2: CUL_0: unknown message PLLB5
2014.10.13 17:50:46 2: CUL_0: unknown message PLL01
2014.10.13 17:50:46 2: CUL_0: unknown message PLLB5
2014.10.13 18:02:47 2: CUL_0: unknown message PLL01
2014.10.13 18:03:49 2: CUL_0: unknown message PLL01
2014.10.13 18:03:59 2: CUL_0: unknown message PLL01
2014.10.13 18:03:59 2: CUL_0: unknown message PLLB5
2014.10.13 18:21:13 2: CUL_0: unknown message PLL01
2014.10.13 18:45:48 2: CUL_0: unknown message PLL01
2014.10.13 19:14:57 2: CUL_0: unknown message PLL01
2014.10.13 19:24:28 2: CUL_0: unknown message PLL01
2014.10.13 19:24:28 2: CUL_0: unknown message PLLB5
2014.10.13 19:36:18 2: CUL_0: unknown message PLL01
2014.10.13 19:36:18 2: CUL_0: unknown message PLLB5
2014.10.13 19:36:36 2: CUL_0: unknown message PLL01
2014.10.13 19:51:58 2: CUL_0: unknown message PLL01
2014.10.13 20:03:57 2: CUL_0: unknown message PLL01
2014.10.13 20:09:17 2: CUL_0: unknown message PLL01
2014.10.13 20:19:09 2: CUL_0: unknown message PLL01
2014.10.13 20:19:09 2: CUL_0: unknown message PLLB5
2014.10.13 20:34:04 2: CUL_0: unknown message PLL01
2014.10.13 20:50:47 2: CUL_0: unknown message PLL01
2014.10.13 20:50:47 2: CUL_0: unknown message PLLB5
2014.10.13 20:50:48 2: CUL_0: unknown message PLL01
2014.10.13 20:51:23 2: CUL_0: unknown message PLL01
2014.10.13 21:02:56 2: CUL_0: unknown message PLL01
2014.10.13 21:02:56 2: CUL_0: unknown message PLLB5
2014.10.13 21:03:37 2: CUL_0: unknown message PLL01
2014.10.13 21:03:57 2: CUL_0: unknown message PLL01
2014.10.13 21:03:58 2: CUL_0: unknown message PLL74
2014.10.13 21:03:58 2: CUL_0: unknown message PLL02
2014.10.13 21:03:58 2: CUL_0: unknown message PLLB5
2014.10.13 21:03:58 2: CUL_0: unknown message PLL01
2014.10.13 21:03:58 2: CUL_0: unknown message PLLB5
2014.10.13 21:05:51 2: CUL_0: unknown message PLL01
2014.10.13 21:05:51 2: CUL_0: unknown message PLLB5
2014.10.13 21:15:19 2: CUL_0: unknown message PLL01
2014.10.13 21:15:19 2: CUL_0: unknown message PLLB5
2014.10.13 21:18:21 2: CUL_0: unknown message PLL01
2014.10.13 21:19:05 2: CUL_0: unknown message PLL01
2014.10.13 21:24:52 2: CUL_0: unknown message PLL01
2014.10.13 22:04:38 2: CUL_0: unknown message PLL01
2014.10.13 22:04:38 2: CUL_0: unknown message PLLB5
2014.10.13 22:06:19 2: CUL_0: unknown message PLL01
2014.10.13 22:06:19 2: CUL_0: unknown message PLLB5
2014.10.13 22:06:19 2: CUL_0: unknown message PLL01
2014.10.13 22:19:01 2: CUL_0: unknown message PLL01
2014.10.13 22:19:02 2: CUL_0: unknown message PLL01
2014.10.13 22:19:02 2: CUL_0: unknown message PLLB5
2014.10.13 22:35:19 2: CUL_0: unknown message PLL01
2014.10.13 22:35:19 2: CUL_0: unknown message PLLB5
2014.10.13 22:50:47 2: CUL_0: unknown message PLL01
2014.10.13 22:52:24 2: CUL_0: unknown message PLL01
2014.10.13 23:03:29 2: CUL_0: unknown message PLL01
2014.10.13 23:04:13 2: CUL_0: unknown message PLL01
2014.10.13 23:19:36 2: CUL_0: unknown message PLL01
2014.10.14 00:00:22 2: CUL_0: unknown message PLL01
2014.10.14 00:00:22 2: CUL_0: unknown message PLLB5
2014.10.14 00:03:26 2: CUL_0: unknown message PLL01
2014.10.14 00:03:26 2: CUL_0: unknown message PLLB5
2014.10.14 00:03:55 2: CUL_0: unknown message PLL01
2014.10.14 00:03:55 2: CUL_0: unknown message PLLB5
2014.10.14 00:19:59 2: CUL_0: unknown message PLL01
2014.10.14 00:20:50 2: CUL_0: unknown message PLL01
2014.10.14 00:44:39 2: CUL_0: unknown message PLL01
2014.10.14 00:44:39 2: CUL_0: unknown message PLLB5
2014.10.14 00:52:28 2: CUL_0: unknown message PLL01
2014.10.14 00:52:48 2: CUL_0: unknown message PLL01
2014.10.14 01:05:43 2: CUL_0: unknown message PLL01
2014.10.14 01:44:47 2: CUL_0: unknown message PLL01
2014.10.14 01:55:32 2: CUL_0: unknown message PLL01
2014.10.14 01:55:32 2: CUL_0: unknown message PLLB5
2014.10.14 02:18:38 2: CUL_0: unknown message PLL01
2014.10.14 02:18:38 2: CUL_0: unknown message PLLB5
2014.10.14 02:20:10 2: CUL_0: unknown message PLL01
2014.10.14 02:20:10 2: CUL_0: unknown message PLL74
2014.10.14 02:20:10 2: CUL_0: unknown message PLL02
2014.10.14 02:20:10 2: CUL_0: unknown message PLLB5
2014.10.14 02:20:10 2: CUL_0: unknown message PLL01
2014.10.14 02:20:10 2: CUL_0: unknown message PLLB5
2014.10.14 02:35:58 2: CUL_0: unknown message PLL01
2014.10.14 02:37:20 2: CUL_0: unknown message PLL01
2014.10.14 02:37:22 2: CUL_0: unknown message PLL01
2014.10.14 02:38:05 2: CUL_0: unknown message PLL01
2014.10.14 02:38:05 2: CUL_0: unknown message PLLB5
2014.10.14 02:54:53 2: CUL_0: unknown message PLL01
2014.10.14 03:00:58 2: CUL_0: unknown message PLL01
2014.10.14 03:01:00 2: CUL_0: unknown message PLL01
2014.10.14 03:01:00 2: CUL_0: unknown message PLLB5
2014.10.14 03:01:00 2: CUL_0: unknown message PLL01
2014.10.14 03:01:00 2: CUL_0: unknown message PLLB5
2014.10.14 03:05:09 2: CUL_0: unknown message PLL01
2014.10.14 03:14:39 2: CUL_0: unknown message PLL01
2014.10.14 03:24:29 2: CUL_0: unknown message PLL01
2014.10.14 03:24:29 2: CUL_0: unknown message PLLB5
2014.10.14 03:24:39 2: CUL_0: unknown message PLL01
2014.10.14 03:24:39 2: CUL_0: unknown message PLLB5
2014.10.14 03:36:07 2: CUL_0: unknown message PLL01
2014.10.14 03:36:07 2: CUL_0: unknown message PLLB5
2014.10.14 03:57:17 2: CUL_0: unknown message PLL01
2014.10.14 03:57:18 2: CUL_0: unknown message PLLB5
2014.10.14 04:03:05 2: CUL_0: unknown message PLL01
2014.10.14 04:03:05 2: CUL_0: unknown message PLLB5
2014.10.14 04:03:09 2: CUL_0: unknown message PLL01
2014.10.14 04:18:49 2: CUL_0: unknown message PLL01
2014.10.14 04:18:49 2: CUL_0: unknown message PLLB5
2014.10.14 04:18:59 2: CUL_0: unknown message PLL01
2014.10.14 04:33:40 2: CUL_0: unknown message PLL01
2014.10.14 04:34:09 2: CUL_0: unknown message PLL01
2014.10.14 04:34:09 2: CUL_0: unknown message PLLB5
2014.10.14 04:43:58 2: CUL_0: unknown message PLL01
2014.10.14 04:43:58 2: CUL_0: unknown message PLLB5
2014.10.14 04:45:42 2: CUL_0: unknown message PLL01
2014.10.14 04:45:43 2: CUL_0: unknown message PLLB5
2014.10.14 04:51:29 2: CUL_0: unknown message PLL01
2014.10.14 04:55:31 2: CUL_0: unknown message PLL01
2014.10.14 05:02:16 2: CUL_0: unknown message PLL01
2014.10.14 05:17:40 2: CUL_0: unknown message PLL01
2014.10.14 05:21:31 2: CUL_0: unknown message PLL01
2014.10.14 05:36:00 2: CUL_0: unknown message PLL01
2014.10.14 05:36:17 2: CUL_0: unknown message PLL01
2014.10.14 05:36:46 2: CUL_0: unknown message PLL01
2014.10.14 05:52:19 2: CUL_0: unknown message PLL01
2014.10.14 05:52:31 2: CUL_0: unknown message PLL01
2014.10.14 05:54:29 2: CUL_0: unknown message PLL01
2014.10.14 05:54:29 2: CUL_0: unknown message PLLB5
2014.10.14 06:13:58 2: CUL_0: unknown message PLL01
2014.10.14 06:13:58 2: CUL_0: unknown message PLLB5
2014.10.14 06:15:25 2: CUL_0: unknown message PLL01
2014.10.14 06:15:25 2: CUL_0: unknown message PLLB5
2014.10.14 06:20:30 2: CUL_0: unknown message PLL01
2014.10.14 06:20:57 2: CUL_0: unknown message PLL01
2014.10.14 06:24:50 2: CUL_0: unknown message PLL01
2014.10.14 06:36:29 2: CUL_0: unknown message PLL01
2014.10.14 06:36:29 2: CUL_0: unknown message PLLB5
2014.10.14 06:51:23 2: CUL_0: unknown message PLL01
2014.10.14 07:00:36 2: CUL_0: unknown message PLL01
2014.10.14 07:24:43 2: CUL_0: unknown message PLL01
2014.10.14 08:03:53 2: CUL_0: unknown message PLL01
2014.10.14 08:54:20 2: CUL_0: unknown message PLL01
2014.10.14 09:02:49 2: CUL_0: unknown message PLL01
2014.10.14 09:02:49 2: CUL_0: unknown message PLLB5
2014.10.14 09:02:51 2: CUL_0: unknown message PLL01
2014.10.14 09:03:00 2: CUL_0: unknown message PLL01
2014.10.14 09:03:00 2: CUL_0: unknown message PLLB5
2014.10.14 09:06:00 2: CUL_0: unknown message PLL01
2014.10.14 09:06:00 2: CUL_0: unknown message PLLB5
2014.10.14 09:07:21 2: CUL_0: unknown message PLL01
2014.10.14 09:18:19 2: CUL_0: unknown message PLL01
2014.10.14 09:18:19 2: CUL_0: unknown message PLLB5
2014.10.14 09:27:56 2: CUL_0: unknown message PLL01
2014.10.14 09:27:56 2: CUL_0: unknown message PLL01
2014.10.14 09:36:37 2: CUL_0: unknown message PLL01
2014.10.14 09:37:39 2: CUL_0: unknown message PLL01
2014.10.14 09:44:29 2: CUL_0: unknown message PLL01
2014.10.14 09:44:29 2: CUL_0: unknown message PLLB5
2014.10.14 09:52:30 2: CUL_0: unknown message PLL01
2014.10.14 09:52:30 2: CUL_0: unknown message PLLB5
2014.10.14 09:52:31 2: CUL_0: unknown message PLL01
2014.10.14 09:55:02 2: CUL_0: unknown message PLL01
2014.10.14 10:05:51 2: CUL_0: unknown message PLL01
2014.10.14 10:05:53 2: CUL_0: unknown message PLL01
2014.10.14 10:05:53 2: CUL_0: unknown message PLLB5
2014.10.14 10:14:29 2: CUL_0: unknown message PLL01
2014.10.14 10:17:58 2: CUL_0: unknown message PLL01
2014.10.14 10:19:48 2: CUL_0: unknown message PLL01
2014.10.14 10:21:43 2: CUL_0: unknown message PLL01
2014.10.14 10:21:43 2: CUL_0: unknown message PLLB5
2014.10.14 10:35:20 2: CUL_0: unknown message PLL01
2014.10.14 10:35:20 2: CUL_0: unknown message PLLB5
2014.10.14 10:37:34 2: CUL_0: unknown message PLL01
2014.10.14 10:37:34 2: CUL_0: unknown message PLLB5
2014.10.14 11:02:59 2: CUL_0: unknown message PLL01
2014.10.14 11:43:59 2: CUL_0: unknown message PLL01
2014.10.14 11:45:14 2: CUL_0: unknown message PLL01
2014.10.14 11:54:40 2: CUL_0: unknown message PLL01
2014.10.14 11:54:40 2: CUL_0: unknown message PLLB5
2014.10.14 12:17:41 2: CUL_0: unknown message PLL01
2014.10.14 12:20:02 2: CUL_0: unknown message PLL01
2014.10.14 12:34:40 2: CUL_0: unknown message PLL01
2014.10.14 12:37:27 2: CUL_0: unknown message PLL01
2014.10.14 12:37:27 2: CUL_0: unknown message PLLB5
2014.10.14 12:44:30 2: CUL_0: unknown message PLL01
2014.10.14 12:44:30 2: CUL_0: unknown message PLLB5
2014.10.14 12:50:05 2: CUL_0: unknown message PLL01
2014.10.14 12:50:58 2: CUL_0: unknown message PLL01
2014.10.14 12:50:58 2: CUL_0: unknown message PLLB5
2014.10.14 13:05:16 2: CUL_0: unknown message PLL01
2014.10.14 13:14:32 2: CUL_0: unknown message PLL01
2014.10.14 13:14:32 2: CUL_0: unknown message PLLB5
2014.10.14 13:24:45 2: CUL_0: unknown message PLL01
2014.10.14 13:33:59 2: CUL_0: unknown message PLL01
2014.10.14 13:35:26 2: CUL_0: unknown message PLL01
2014.10.14 13:35:54 2: CUL_0: unknown message PLL01
2014.10.14 13:35:54 2: CUL_0: unknown message PLLB5
2014.10.14 13:49:44 2: CUL_0: unknown message PLL01
2014.10.14 13:49:44 2: CUL_0: unknown message PLLB5
2014.10.14 13:49:45 2: CUL_0: unknown message PLL01
2014.10.14 13:50:54 2: CUL_0: unknown message PLL01
2014.10.14 13:50:54 2: CUL_0: unknown message PLLB5
2014.10.14 13:53:59 2: CUL_0: unknown message PLL01
2014.10.14 13:53:59 2: CUL_0: unknown message PLLB5
2014.10.14 14:03:06 2: CUL_0: unknown message PLL01
2014.10.14 14:05:45 2: CUL_0: unknown message PLL01
2014.10.14 14:14:45 2: CUL_0: unknown message PLL01
2014.10.14 14:19:01 2: CUL_0: unknown message PLL01
2014.10.14 14:23:16 2: CUL_0: unknown message PLL01
2014.10.14 14:23:16 2: CUL_0: unknown message PLLB5
2014.10.14 14:34:09 2: CUL_0: unknown message PLL01
2014.10.14 14:52:32 2: CUL_0: unknown message PLL01
2014.10.14 14:52:47 2: CUL_0: unknown message PLL01
2014.10.14 15:01:42 2: CUL_0: unknown message PLL01
2014.10.14 15:01:42 2: CUL_0: unknown message PLLB5
2014.10.14 15:02:51 2: CUL_0: unknown message PLL01
2014.10.14 15:06:12 2: CUL_0: unknown message PLL01
2014.10.14 15:19:00 2: CUL_0: unknown message PLL01
2014.10.14 15:19:00 2: CUL_0: unknown message PLLB5
2014.10.14 15:19:01 2: CUL_0: unknown message PLL01
2014.10.14 15:20:31 2: CUL_0: unknown message PLL01
2014.10.14 15:24:37 2: CUL_0: unknown message PLL01
2014.10.14 15:24:37 2: CUL_0: unknown message PLLB5
2014.10.14 15:33:42 2: CUL_0: unknown message PLL01
2014.10.14 15:52:58 2: CUL_0: unknown message PLL01
2014.10.14 16:04:40 2: CUL_0: unknown message PLL01
2014.10.14 16:04:40 2: CUL_0: unknown message PLL74
2014.10.14 16:04:40 2: CUL_0: unknown message PLL02
2014.10.14 16:04:40 2: CUL_0: unknown message PLLB5
2014.10.14 16:04:40 2: CUL_0: unknown message PLL01
2014.10.14 16:04:40 2: CUL_0: unknown message PLLB5
2014.10.14 16:52:38 2: CUL_0: unknown message PLL01
2014.10.14 16:52:38 2: CUL_0: unknown message PLLB5
2014.10.14 17:03:40 2: CUL_0: unknown message PLL01
2014.10.14 17:07:05 2: CUL_0: unknown message PLL01
2014.10.14 17:09:01 2: CUL_0: unknown message PLL01
2014.10.14 17:09:01 2: CUL_0: unknown message PLLB5
2014.10.14 17:17:43 2: CUL_0: unknown message PLL01
2014.10.14 17:19:43 2: CUL_0: unknown message PLL01
2014.10.14 17:19:43 2: CUL_0: unknown message PLLB5
2014.10.14 17:38:16 2: CUL_0: unknown message PLL01
2014.10.14 17:38:17 2: CUL_0: unknown message PLL01
2014.10.14 17:38:17 2: CUL_0: unknown message PLLB5
2014.10.14 17:50:50 2: CUL_0: unknown message PLL01
2014.10.14 17:52:35 2: CUL_0: unknown message PLL01
2014.10.14 17:52:35 2: CUL_0: unknown message PLLB5
2014.10.14 18:04:41 2: CUL_0: unknown message PLL01
2014.10.14 18:15:19 2: CUL_0: unknown message PLL01
2014.10.14 18:19:24 2: CUL_0: unknown message PLL01
2014.10.14 18:19:25 2: CUL_0: unknown message PLL01
2014.10.14 18:19:40 2: CUL_0: unknown message PLL01
2014.10.14 18:34:39 2: CUL_0: unknown message PLL01
2014.10.14 18:44:41 2: CUL_0: unknown message PLL01
2014.10.14 18:44:41 2: CUL_0: unknown message PLLB5
2014.10.14 18:50:04 2: CUL_0: unknown message PLL01
2014.10.14 19:34:19 2: CUL_0: unknown message PLL01
2014.10.14 19:34:19 2: CUL_0: unknown message PLLB5
2014.10.14 19:34:20 2: CUL_0: unknown message PLL01
2014.10.14 19:45:01 2: CUL_0: unknown message PLL01
2014.10.14 19:51:00 2: CUL_0: unknown message PLL01
2014.10.14 20:03:00 2: CUL_0: unknown message PLL01
2014.10.14 20:03:01 2: CUL_0: unknown message PLL01
2014.10.14 21:14:41 2: CUL_0: unknown message PLL01
2014.10.14 21:25:15 2: CUL_0: unknown message PLL01
2014.10.14 21:34:31 2: CUL_0: unknown message PLL01
2014.10.14 21:49:41 2: CUL_0: unknown message PLL01
2014.10.14 21:49:41 2: CUL_0: unknown message PLLB5
2014.10.14 21:49:42 2: CUL_0: unknown message PLL01
2014.10.14 21:49:42 2: CUL_0: unknown message PLLB5
2014.10.14 21:50:50 2: CUL_0: unknown message PLL01
2014.10.14 21:50:50 2: CUL_0: unknown message PLLB5
2014.10.14 21:51:03 2: CUL_0: unknown message PLL01
2014.10.14 22:34:51 2: CUL_0: unknown message PLL01
2014.10.14 22:34:51 2: CUL_0: unknown message PLLB5
2014.10.14 22:52:32 2: CUL_0: unknown message PLL01
2014.10.14 23:04:10 2: CUL_0: unknown message PLL01
2014.10.14 23:35:55 2: CUL_0: unknown message PLL01
2014.10.14 23:36:44 2: CUL_0: unknown message PLL01
2014.10.15 00:00:29 2: CUL_0: unknown message PLL01
2014.10.15 00:03:47 2: CUL_0: unknown message PLL01
2014.10.15 00:03:47 2: CUL_0: unknown message PLLB5
2014.10.15 00:21:13 2: CUL_0: unknown message PLL01
2014.10.15 00:37:33 2: CUL_0: unknown message PLL01
2014.10.15 00:37:33 2: CUL_0: unknown message PLLB5
2014.10.15 01:03:43 2: CUL_0: unknown message PLL01
2014.10.15 01:04:50 2: CUL_0: unknown message PLL01
2014.10.15 01:04:50 2: CUL_0: unknown message PLL01
2014.10.15 01:06:48 2: CUL_0: unknown message PLL01
2014.10.15 01:06:48 2: CUL_0: unknown message PLLB5
2014.10.15 01:06:48 2: CUL_0: unknown message PLL01
2014.10.15 01:06:48 2: CUL_0: unknown message PLL01
2014.10.15 01:06:49 2: CUL_0: unknown message PLL01
2014.10.15 01:14:35 2: CUL_0: unknown message PLL01
2014.10.15 01:14:35 2: CUL_0: unknown message PLLB5
2014.10.15 01:19:01 2: CUL_0: unknown message PLL01
2014.10.15 01:19:11 2: CUL_0: unknown message PLL01
2014.10.15 01:19:11 2: CUL_0: unknown message PLLB5
2014.10.15 01:34:18 2: CUL_0: unknown message PLL01
2014.10.15 01:34:18 2: CUL_0: unknown message PLLB5
2014.10.15 01:36:16 2: CUL_0: unknown message PLL01
2014.10.15 01:36:16 2: CUL_0: unknown message PLLB5
2014.10.15 01:36:17 2: CUL_0: unknown message PLL01
2014.10.15 01:44:02 2: CUL_0: unknown message PLL01
2014.10.15 02:18:36 2: CUL_0: unknown message PLL01
2014.10.15 02:18:36 2: CUL_0: unknown message PLLB5
2014.10.15 02:34:01 2: CUL_0: unknown message PLL01
2014.10.15 02:34:31 2: CUL_0: unknown message PLL01
2014.10.15 02:38:26 2: CUL_0: unknown message PLL01
2014.10.15 02:40:26 2: CUL_0: unknown message PLL01
2014.10.15 02:53:56 2: CUL_0: unknown message PLL01
2014.10.15 02:53:56 2: CUL_0: unknown message PLLB5
2014.10.15 02:53:58 2: CUL_0: unknown message PLL01
2014.10.15 03:21:00 2: CUL_0: unknown message PLL01
2014.10.15 03:21:08 2: CUL_0: unknown message PLL01
2014.10.15 03:21:08 2: CUL_0: unknown message PLLB5
2014.10.15 03:21:21 2: CUL_0: unknown message PLL01
2014.10.15 03:36:40 2: CUL_0: unknown message PLL01
2014.10.15 03:50:51 2: CUL_0: unknown message PLL01
2014.10.15 03:50:59 2: CUL_0: unknown message PLL01
2014.10.15 03:50:59 2: CUL_0: unknown message PLLB5
2014.10.15 04:02:34 2: CUL_0: unknown message PLL01
2014.10.15 04:02:34 2: CUL_0: unknown message PLLB5
2014.10.15 04:03:51 2: CUL_0: unknown message PLL01
2014.10.15 04:03:51 2: CUL_0: unknown message PLLB5
2014.10.15 04:20:33 2: CUL_0: unknown message PLL01
2014.10.15 04:36:52 2: CUL_0: unknown message PLL01
2014.10.15 04:36:52 2: CUL_0: unknown message PLLB5
2014.10.15 04:38:21 2: CUL_0: unknown message PLL01
2014.10.15 04:51:53 2: CUL_0: unknown message PLL01
2014.10.15 04:51:53 2: CUL_0: unknown message PLLB5
2014.10.15 05:03:30 2: CUL_0: unknown message PLL01
2014.10.15 05:03:30 2: CUL_0: unknown message PLLB5
2014.10.15 05:05:59 2: CUL_0: unknown message PLL01
2014.10.15 05:05:59 2: CUL_0: unknown message PLLB5
2014.10.15 05:08:36 2: CUL_0: unknown message PLL01
2014.10.15 05:24:50 2: CUL_0: unknown message PLL01
2014.10.15 05:25:18 2: CUL_0: unknown message PLL01
2014.10.15 05:25:18 2: CUL_0: unknown message PLLB5
2014.10.15 05:33:42 2: CUL_0: unknown message PLL01
2014.10.15 05:33:42 2: CUL_0: unknown message PLLB5
2014.10.15 05:33:44 2: CUL_0: unknown message PLL01
2014.10.15 05:37:04 2: CUL_0: unknown message PLL01
2014.10.15 05:37:04 2: CUL_0: unknown message PLLB5
2014.10.15 05:53:28 2: CUL_0: unknown message PLL01
2014.10.15 06:19:47 2: CUL_0: unknown message PLL01
2014.10.15 06:19:47 2: CUL_0: unknown message PLLB5
2014.10.15 06:24:01 2: CUL_0: unknown message PLL01
2014.10.15 06:24:01 2: CUL_0: unknown message PLLB5
2014.10.15 06:34:50 2: CUL_0: unknown message PLL01
2014.10.15 06:44:32 2: CUL_0: unknown message PLL01
2014.10.15 06:53:53 2: CUL_0: unknown message PLL01
2014.10.15 06:53:53 2: CUL_0: unknown message PLLB5
2014.10.15 06:54:43 2: CUL_0: unknown message PLL01
2014.10.15 06:54:43 2: CUL_0: unknown message PLLB5
2014.10.15 07:03:01 2: CUL_0: unknown message PLL01
2014.10.15 07:03:01 2: CUL_0: unknown message PLL01
2014.10.15 07:14:08 2: CUL_0: unknown message PLL01
2014.10.15 07:14:08 2: CUL_0: unknown message PLLB5
2014.10.15 07:18:53 2: CUL_0: unknown message PLL01
2014.10.15 07:36:13 2: CUL_0: unknown message PLL01
2014.10.15 07:44:35 2: CUL_0: unknown message PLL01
2014.10.15 07:51:02 2: CUL_0: unknown message PLL01
2014.10.15 07:51:02 2: CUL_0: unknown message PLLB5
2014.10.15 07:51:40 2: CUL_0: unknown message PLL01
2014.10.15 07:51:40 2: CUL_0: unknown message PLLB5
2014.10.15 07:51:41 2: CUL_0: unknown message PLL01
2014.10.15 08:18:52 2: CUL_0: unknown message PLL01
2014.10.15 08:24:50 2: CUL_0: unknown message PLL01
2014.10.15 08:24:50 2: CUL_0: unknown message PLLB5
2014.10.15 08:35:18 2: CUL_0: unknown message PLL01
2014.10.15 08:49:43 2: CUL_0: unknown message PLL01
2014.10.15 08:49:43 2: CUL_0: unknown message PLLB5
2014.10.15 08:51:14 2: CUL_0: unknown message PLL01
2014.10.15 08:52:52 2: CUL_0: unknown message PLL01
2014.10.15 08:52:52 2: CUL_0: unknown message PLLB5
2014.10.15 08:53:33 2: CUL_0: unknown message PLL01
2014.10.15 09:01:44 2: CUL_0: unknown message PLL01
2014.10.15 09:01:45 2: CUL_0: unknown message PLLB5
2014.10.15 09:20:37 2: CUL_0: unknown message PLL01
2014.10.15 09:20:37 2: CUL_0: unknown message PLLB5
2014.10.15 09:20:38 2: CUL_0: unknown message PLL01
2014.10.15 09:20:38 2: CUL_0: unknown message PLLB5
2014.10.15 09:36:33 2: CUL_0: unknown message PLL01
2014.10.15 09:36:33 2: CUL_0: unknown message PLLB5
2014.10.15 09:51:35 2: CUL_0: unknown message PLL01
2014.10.15 10:04:43 2: CUL_0: unknown message PLL01
2014.10.15 10:05:00 2: CUL_0: unknown message PLL01
2014.10.15 10:08:56 2: CUL_0: unknown message PLL01
2014.10.15 10:19:03 2: CUL_0: unknown message PLL01
2014.10.15 10:19:03 2: CUL_0: unknown message PLLB5
2014.10.15 10:20:37 2: CUL_0: unknown message PLL01
2014.10.15 10:20:37 2: CUL_0: unknown message PLLB5
2014.10.15 10:34:32 2: CUL_0: unknown message PLL01
2014.10.15 10:34:32 2: CUL_0: unknown message PLLB5
2014.10.15 10:34:32 2: CUL_0: unknown message PLL01
2014.10.15 10:51:30 2: CUL_0: unknown message PLL01
2014.10.15 11:01:09 2: CUL_0: unknown message PLL01
2014.10.15 11:01:09 2: CUL_0: unknown message PLL01
2014.10.15 11:19:02 2: CUL_0: unknown message PLL01
2014.10.15 11:19:02 2: CUL_0: unknown message PLLB5
2014.10.15 11:34:55 2: CUL_0: unknown message PLL01
2014.10.15 11:34:55 2: CUL_0: unknown message PLLB5
2014.10.15 11:54:12 2: CUL_0: unknown message PLL01
2014.10.15 11:54:13 2: CUL_0: unknown message PLL01
2014.10.15 11:54:13 2: CUL_0: unknown message PLLB5
2014.10.15 12:01:53 2: CUL_0: unknown message PLL01
2014.10.15 12:03:27 2: CUL_0: unknown message PLL01
2014.10.15 12:03:48 2: CUL_0: unknown message PLL01
2014.10.15 12:19:13 2: CUL_0: unknown message PLL01
2014.10.15 12:24:48 2: CUL_0: unknown message PLL01
2014.10.15 12:24:48 2: CUL_0: unknown message PLLB5
2014.10.15 12:30:04 2: CUL_0: unknown message PLL01
2014.10.15 12:34:37 2: CUL_0: unknown message PLL01
2014.10.15 12:35:54 2: CUL_0: unknown message PLL01
2014.10.15 12:40:22 2: CUL_0: unknown message PLL01
2014.10.15 12:40:22 2: CUL_0: unknown message PLLB5
2014.10.15 12:44:43 2: CUL_0: unknown message PLL01
2014.10.15 12:44:43 2: CUL_0: unknown message PLLB5
2014.10.15 12:44:43 2: CUL_0: unknown message PLL01
2014.10.15 12:44:43 2: CUL_0: unknown message PLL01
2014.10.15 13:17:44 2: CUL_0: unknown message PLL01
2014.10.15 13:45:28 2: CUL_0: unknown message PLL01
2014.10.15 13:51:17 2: CUL_0: unknown message PLL01
2014.10.15 13:51:17 2: CUL_0: unknown message PLLB5
2014.10.15 13:52:13 2: CUL_0: unknown message PLL01
2014.10.15 13:53:11 2: CUL_0: unknown message PLL01
2014.10.15 13:53:13 2: CUL_0: unknown message PLL01
2014.10.15 13:59:57 2: CUL_0: unknown message PLL01
2014.10.15 14:08:46 2: CUL_0: unknown message PLL01
2014.10.15 14:18:35 2: CUL_0: unknown message PLL01
2014.10.15 14:20:34 2: CUL_0: unknown message PLL01
2014.10.15 14:24:32 2: CUL_0: unknown message PLL01
2014.10.15 14:24:32 2: CUL_0: unknown message PLLB5
2014.10.15 14:24:33 2: CUL_0: unknown message PLL01
2014.10.15 14:24:43 2: CUL_0: unknown message PLL01
2014.10.15 14:37:42 2: CUL_0: unknown message PLL01
2014.10.15 14:45:30 2: CUL_0: unknown message PLL01
2014.10.15 15:33:45 2: CUL_0: unknown message PLL01
2014.10.15 15:33:45 2: CUL_0: unknown message PLLB5
2014.10.15 15:35:06 2: CUL_0: unknown message PLL01
2014.10.15 15:44:32 2: CUL_0: unknown message PLL01
2014.10.15 15:44:32 2: CUL_0: unknown message PLLB5
2014.10.15 15:44:48 2: CUL_0: unknown message PLL01
2014.10.15 15:45:21 2: CUL_0: unknown message PLL01
2014.10.15 15:45:21 2: CUL_0: unknown message PLLB5
2014.10.15 16:12:09 2: CUL_0: unknown message PLL01
2014.10.15 17:19:58 2: CUL_0: unknown message PLL01
2014.10.15 17:33:46 2: CUL_0: unknown message PLL01
2014.10.15 17:35:33 2: CUL_0: unknown message PLL01
2014.10.15 17:37:25 2: CUL_0: unknown message PLL01
2014.10.15 17:50:20 2: CUL_0: unknown message PLL01
2014.10.15 17:50:20 2: CUL_0: unknown message PLLB5
2014.10.15 18:03:04 2: CUL_0: unknown message PLL01
2014.10.15 18:06:41 2: CUL_0: unknown message PLL01
2014.10.15 18:19:02 2: CUL_0: unknown message PLL01
2014.10.15 18:20:03 2: CUL_0: unknown message PLL01
2014.10.15 18:20:03 2: CUL_0: unknown message PLLB5
2014.10.15 18:34:35 2: CUL_0: unknown message PLL01
2014.10.15 18:34:35 2: CUL_0: unknown message PLLB5
2014.10.15 18:35:43 2: CUL_0: unknown message PLL01
2014.10.15 18:37:26 2: CUL_0: unknown message PLL01
2014.10.15 19:02:53 2: CUL_0: unknown message PLL01
2014.10.15 19:19:57 2: CUL_0: unknown message PLL01
2014.10.15 19:41:15 2: CUL_0: unknown message PLL01
2014.10.15 19:44:44 2: CUL_0: unknown message PLL01
2014.10.15 19:44:44 2: CUL_0: unknown message PLLB5
2014.10.15 19:50:54 2: CUL_0: unknown message PLL01
2014.10.15 19:52:33 2: CUL_0: unknown message PLL01
2014.10.15 20:24:25 2: CUL_0: unknown message PLL01
2014.10.15 20:34:08 2: CUL_0: unknown message PLL01
2014.10.15 20:35:21 2: CUL_0: unknown message PLL01
2014.10.15 20:35:21 2: CUL_0: unknown message PLLB5
2014.10.15 20:35:52 2: CUL_0: unknown message PLL01
2014.10.15 21:06:05 2: CUL_0: unknown message PLL01
2014.10.15 21:39:10 2: CUL_0: unknown message PLL01
2014.10.15 21:39:10 2: CUL_0: unknown message PLLB5
2014.10.15 21:39:10 2: CUL_0: unknown message PLL01
2014.10.15 21:54:47 2: CUL_0: unknown message PLL01
2014.10.15 21:54:47 2: CUL_0: unknown message PLLB5
2014.10.15 22:20:34 2: CUL_0: unknown message PLL01
2014.10.15 22:20:34 2: CUL_0: unknown message PLLB5
2014.10.15 22:34:33 2: CUL_0: unknown message PLL01
2014.10.15 23:04:16 2: CUL_0: unknown message PLL01
2014.10.15 23:04:16 2: CUL_0: unknown message PLLB5
2014.10.15 23:19:11 2: CUL_0: unknown message PLL01
2014.10.15 23:20:37 2: CUL_0: unknown message PLL01
2014.10.15 23:34:54 2: CUL_0: unknown message PLL01
2014.10.15 23:34:54 2: CUL_0: unknown message PLLB5
2014.10.15 23:36:34 2: CUL_0: unknown message PLL01
2014.10.16 00:03:47 2: CUL_0: unknown message PLL01
2014.10.16 00:03:47 2: CUL_0: unknown message PLLB5
2014.10.16 00:07:26 2: CUL_0: unknown message PLL01
2014.10.16 00:17:45 2: CUL_0: unknown message PLL01
2014.10.16 00:17:45 2: CUL_0: unknown message PLL01
2014.10.16 00:17:45 2: CUL_0: unknown message PLLB5
2014.10.16 00:19:23 2: CUL_0: unknown message PLL01
2014.10.16 00:24:03 2: CUL_0: unknown message PLL01
2014.10.16 00:24:03 2: CUL_0: unknown message PLLB5
2014.10.16 00:34:35 2: CUL_0: unknown message PLL01
2014.10.16 00:34:35 2: CUL_0: unknown message PLLB5
2014.10.16 01:05:56 2: CUL_0: unknown message PLL01
2014.10.16 01:05:56 2: CUL_0: unknown message PLLB5
2014.10.16 01:15:42 2: CUL_0: unknown message PLL01
2014.10.16 01:21:31 2: CUL_0: unknown message PLL01
2014.10.16 01:21:31 2: CUL_0: unknown message PLL74
2014.10.16 01:21:31 2: CUL_0: unknown message PLL02
2014.10.16 01:21:31 2: CUL_0: unknown message PLLB4
2014.10.16 01:21:31 2: CUL_0: unknown message PLL01
2014.10.16 01:36:59 2: CUL_0: unknown message PLL01
2014.10.16 01:44:56 2: CUL_0: unknown message PLL01
2014.10.16 01:44:56 2: CUL_0: unknown message PLLB5
2014.10.16 02:03:06 2: CUL_0: unknown message PLL01
2014.10.16 02:14:03 2: CUL_0: unknown message PLL01
2014.10.16 02:14:03 2: CUL_0: unknown message PLLB5
2014.10.16 02:25:18 2: CUL_0: unknown message PLL01
2014.10.16 02:25:18 2: CUL_0: unknown message PLLB5
2014.10.16 02:34:03 2: CUL_0: unknown message PLL01
2014.10.16 02:36:55 2: CUL_0: unknown message PLL01
2014.10.16 02:53:11 2: CUL_0: unknown message PLL01
2014.10.16 02:53:11 2: CUL_0: unknown message PLLB5
2014.10.16 03:00:06 2: CUL_0: unknown message PLL01
2014.10.16 03:06:52 2: CUL_0: unknown message PLL01
2014.10.16 03:14:38 2: CUL_0: unknown message PLL01
2014.10.16 03:14:38 2: CUL_0: unknown message PLLB5
2014.10.16 03:15:34 2: CUL_0: unknown message PLL01
2014.10.16 03:15:34 2: CUL_0: unknown message PLLB5
2014.10.16 03:20:34 2: CUL_0: unknown message PLL01
2014.10.16 03:36:52 2: CUL_0: unknown message PLL01
2014.10.16 03:50:54 2: CUL_0: unknown message PLL01
2014.10.16 03:50:54 2: CUL_0: unknown message PLLB5
2014.10.16 03:52:35 2: CUL_0: unknown message PLL01
2014.10.16 04:34:52 2: CUL_0: unknown message PLL01
2014.10.16 04:55:06 2: CUL_0: unknown message PLL01
2014.10.16 05:03:50 2: CUL_0: unknown message PLL01
2014.10.16 05:03:50 2: CUL_0: unknown message PLLB5
2014.10.16 05:04:49 2: CUL_0: unknown message PLL01
2014.10.16 05:05:47 2: CUL_0: unknown message PLL01
2014.10.16 05:13:31 2: CUL_0: unknown message PLL01
2014.10.16 05:19:19 2: CUL_0: unknown message PLL01
2014.10.16 05:25:17 2: CUL_0: unknown message PLL01
2014.10.16 05:35:52 2: CUL_0: unknown message PLL01
2014.10.16 05:35:52 2: CUL_0: unknown message PLLB5
2014.10.16 05:36:49 2: CUL_0: unknown message PLL01
2014.10.16 05:36:59 2: CUL_0: unknown message PLL01
2014.10.16 05:37:49 2: CUL_0: unknown message PLL01
2014.10.16 05:50:54 2: CUL_0: unknown message PLL01
2014.10.16 05:50:54 2: CUL_0: unknown message PLLB5
2014.10.16 06:20:32 2: CUL_0: unknown message PLL01
2014.10.16 06:20:32 2: CUL_0: unknown message PLLB5
2014.10.16 06:21:12 2: CUL_0: unknown message PLL01
2014.10.16 06:24:34 2: CUL_0: unknown message PLL01
2014.10.16 06:34:46 2: CUL_0: unknown message PLL01
2014.10.16 06:50:46 2: CUL_0: unknown message PLL01
2014.10.16 06:50:47 2: CUL_0: unknown message PLL01
2014.10.16 06:52:04 2: CUL_0: unknown message PLL01
2014.10.16 06:52:04 2: CUL_0: unknown message PLLB5
2014.10.16 07:03:27 2: CUL_0: unknown message PLL01
2014.10.16 07:03:27 2: CUL_0: unknown message PLLB5
2014.10.16 07:03:44 2: CUL_0: unknown message PLL01
2014.10.16 07:04:04 2: CUL_0: unknown message PLL01
2014.10.16 07:36:09 2: CUL_0: unknown message PLL01
2014.10.16 07:36:16 2: CUL_0: unknown message PLL01
2014.10.16 08:03:07 2: CUL_0: unknown message PLL01
2014.10.16 08:03:07 2: CUL_0: unknown message PLLB5
2014.10.16 08:05:11 2: CUL_0: unknown message PLL01
2014.10.16 08:20:47 2: CUL_0: unknown message PLL01
2014.10.16 08:20:48 2: CUL_0: unknown message PLL01
2014.10.16 08:36:31 2: CUL_0: unknown message PLL01
2014.10.16 08:51:15 2: CUL_0: unknown message PLL01
2014.10.16 08:51:15 2: CUL_0: unknown message PLLB5
2014.10.16 08:51:16 2: CUL_0: unknown message PLL01
2014.10.16 09:19:04 2: CUL_0: unknown message PLL01
2014.10.16 09:25:08 2: CUL_0: unknown message PLL01
2014.10.16 09:25:08 2: CUL_0: unknown message PLLB5
2014.10.16 09:35:32 2: CUL_0: unknown message PLL01
2014.10.16 09:36:51 2: CUL_0: unknown message PLL01
2014.10.16 09:52:35 2: CUL_0: unknown message PLL01
2014.10.16 09:53:51 2: CUL_0: unknown message PLL01
2014.10.16 09:53:51 2: CUL_0: unknown message PLLB5
2014.10.16 10:20:37 2: CUL_0: unknown message PLL01
2014.10.16 10:36:24 2: CUL_0: unknown message PLL01
2014.10.16 10:50:47 2: CUL_0: unknown message PLL01
2014.10.16 10:52:24 2: CUL_0: unknown message PLL01
2014.10.16 10:52:56 2: CUL_0: unknown message PLL01
2014.10.16 10:52:56 2: CUL_0: unknown message PLLB5
2014.10.16 11:05:59 2: CUL_0: unknown message PLL01
2014.10.16 11:05:59 2: CUL_0: unknown message PLLB5
2014.10.16 11:18:57 2: CUL_0: unknown message PLL01
2014.10.16 11:21:24 2: CUL_0: unknown message PLL01
2014.10.16 11:21:30 2: CUL_0: unknown message PLL01
2014.10.16 11:21:30 2: CUL_0: unknown message PLLB5
2014.10.16 11:34:53 2: CUL_0: unknown message PLL01
2014.10.16 11:44:53 2: CUL_0: unknown message PLL01
2014.10.16 12:03:46 2: CUL_0: unknown message PLL01
2014.10.16 12:07:02 2: CUL_0: unknown message PLL01
2014.10.16 12:15:46 2: CUL_0: unknown message PLL01
2014.10.16 12:35:17 2: CUL_0: unknown message PLL01
2014.10.16 12:35:17 2: CUL_0: unknown message PLLB5
2014.10.16 12:36:36 2: CUL_0: unknown message PLL01
2014.10.16 12:36:36 2: CUL_0: unknown message PLLB5
2014.10.16 12:37:15 2: CUL_0: unknown message PLL01
2014.10.16 12:50:46 2: CUL_0: unknown message PLL01
2014.10.16 12:50:46 2: CUL_0: unknown message PLLB5
2014.10.16 12:52:35 2: CUL_0: unknown message PLL01
2014.10.16 13:07:28 2: CUL_0: unknown message PLL01
2014.10.16 13:24:53 2: CUL_0: unknown message PLL01
2014.10.16 13:25:46 2: CUL_0: unknown message PLL01
2014.10.16 13:26:31 2: CUL_0: unknown message PLL01
2014.10.16 13:36:13 2: CUL_0: unknown message PLL01
2014.10.16 13:44:35 2: CUL_0: unknown message PLL01
2014.10.16 13:44:35 2: CUL_0: unknown message PLLB5
2014.10.16 13:51:33 2: CUL_0: unknown message PLL01
2014.10.16 13:51:33 2: CUL_0: unknown message PLL01
2014.10.16 13:52:37 2: CUL_0: unknown message PLL01
2014.10.16 14:03:07 2: CUL_0: unknown message PLL01
2014.10.16 14:03:07 2: CUL_0: unknown message PLL01
2014.10.16 14:03:15 2: CUL_0: unknown message PLL01
2014.10.16 14:04:35 2: CUL_0: unknown message PLL01
2014.10.16 14:26:12 2: CUL_0: unknown message PLL01
2014.10.16 14:26:12 2: CUL_0: unknown message PLLB5
2014.10.16 14:34:46 2: CUL_0: unknown message PLL01
2014.10.16 15:02:49 2: CUL_0: unknown message PLL01
2014.10.16 15:02:49 2: CUL_0: unknown message PLL74
2014.10.16 15:02:49 2: CUL_0: unknown message PLL02
2014.10.16 15:02:49 2: CUL_0: unknown message PLLB5
2014.10.16 15:02:49 2: CUL_0: unknown message PLL01
2014.10.16 15:02:49 2: CUL_0: unknown message PLLB5
2014.10.16 15:03:11 2: CUL_0: unknown message PLL01
2014.10.16 15:03:11 2: CUL_0: unknown message PLL74
2014.10.16 15:03:11 2: CUL_0: unknown message PLL02
2014.10.16 15:03:11 2: CUL_0: unknown message PLLB5
2014.10.16 15:03:11 2: CUL_0: unknown message PLL01
2014.10.16 15:03:11 2: CUL_0: unknown message PLLB5
2014.10.16 15:03:13 2: CUL_0: unknown message PLL01
2014.10.16 15:04:36 2: CUL_0: unknown message PLL01
2014.10.16 15:04:36 2: CUL_0: unknown message PLLB5
2014.10.16 15:06:25 2: CUL_0: unknown message PLL01
2014.10.16 15:14:35 2: CUL_0: unknown message PLL01
2014.10.16 15:14:35 2: CUL_0: unknown message PLLB5
2014.10.16 15:20:06 2: CUL_0: unknown message PLL01
2014.10.16 15:20:06 2: CUL_0: unknown message PLLB5
2014.10.16 15:37:50 2: CUL_0: unknown message PLL01
2014.10.16 15:45:46 2: CUL_0: unknown message PLL01
2014.10.16 16:06:52 2: CUL_0: unknown message PLL01
2014.10.16 16:06:52 2: CUL_0: unknown message PLLB5
2014.10.16 16:06:56 2: CUL_0: unknown message PLL01
2014.10.16 16:06:56 2: CUL_0: unknown message PLLB5
2014.10.16 16:18:56 2: CUL_0: unknown message PLL01
2014.10.16 16:18:56 2: CUL_0: unknown message PLLB5
2014.10.16 16:20:35 2: CUL_0: unknown message PLL01
2014.10.16 16:20:35 2: CUL_0: unknown message PLLB5
2014.10.16 16:20:36 2: CUL_0: unknown message PLL01
2014.10.16 16:25:05 2: CUL_0: unknown message PLL01
2014.10.16 16:35:12 2: CUL_0: unknown message PLL01
2014.10.16 16:36:36 2: CUL_0: unknown message PLL01
2014.10.16 16:36:36 2: CUL_0: unknown message PLLB5
2014.10.16 16:53:33 2: CUL_0: unknown message PLL01
2014.10.16 17:20:45 2: CUL_0: unknown message PLL01
2014.10.16 17:21:23 2: CUL_0: unknown message PLL01
2014.10.16 17:36:15 2: CUL_0: unknown message PLL01
2014.10.16 17:36:15 2: CUL_0: unknown message PLLB5
2014.10.16 17:36:47 2: CUL_0: unknown message PLL01
2014.10.16 17:51:25 2: CUL_0: unknown message PLL01
2014.10.16 17:51:26 2: CUL_0: unknown message PLL01
2014.10.16 17:51:26 2: CUL_0: unknown message PLLB5
2014.10.16 18:04:06 2: CUL_0: unknown message PLL01
2014.10.16 18:04:06 2: CUL_0: unknown message PLLB5
2014.10.16 18:15:05 2: CUL_0: unknown message PLL01
2014.10.16 18:15:05 2: CUL_0: unknown message PLL74
2014.10.16 18:15:05 2: CUL_0: unknown message PLL02
2014.10.16 18:15:05 2: CUL_0: unknown message PLLB4
2014.10.16 18:15:05 2: CUL_0: unknown message PLL01
2014.10.16 18:18:55 2: CUL_0: unknown message PLL01
2014.10.16 18:18:55 2: CUL_0: unknown message PLLB5
2014.10.16 18:21:25 2: CUL_0: unknown message PLL01
2014.10.16 18:25:18 2: CUL_0: unknown message PLL01
2014.10.16 18:25:18 2: CUL_0: unknown message PLLB5
2014.10.16 18:37:00 2: CUL_0: unknown message PLL01
2014.10.16 18:50:47 2: CUL_0: unknown message PLL01
2014.10.16 18:52:38 2: CUL_0: unknown message PLL01
2014.10.16 18:52:38 2: CUL_0: unknown message PLLB5
2014.10.16 19:04:07 2: CUL_0: unknown message PLL01
2014.10.16 19:04:35 2: CUL_0: unknown message PLL01
2014.10.16 19:04:35 2: CUL_0: unknown message PLLB5
2014.10.16 19:24:36 2: CUL_0: unknown message PLL01
2014.10.16 19:36:40 2: CUL_0: unknown message PLL01
2014.10.16 19:37:29 2: CUL_0: unknown message PLL01
2014.10.16 19:37:44 2: CUL_0: unknown message PLL01
2014.10.16 19:51:17 2: CUL_0: unknown message PLL01
2014.10.16 20:06:44 2: CUL_0: unknown message PLL01
2014.10.16 20:31:51 2: CUL_0: unknown message PLL01
2014.10.16 20:45:05 2: CUL_0: unknown message PLL01
2014.10.16 20:45:05 2: CUL_0: unknown message PLLB5
2014.10.16 21:37:38 2: CUL_0: unknown message PLL01
2014.10.16 21:38:22 2: CUL_0: unknown message PLL01
2014.10.16 21:38:22 2: CUL_0: unknown message PLLB5
2014.10.16 21:53:04 2: CUL_0: unknown message PLL01
2014.10.16 21:56:40 2: CUL_0: unknown message PLL01
2014.10.16 22:04:22 2: CUL_0: unknown message PLL01
2014.10.16 22:14:55 2: CUL_0: unknown message PLL01


Es tauchen PLL01 ( 605 ), PLL02 ( 8 ), PLL74 ( 8 ), PLLB4 ( 2 ) und PLLB5 ( 237 ) auf. Die Anzahl jeweils in Klammern.

Gruß, Andreas

EDIT: Log durch einen Log eines längeren Zeitraums ersetzt und Anzahl ergänzt...

noansi

Hallo Andreas,

danke für's Testen und das Logging.

Da auch PLLB4 auftaucht, passiert es bei Dir auch, wenn auch wesentlich seltener, beim Umschalten nach RX oder regelmäßigen Check, dass der Recover nicht immer direkt funktioniert. Das hat in jedem Fall einen Hänger beim Empfang (oder "Einschalfen") verhindert und/oder Empfangsverluste minimiert.

Beim Umschalten nach TX passiert es bei Dir recht häufig, dass es nicht direkt klappt und daher ist auch dafür der Checkcode mit Recover und Wiederholversuchen sinnvoll, da Du sonst häufig nicht senden könntest und damit sollte das FHT Protokoll zumindest gestört werden.

Also nur teilweise zu Prüfen, um das Lock Problem zu beheben, würde Dir nicht zuverlässig helfen.

Also ist für Deinen Fall der aufwändigere Code sinnvoll.

Wenn Dich die PLL Log Einträge stören, musst Du nur in board.h die Einträge

#define HAS_CC1101_PLL_LOCK_CHECK_MSG
#define HAS_CC1101_PLL_LOCK_CHECK_MSG_RXTX
#define HAS_CC1101_PLL_LOCK_CHECK_MSG_SW

mit einem // am Anfang auskommentieren oder die Zeilern löschen, neu kompilieren und flashen, dann kommen die nicht mehr, aber check und recover funktionieren weiterhin.

Jetzt wär es natürlich noch schön, wenn noch mehr Tester dazu kämen, damit die Änderungen mit allen Protokollen mal getestet würden, um auszuschließen, dass es wegen der Unterprogrammaufrufe mal zu einem Stack Problem kommt.

Bei mir ist es bei Homematic und KS300/TX3 Slow RF auf CUL und COC bisher nicht zu Problemen gekommen.

Gruß, Ansgar.

tpm88

Zitat von: noansi am 18 Oktober 2014, 13:38:22
Jetzt wär es natürlich noch schön, wenn noch mehr Tester dazu kämen, damit die Änderungen mit allen Protokollen mal getestet würden, um auszuschließen, dass es wegen der Unterprogrammaufrufe mal zu einem Stack Problem kommt.

Hallo Ansgar,

ich kann gerne wieder in meiner HomeMatic Umgebung testen - kannst Du mir bitte ein hex file für den CULv3 schicken?

Gruß
Tobias
Test FHEM Server on RPi, CUL_HM
Prod FHEM Server on Odroid HC1, HM-USB, JeeLink
Devices: diverse HM, IT1500, 1wire, LaCrosse, MQTT