Jump to content

LCD Fehlverhalten mit Master-Firmware 2.3.0 ?


Recommended Posts

Hallo TF-Team,

 

ich habe meinen Aufbau (der jetzt 8 Monte fulltime stabil lief) nochmal mit einem neuen Gehäuse versehen (mit Makerbeams) und dabei die Firmware aller Master auf 2.3.0 aktualisiert, d.h. auch den Stack komplett zerlegt und wieder zusammen gesetzt.

 

Seit diesem Update habe ich den Effekt, dass sich das LCD sporadisch komisch verhält: teilweise wird die letzte Zeile nicht aktualisiert, teilweise ist der Cursor noch sichtbar, obwohl der Befehl gekommen ist, diesen abzuschalten.

 

Stackaufbau (3 Master mit 10 Bricklets), ganz unten Step-Down:

Device: uid=62DrY6, type=      MASTER, fw=2.3.0 at port '0' of 0 (main master)
Device: uid=   avN, type=       LIGHT, fw=2.0.3 at port 'a' of 62DrY6
Device: uid=   iSG, type=      MOTION, fw=2.0.0 at port 'b' of 62DrY6
Device: uid=   iEQ, type=       SOUND, fw=2.0.2 at port 'c' of 62DrY6
Device: uid=   iUj, type=REMOTE_RELAY, fw=2.0.1 at port 'd' of 62DrY6
Device: uid=6Ct7da, type=      MASTER, fw=2.3.0 at port '1' of 62DrY6
Device: uid=6Kuxh6, type=      MASTER, fw=2.3.0 at port '2' of 62DrY6
Device: uid=   dFs, type= TEMPERATURE, fw=2.0.2 at port 'a' of 6Ct7da
Device: uid=   deY, type=    HUMIDITY, fw=2.0.2 at port 'a' of 6Kuxh6
Device: uid=   moe, type= SOUND_INPUT, fw=2.0.1 at port 'b' of 6Ct7da
Device: uid=   d7C, type=   BAROMETER, fw=2.0.2 at port 'b' of 6Kuxh6
Device: uid=   iJF, type=    TOUCHPAD, fw=2.0.0 at port 'c' of 6Ct7da
Device: uid=   cCm, type=     DISPLAY, fw=2.0.6 at port 'd' of 6Ct7da

 

Ich schneide inzwischen den IP-Traffic zwischen IPConnection und brickd mit. Hier ein Beispiel:

 

#   Time         length  UID  fun sq - data
1419872659.490810  1E 000098C8 01 90 - 00 00 20 20 53 74 61 72 74 20 4F 53 2D 43 6F 6D 6D 61 6E 64 20 20
1419872659.490845  1E 000098C8 01 A0 - 01 00 20 57 4C 41 4E 20 6F 66 66 20 20 20 20 20 20 20 20 20 20 20
1419872659.490882  1E 000098C8 01 B0 - 02 00 20 57 4C 41 4E 20 6F 6E 20 20 20 20 20 20 20 20 20 20 20 20
1419872659.490914  1E 000098C8 01 C0 - 03 00 20 53 48 55 54 44 4F 57 4E 20 20 20 20 20 20 20 20 20 20 20
1419872659.490950  1E 000098C8 01 D0 - 02 13 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
1419872659.490980  0A 000098C8 06 E0 - 01 01
1419872659.491003  1E 000098C8 01 F0 - 02 13 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
1419872659.491036  0A 000098C8 06 10 - 01 01
1419872659.491061  0E 0000E830 01 20 - 1E 00 00 00 E8 03
1419872661.078934  1E 000098C8 01 30 - 00 13 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
1419872661.078984  0E 0000E830 01 40 - 1E 00 00 00 E8 03
1419872661.323173  1E 000098C8 01 50 - 01 13 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
1419872661.323208  0E 0000E830 01 60 - 1E 00 00 00 E8 03
1419872661.567169  1E 000098C8 01 70 - 02 13 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
1419872661.567229  0E 0000E830 01 80 - 1E 00 00 00 E8 03
1419872662.850181  1E 000098C8 01 90 - 00 00 32 39 2E 44 65 7A 20 31 38 3A 30 34 20 20 7C 0C 0B 0C 0C 7C
1419872662.850218  1E 000098C8 01 A0 - 01 00 20 20 32 31 2E 39 20 DF 43 20 20 20 20 20 33 38 33 20 32 78
1419872662.850254  1E 000098C8 01 B0 - 02 00 20 20 34 36 2E 37 20 25 72 48 20 20 20 20 20 20 20 20 20 20
1419872662.850286  1E 000098C8 01 C0 - 03 00 20 39 36 38 2E 34 20 6D 62 61 72 20 09 20 20 31 30 20 4C 78
1419872662.850321  0A 000098C8 06 D0 - 00 00
1419872662.850342  0E 0000E830 01 E0 - 1E 00 00 00 E8 03
1419872663.257915  1E 000098C8 01 F0 - 00 00 32 39 2E 44 65 7A 20 31 38 20 30 34 20 20 7C 0C 0B 0C 0C 7C
1419872663.448983  1E 000098C8 01 10 - 03 00 20 39 36 38 2E 34 20 6D 62 61 72 20 09 20 20 31 30 20 4C 78

