Hallo Zusammen,
ich kämpfe schon ein Weilchen mit einem CSM-Modul auf einem 4S0ETH Datenlogger von busware http://busware.de/tiki-index.php?page=4S0ETH (http://busware.de/tiki-index.php?page=4S0ETH). Soweit ich das bisher rausfinden konnte, müsste das unter ttyAM0 ansprechbar sein. Da es auf Modem-Befehle leider gar nicht reagiert, wollte ich die Firmware neu aufspielen. Leider funktionier das auch nicht auf Anhieb:
root@tuxrail:~/CUL_VER_161/Devices/CSM# avrdude -p atmega1284p -P /dev/ttyAM0 -b 38400 -c avr109 -U flash:w:CSM.hex
Connecting to programmer: .avrdude: butterfly_recv(): programmer is not responding
Laut Beschreibung des CSM-Moduls (http://busware.de/tiki-index.php?page=CSM (http://busware.de/tiki-index.php?page=CSM)) muss der pin 6 (PD3) dazu auf Masse gelegt werden. Meine Recherchen haben ergeben, dass dieser Pin am Register D des ATMEGA324 hängt und somit per GPIO ein Reset gemacht werden können müsste. An dieser Stelle komme ich allerdings nicht weiter, da ich nicht rausfinden konnte, welcher GPIO der Richtige ist.
Für sachdienliche Hinweise wäre ich sehr dankbar!
Hardy
Hallo RechnerSchrauber
Ich habe keinen 4S0ETH Datenlogger, nur das verlinkte CSM-Modul einzeln!
Das ist wie hier beschrieben bei mir angeschlossen.
http://www.fhemwiki.de/wiki/Raspberry_Pi:_CSM (http://www.fhemwiki.de/wiki/Raspberry_Pi:_CSM)
Fhem beenden, Pin 6 (PD3) auf Masse dann Dein Befehl und freuen!
Kann es sein, daß Du erst einen seriellen Adapter zum Programmieren bauen mußt?
CK
Hallo CK,
danke für den Link. Da das CSM im Datenlogger auf einer Trägerplatine aufgelötet ist, komme ich nicht an den PIN 6 dran. Da er offenbar mit einem per GPIO ansteuerbaren Ausgang verbunden ist, wollte ich das per Software-Befehl lösen. Dazu muss ich "nur" noch rausfinden, welcher GPIO den PIN 6 des CSM auf Masse zieht. :-\
Hardy
Hallo CK,
ich habe mal vorsichtig mit einem Draht den PIN 6 des CSM beim Start des 4S0ETH gegen Masse gebrückt und siehe da: es leuchten beide Status LEDs des CSM (grün + rot) und nicht nur die Grüne. Leider bekomme ich beim flashen immer noch dieselbe Fehlermeldung. Leuchten bei Deinem CSM auch beide LEDs im Programmiermodus?
Mit MiniCom kann ich zwar auf ttyAM0 verbinden, bekomme aber keine Antwort. Daher gehe ich mal dacon aus, dass die Schnittstelle eigentlich passen müsst.
Danke & Gruß
Hardy
Hallo Zusammen,
ich habe noch weiter geforscht und ein paar Sachen ausprobiert, hier der Stand meiner Erkenntnisse:
Die Vermutung, dass sich per gpio der Programmiermodus aktivieren lässt, scheint richtig zu sein. Laut meiner Tests müsste
gpio25 der BootSelect und
gpio23 der Reset
des CSM im 4S0ETH sein.
Mit
echo out > /sys/class/gpio/gpio25/direction
echo out > /sys/class/gpio/gpio23/direction
lassen sich beide Ausgänge aktivieren und anschließend wie folgt ansprechen:
Mit echo 0 > /sys/class/gpio/gpio25/value
wird (vermutlich) der Programmiermodus aktiviert, zumindest leuchten dann beide LEDS (grün + rot) auf dem CSM (wie beim Test mit der Brücke zwischen Pin 6 und Masse). Gleichzeitig erlischt die sonst grün blinkende "Radio" LED am 4S0ETH.
Mit echo 1 > /sys/class/gpio/gpio25/value
geht das CSM offenbar wieder in den normalen Modus zurück, da dann nur noch die grüne LED am CSM leuchtet und die "Radio" LED am 4S0ETH wieder grün blinkt.
Mit
echo 0 > /sys/class/gpio/gpio23/value
echo 1 > /sys/class/gpio/gpio23/value
geht die grüne CSM-LED und die "Radio" LED des 4S0ETH kurz aus und es leuchtet die rote "Error" LED am 4S0ETH auf. Danach leuchtet die grüne CSM-LED und es blinkt die "Radio" LED. Ich interpretiere das als Reset des CSM.
Wenn ich jetzt in Analogie zu diesem Thread: http://forum.fhem.de/index.php/topic,9998.0/nowap.html den BootSelect erst auf "0" setzte, dann den Reset durchführe und anschließend den BootSelect wieder auf "1" setze, bleibt das CSM offenbar "hängen". Zumindest leuchten dann beide LEDs des CSM und die rote "Error" LED des 4S0ETH dauerhaft. Nur wenn ich den BootSelect vor dem Reset wieder auf "1" setze, startet das CSM neu.
Leider bekomme ich in allen oben beschriebenen Konstellationen die gleiche avrdude-Fehlermeldung, dass der Programmer nicht antwortet. Die elektrische Verbindung des CSM (RX, TX) zum 4S0ETH sind soweit o.k., so dass eigentlich nur noch zwei Möglichkeiten bleiben:
- Die serielle Schnittstelle des CSM ist defekt, oder
- es ist nicht über ttyAM0 verbunden.
Da nur die beiden Schnittstellen ttyAM0 und ttySP1 beim 4S0ETH als aktiv gelistet werden und am ttySP1 offenbar der S0-Logger hängt, habe ich bei der zweiten Alternative keine Idee, wo ich suchen sollte.
Es wäre klasse, wenn mir jemand einen Tipp geben könnte, auf welcher Schnittstelle man das CSM auf dem 4S0ETH ansprechen muss.
Hardy
Das Flashen lässt sich eigentlich mit einem Skript bewerkstelligen. Nur als Bsp.:
http://sourceforge.net/p/culfw/code/HEAD/tree/trunk/culfw/Devices/rpiaddon/flash.sh
Danke für den Link!
Das sind im Prinzip die Schritte die ich auch per Hand probiert habe, allerdings bekommt das Flashprogramm trotzdem keine Anwort vom CSM. Oder macht das einen Unterschied, wenn das per Script läuft?
Hallo RechnerSchrauber
Ich habe die Beiträge nur Überflogen....
Als Ideen, Schnittstelle darf nicht belegt sein (bei mir mußte ich demzufolge Fhem beenden), als root flashen oder/und "Busware" mal
kontaktieren. Letzteres hat bei mir geholfen!!!
CK
Hallo CK,
das habe ich schon versucht, aber leider keine Antwort bekommen. :-(
Hardy
Ich habe mir die PERL-Prgramme des Datenloggers mal näher angeschaut und habe meinen Denkfehler (vermutlich) gefunden: das CSM ist nicht direkt mit dem TuxRail verbunden sondern hängt "hinter" dem S0-Logger an derselben seriellen Schnittstelle ttySP1. Damit stellen sich mir allerdings zwei neue Fragen:
- Wie kann man das CSM in Verbindung mit dem Datenlogger nutzen (z.B. die S0-Daten per Funk an ein anderes Gerät übertragen)?
- Läßt sich das CSM trotzdem direkt über FHEM ansprechen und wenn ja, wie?
Da ich vermute, dass diese Fragen nur jemand von busware beantworten kann, hoffe ich drauf, dass sie diesen Thread lesen.
Hallo RechnerSchrauber,
ja, das ist richtig; das CSM wird über die selbe serielle Schnittstelle wie der S0-Zähler erreicht (ttySP1); im allgemeinen ist das Modul bereits mit Firmware ausgestattet, wenn auch zwangsläufig nicht mit einer wirklich aktuellen Version. Welche Firmware vorhanden ist und die grundsätzlichen Funktionen (z.B. Empfang von FS20 oder EM1000-Signalen) kann durch Eingabe von Befehlen über ein Terminalprogramm (VT102; 38400; 8N1) erfolgen. Die Befehle beginnen immer mit *, die Eingabe erfolgt also in der Form *<data> wobei <data> eines der folgenden Zeichen sein darf: m B C F A G M S R T V W X e f l t x (gehen nicht zwingend alle; hängt von der CSM/Firmware-Version ab)
Die Bedeutung/Funktion der Zeichen kannst Du bei der FHEM/CUL-Dokumentation nachlesen.
Ich habe auf diese Weise die empfangenen Messwerte eines EM1000 Hutschienenzählers eingelesen. Ggf. gelingt über diesen Weg auch die Einbindung in FHEM; Das Reverse-Engineering der Perl-Scripte ist tatsächlich etwas mühsam und mangels brauchbarer Beschreibung habe ich das irgendwann aufgegeben. :-(
Schade; der Zähler ist ja ganz nett und es gibt, wenn man auch S0-Impulse zählen will bisher m.W. keine vergleichbare Alternative.