Fehlerhafte Funktionalität der LED

Begonnen von Jantle, 29 November 2018, 20:15:03

Vorheriges Thema - Nächstes Thema

Jantle

Hallo, ich habe eine Frage bzw Fehlermeldung zur Funktion der LED in der CUL Firmware.
Ich habe mir einen nanoCUL gebaut der eigentlich auch tadellos funktioniert. Da ich die Dinge gerne blinken sehe, habe ich dem CUL eine helle LED spendiert, die mir eigentlich Funkaktivität anzeigen soll.
Die LED funktioniert eigentlich auch, ich kann sie per 'l02' zum blinken bringen. 'l00' und 'l01' funktionieren aber nicht wie erwartet, d.h. mit 'l00' wird die LED weder dauerhaft ausgeschaltet, noch wird mit 'l01' der Empfang von Daten signalisiert.
Stattdessen wird die LED scheinbar willkürlich manchmal einfach an- bzw ausgeschaltet.

Ich habe dann ein bisschen im Quellcode gestöbert und werde nicht so richtig schlau aus der beabsichtigten Implemetation.

- In Datei "fncollection.c" wird der gewünschte Mode zwar ausgewertet, anschliessend die LED hart an- bzw ausgeschaltet und der Modus in der Variablen "led_mode" gespeichert, aber diese Variable wird ausser für das sekündliche Blinken in "clock.h" nie mehr ausgewertet.
- Sende- und Empfangsaktivität soll vermutlich in den verschiedenen "rf_..."-Dateien, zB in "rf_send" bzw "rf_receive" angezeigt werden. Hierzu wird dabei jeweils am Anfang einer Routine die LED mit dem Makro "LED_ON()" an- und am Ende der Routine mit "LED_OFF()" wieder abgeschaltet. Da aber das Program vermutlich extrem schnell durch die jeweiligen Routinen durchrauscht, dürfte dieses Einschalten der LED allenfalls wenige microsekunden dauern und damit nicht warnehmbar sein.
- In der Datei serial.c gibt es ausserdem einen Aufruf von "LED_TOGGLE()", der die LED unabhängig vom gewünschten Modus bei jedem Datenempfang an der seriellen Schnittstelle einmal umschaltet, was das erwähnte scheinbar willkürliche Verhalten der LED erklärt. (in a-culfw allerdings auskommentiert)

Sehe ich das richtig, dass die Modi l00 und l01 gar nicht wie ursprünglich beabsichtigt funktionieren können oder habe ich irgendetwas übersehen?

Jan

rudolfkoenig

ZitatSehe ich das richtig, dass die Modi l00 und l01 gar nicht wie ursprünglich beabsichtigt funktionieren können oder habe ich irgendetwas übersehen?
Urspruenglich gab es nur das Blinken, damit ich weiss, ob die MCU bzw. culfw sich verklemmt hat. Da das Blinken manche nervte, habe ich l00 fuer aus, l01 fuer an, und l02 fuer Blinken eingebaut. Davon komplett unabhaengig wird das LED angemacht, falls Daten gesendet oder empfangen werden. Das kann man mit dem l Befehl nicht beeinflussen. Das Senden eines FS20 Telegramms dauert 0.2s, das kann man durchaus als Blinken wahrnehmen.

Achtung: nanoCUL kenne ich nicht, kann sein, dass ich was uebersehe, oder etwas ohne mein Wissen geaendert wurde.Die Regeln bei der culfw Entwicklung sind (noch?) nicht so streng, wie bei FHEM.

Jantle

Hallo,
vielen Dank für die Erklärung, damit machen die "Ungereimtheiten" im Quellcode für mich auch wieder Sinn. Ich habe mich hier von den in diversen Blogs und How-Tos falsch bzw missverständlich kolportierten Erklärungen zm "lxx"-Commando in die Irre führen lassen. Auch hier im Wiki-Eintrag zum CUL ist das etwas missverständlich erklärt.

0,2 Sekunden kann man in der Tat sehr gut erkennen, im schon länger genutzten MySensors-Gateway habe ich 100ms eingestellt, auch das blinken sieht man noch sehr gut.
Die Implementation für den nanoCUL wurde nahezu 1 zu 1 vom CUL selber übernommen, das passt, da liegt kein Fehler vor...
... der Grund für die stumme LED liegt im von mir verwendeten Modus. Ich nutze nur den Moritz-Modus für meine MAX!-Thermostate... In dessen Implementation wurde auf die Verwendung der LED komplett verzichtet. Dies war aber schnell nachgerüstet, so dass jetzt auch der CUL fröhlich blinken kann.

Vielen Dank nochmal!
  Jan