000098C8 ist das LCD. Ich habe "virtuelle" Displays in der Anwendung (nur interner Puffer mit 4*20 Zeichen) und per Touch kann ich die Art der Anzeige ändern. Eine Anzeige nutzt den Cursor, die meisten anderen nicht.

 

Im obigen Beispiel werden alle 4 Zeilen des LCD mit Text gefüllt, dann der Cursor aktiviert, ein wenig verschoben und etwas "gepiept" (ein Piep je Touch).

 

Mit dem Timestamp "1419872662.850181" wird auf den Hauptscreen gewechselt und danach kommt ein lcd_20x4_set_config(false,false), Timestamp 1419872662.850321 - aber der Cursor blieb sichtbar!

 

Ich habe teilweise auch den Effekt, dass beim Screen-Wechsel, wo ich definitiv immer alle 4 Zeilen neu sende, die 4. Zeile nicht aktualisiert wird.

 

Dumm an der Sache: das passiert leider sporadisch, nicht immer gleich, aber erst seit Firmware 2.3.0 und es ist entweder Zeile 4, die den alten Inhalt behält, obwohl ich alle Zeilen neu sende oder der Cursor-Status wird nicht aktualisiert.

 

Ich habe jetzt schon Stunden verbracht, mit dem Versuch das weiter einzugrenzen, aber die Commands werden korrekt zum LCD gesendet, Stecker sind auch alle fest.

 

Ich habe keine andere Idee mehr, als dass hier Commands verloren gehen  :-\ ? Vielleicht fällt Euch noch was ein?

 

Brickd ist 2.2.0 und der meldet keine Fehler im Protokoll. Der Stack hängt per USB an einem ARM Board.

Link zu diesem Kommentar
Share on other sites

Da ich auch noch ein paar neue Funktionen entwickle starte ich die Anwendung gerade öfter neu ...

 

Dabei musste ich nun feststellen, dass auch die Callback-Initialisierung vom SoundIntensity-Bricklet nicht mehr stabil funktioniert, d.h. ich starte die Anwendung, setzte einen Callback mit Min 950 (Option '>' und alle 40ms) und der Callback wird nicht aufgerufen  :-\.  Am leichten Blinken der Master-LEDs kann ich inzwischen erkennen, ob der Callback aktiv ist oder nicht (und nur nicht an der Anwendung ankommt) und hier ist der Callback nicht aktiv gewesen.

 

Starte ich die Anwendung danach nochmal neu (Initialisierung ist immer gleich ...) => der Callback wird mit hoher Wahrscheinlichkeit wieder aufgerufen (Stack dabei nicht neu gestartet).

 

Ein Gedanke war noch, dass es aufgrund der vielen Bricklets und Kabel zu Störungen kommt. Aber sind 10 Bricklets viel? Kabel verkürzen ist eigentlich kaum mehr möglich, aktuell habe ich 1x 6cm, 7x 15cm und 2x 20cm (die 'alten' nicht gedrehten Kabel).

 

Ich werde wohl nicht drum herum kommen, als alles wieder zu zerlegen  :-[ und nochmal die alte Firmware drauf zu spielen.

 

Link zu diesem Kommentar
Share on other sites

  • 2 weeks later...

Schwitz  :P - Gehäuse wieder komplett zerlegt alle Bricklets weg, Stack ausgebaut, Downgrade auf Firmware 2.2.0 und alles wieder zusammensetzen... Dabei konnte ich mit etwas Gefummel 2 Brickletkabel noch von 15 auf 6cm verkürzen. Dafür habe ich gleich noch ein "Sparekabel" ohne Bricklet am letzten freien Port nach außen gelegt (bloß nicht nochmal alles zerlegen).

 

Und: Effekt ist weg  :) !

 

Freut mich zwar, aber die Ursache ist leider ungeklärt ...

Link zu diesem Kommentar
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...