Labscript Problem mit UNI-C / Datenlogger

francis
kann c't-Lab-Bausätze löten
kann c't-Lab-Bausätze löten
Beiträge: 28
Registriert: 27.05.2009, 21:11

Labscript Problem mit UNI-C / Datenlogger

Beitrag von francis »

Hallo an alle,

ich habe mir aktuell ein UNI-C aufgebaut.
Es funktioniert leider auch nur richtig mit dem 16 MHz Quarz und der 16 MHz Firmware.
In der 20 MHz Version bekam ich zwar die Firmwaremeldung vom Modul geliefert, aber alle gesendeten Befehle wurden wohl nicht richtig empfangen.

Mein Problem ist jedoch primär ein anderes. Ich möchte Meßdaten vom AD-wandler auf der SD-Karte mit Labscript ablegen (Datenlogger) Beispiel:

DLY=500
FNA="AD_DATA.TXT"
//10 Meßdaten
REG 8=10
LBL 1
//AD-Kanal 0 abfragen
INP 10?
//Register 0 schreiben
FWR=0
WTS
DEC 8
BRG 1

Grundsätzlich läuft das Script, die Meßdaten werden jedoch nicht geschrieben. Der Datenfile enthält zwar Datum und die Registernummer, aber nur die 0 für die Meßdaten.
Wenn ich den "INP 10" Befehl vom Terminal aus absetze, bekomme ich zwar meinen Meßwert im Terminal angezeigt, das Register 0 (Akku) wird aber nicht mit dem Ergebnis des SubCh 10 (AD Kanal 0) beschrieben. In der Folge schreibt auch FWR=0 nur den Inhalt des Registers 0 (=0) in den Daten File.
Auch wenn ich mit INP 68 das SPI Register des FPGAs abfrage (bei geladenem Beispielprogramm pwm.bit), bekomme ich im Terminal meinen Meßwert angezeigt, jedoch nicht das Register 0 beschrieben.
Diesen Test habe ich gemacht, weil im Sourcecode folgendes steht:

'INP', // 2000..2255 Input Akku mit Wert von moduleigener SubCh-Abfrage (SPI-Reg.)
'OUT', // 2000..2255 Register Output,
// Ausgabe von Akku oder Reg. 0..9 in moduleigenen SubCh (SPI-Reg.) 0..63

Ist mir nicht klar, ob das INP nur für die SPI Register gelten sollte, ich denke jedoch nicht.

Kann mir jemand weiterhelfen?

Auch würde mich interessieren, was für eine Bewandnis die Befehlszeile:
RIO 0=7 im Beispielprogramm Datawr.ini von cm hat? Gibt nur Fehlermeldung [CMDERR].

Beste Grüße Franz
francis
kann c't-Lab-Bausätze löten
kann c't-Lab-Bausätze löten
Beiträge: 28
Registriert: 27.05.2009, 21:11

Re: Labscript Problem mit UNI-C / Datenlogger

Beitrag von francis »


Hallo an alle,

mittlerweile habe ich mir den Sourcecode nochmals angeschaut, also wenn mich nicht alles täuscht ist die in
der Dokumentation genannt Funktionalität gar nicht implementiert.
Hat jemanden Erfahrungen mit dem Schreiben von Meßdaten mittels Labscript?
Funktioniert das mit einem c't-Lab mit FPGA-Modul (ohne Basic)?

Gruß Franz
francis
kann c't-Lab-Bausätze löten
kann c't-Lab-Bausätze löten
Beiträge: 28
Registriert: 27.05.2009, 21:11

Re: Labscript Problem mit UNI-C / Datenlogger

Beitrag von francis »

Hallo an alle,

nachdem es jetzt zumindest eine neue 20 MHz Firmware gibt, möchte ich meine Frage nochmals in den Focus setzen.
Ich habe mir den Quellcode der neuen 20 MHz Firmware und der alten 16 MHz Version nochmals angeschaut und kann weiter nicht erkennen, dass beim Lesen eines Werts vom ADC dieser auch in das Register 0 geschrieben wird. Damit kann dann dieser Wert auch nicht auf die SD Karte geschrieben werden.
Aber sicher bin ich mir da nicht, der Quellcode ist ja doch etwas umfangreicher.
Hat jemand schon den Versuch unternommen das UNI-C als Datenlogger mit Labscript Steuerung einzusetzen?

Gruß Franz
Spiedercat
kann c't-Lab-Bausätze bestellen
kann c't-Lab-Bausätze bestellen
Beiträge: 16
Registriert: 12.11.2011, 15:04

Re: Labscript Problem mit UNI-C / Datenlogger

Beitrag von Spiedercat »

Hallo Franz,

versuch es mal mit INP 50?. Das ist der Sub-Chanel für den AD-Kanal 0.
Ich habe das über den RWA Befehl herausgefunden.

Ein schönes Wochenende von

Hans-Peter
Hans-Peter
francis
kann c't-Lab-Bausätze löten
kann c't-Lab-Bausätze löten
Beiträge: 28
Registriert: 27.05.2009, 21:11

Re: Labscript Problem mit UNI-C / Datenlogger

Beitrag von francis »

Spiedercat hat geschrieben:Hallo Franz,

versuch es mal mit INP 50?. Das ist der Sub-Chanel für den AD-Kanal 0.
Ich habe das über den RWA Befehl herausgefunden.

Ein schönes Wochenende von

Hans-Peter
Hallo Hans-Peter,

vielen Dank für die Antwort.
Das funktioniert so bei mir nicht.
Mit INP 50? bekomme ich vom ADC0 den Messwert als Rohwert geliefert.
Ich habe z.B. ca. 5 V am ADC0 Eingang angelegt, mit INP 50 bekomme ich 1016 als Integer.
RAW 0? ist zu INP 50? equivalent.
Dieser Wert wird mit Skalierung und Offset in den eigentlichen Meßwert umgerechnet. Diesen bekomme ich mit INP 10?. Im Beispiel 4.923 als Float.
Das Problem ist aber, die Werte landen nicht im Register 0 oder einem anderen Register.
Somit kann ich den Wert auch nicht mit FWR=0 auf die SD-Karte schreiben.

Gruß Franz
Spiedercat
kann c't-Lab-Bausätze bestellen
kann c't-Lab-Bausätze bestellen
Beiträge: 16
Registriert: 12.11.2011, 15:04

Re: Labscript Problem mit UNI-C / Datenlogger

Beitrag von Spiedercat »

Hallo Franz,

mit dem folgenden Listing habe ich die Datei im Anhang erzeugt und erfolgreich beschrieben.

REM Analog Ausgang DA0 PIN a1 mit AD0 PIN a28 verbinden
REM Am Terminal VAL 20=7,5 eingeben
REM = Spannungswert für den Analogausgang
REM Pause 500 mS
DLY=500
REM Zehn Messdaten
REG 8=10
LBL 1
REM AD-Kanal 10 in den Akku
INP 10?
VAL 10?
REM Register 0 (Akku) in DATAFILE.XLS schreiben
FWR=0
REM Pause 1000 mS
DLY=1000
REM Register 8 decrementieren
DEC 8
REM Vergl. ob Akku groesser 1 springe zu LBL 1
BRG 1

Die Werte in der Datei entspechen aber noch nicht denen die mit VAL 10? am Terminal ausgegeben werden.

Gruß von Hans-Peter
Dateianhänge
DATAFILE.XLS
(2.97 KiB) 278-mal heruntergeladen
Hans-Peter
francis
kann c't-Lab-Bausätze löten
kann c't-Lab-Bausätze löten
Beiträge: 28
Registriert: 27.05.2009, 21:11

Re: Labscript Problem mit UNI-C / Datenlogger

Beitrag von francis »

Hallo Hans-Peter,

bei mir zeigt der Test nur 0.0000 für die aus Register 0 gelesenen Werte.
Die doppelte Abfrage des ADC mit INP 10 und dann nochmals VAL 10 gibt auch keine Änderung.
Siehe Anhang
Ich habe auch nochmals getestet, ob die Deaktivierung des Datentransfers zum FPGA mittels UDI=0 etwas ändert,
aber das ist nicht der Fall.
Ich bin weiter sehr überzeugt, dass der Befehl INP nicht das tut was in der Dokumentation zum Labscript steht.
Im Programmcode steht:

IntInOutFlag:= (SubCh>=2000);
if IntInOutFlag then // Out-Befehl
SubCh:=SubCh-2000;
endif;

Danach folgt die normale Bearbeitung des SubCh, es wird aber nirgends die Spezialfunktionalität des Labscript
implementiert, die den gelesenen Wert ins Register 0 kopiert. Oder ich sitze auf den Augen.
Das IntInOutFlag wird in keinem Programmteil weiter verwendet.
CM wollte sich des Problems annehmen, aber ich habe nichts mehr gehört.
Ich habe das UNI-C vor allem wegen der Möglichkeit es auch als kompakten Datenlogger einsetzen zu können aufgebaut und hoffe schon, dass es weiter unterstützt wird, sonst wäre es ein teurer Spass.

Grüße Franz
Dateianhänge
AD_DATA.TXT
(309 Bytes) 285-mal heruntergeladen
Spiedercat
kann c't-Lab-Bausätze bestellen
kann c't-Lab-Bausätze bestellen
Beiträge: 16
Registriert: 12.11.2011, 15:04

Re: Labscript Problem mit UNI-C / Datenlogger

Beitrag von Spiedercat »

Hallo Franz,


bei mir zeigt der Test nur 0.0000 für die aus Register 0 gelesenen Werte.

Versuch mal alle Jp 4-11 zu setzen ob Du da nach einem Test eine Wertänderung in der Datei feststellst.
Hat bei mir geholfen, hatte den falschen Kanal erwischt. :oops:

Die doppelte Abfrage des ADC mit INP 10 und dann nochmals VAL 10 gibt auch keine Änderung.

Die REM`s und VAL 10? dienten mir nur zur Fehlersuche und Ausgabe am Terminal.
Val 10? brachten immer die richtigen Werte am Terminal, was ich in der Datei nicht der Fall war.

1V wird mit 0.91330 in die Datei geschrieben, was noch vertretbar ist, aber 5V wird mit 538.461 in der Datei abgelegt, die Ausgabe über VAL 10? war aber immer richtig.

Gruß Hans-Peter
Zuletzt geändert von Spiedercat am 14.03.2012, 18:52, insgesamt 1-mal geändert.
Hans-Peter
francis
kann c't-Lab-Bausätze löten
kann c't-Lab-Bausätze löten
Beiträge: 28
Registriert: 27.05.2009, 21:11

Re: Labscript Problem mit UNI-C / Datenlogger

Beitrag von francis »

Hallo Peter,

ich kann das nicht nachvollziehen.
Ich habe mal alle Register auf Karte geschrieben und zudem die verschiedenen Kanäle mit Spannung versorgt.
Auch stimmen meine Kanalzuordnungen sicher.
Es ist so, Register 0 (A) wird nicht beschrieben.
Zu Testzwecken habe ich Register 0 mit einem Wert (z.B. 3) beschrieben (REG 0=3).
Der Inhalt wird beim Lauf des Testscripts nicht verändert.
Welche welche Ausbaustufe hat dein UNI-C? 20 MHz? FPGA Board gesteckt?

Gruß Franz
Spiedercat
kann c't-Lab-Bausätze bestellen
kann c't-Lab-Bausätze bestellen
Beiträge: 16
Registriert: 12.11.2011, 15:04

Re: Labscript Problem mit UNI-C / Datenlogger

Beitrag von Spiedercat »

Hallo Franz

Welche welche Ausbaustufe hat dein UNI-C? 20 MHz? FPGA Board gesteckt?

ja seit es die neue Firmware gibt fahre ich mit 20 MHz. Zur Kommunikation mit dem Terminal benutze ich den X-Port auf der Huckepack-Zusatzplatine. Und ja das FPGA Board ist gesteckt und die startup.ini wird auch gestartet.

Da fällt mir noch ein! Das Erzeugen der DATEIFILE.XLS übernimmt der FRW=0 Befehl. Habe ich auch per Zufall heraus gefunden als ich die Zeile FNA="AD_DATA.TXT" mit // aus dokumentiert hatte, und auf einmal eine xls-Datei auf der SD-Karte stand.

Gruß Hans-Peter
Hans-Peter
francis
kann c't-Lab-Bausätze löten
kann c't-Lab-Bausätze löten
Beiträge: 28
Registriert: 27.05.2009, 21:11

Re: Labscript Problem mit UNI-C / Datenlogger

Beitrag von francis »

Hallo Peter,

das funktioniert bei mir alles auch. Die Datei wird wie auch in der Dokumentation zum UNI-C Syntax beschrieben angelegt,
aber die Meßwerte tauchen dort nicht auf.
Die Firmware hat den Befehl INP einfach nicht richtig implementiert.
Dokumentation:
INP 2000..2255 INP <SubCh>?, INP 10? INP 20? Akku (Reg. 0) Input, mit Ergebnis von moduleigenem SubCh 0..255 füllen

Der Vergleich der Sourcen zur 16MHz und 20MHz Version zeigt bezüglich dieser Problematik keinen Unterschied.

Ich will jetzt einen anderen Weg gehen, die serielle Schnittstelle mit einem Bluetooth2Seriell Adapter versehen und dann
die Meßdaten an einen PC oder besser Smartphone übertragen.

Gruß Franz
fusebit
träumt vom eigenen c't-Lab
träumt vom eigenen c't-Lab
Beiträge: 8
Registriert: 15.01.2012, 15:30

Re: Labscript Problem mit UNI-C / Datenlogger

Beitrag von fusebit »

Hat eigentlich Jemand etwas Neues zu diesem Thema?

Ich habe hier auch die SD-Erweiterung und würde die Logger Funktion gerne nutzen.

Hans-Peter scheint das ja irgendwie geschafft zu haben, aber bei mir ändert der Befehl INP auch nichts am Register 0.


Grüße

Dirk
francis
kann c't-Lab-Bausätze löten
kann c't-Lab-Bausätze löten
Beiträge: 28
Registriert: 27.05.2009, 21:11

Re: Labscript Problem mit UNI-C / Datenlogger

Beitrag von francis »

fusebit hat geschrieben:Hat eigentlich Jemand etwas Neues zu diesem Thema?

Ich habe hier auch die SD-Erweiterung und würde die Logger Funktion gerne nutzen.

Hans-Peter scheint das ja irgendwie geschafft zu haben, aber bei mir ändert der Befehl INP auch nichts am Register 0.


Grüße

Dirk
Hallo Dirk,

das Thema ist weiter ungeklärt. Ich habe zweimal cm um Prüfung gebeten. Was er auch tun wollte. Aber leider hat sich bis heute nichts getan.
Ich bin mir weiter sehr sicher, dass die beschriebene Funktionalität gar nicht in der Firmware umgesetzt ist.
Was natürlich sehr schade ist, da sich das UNI-C gerade als Datenlogger anbietet.
Ich selbst habe mir an die serielle Schnittstelle einen seriell nach Bluetooth-Adapter angesteckt. Damit kann ich dann die Daten auf dem Smarthphone aufzeichnen. Nachteil dabei, maximal eine Abfrage der 8 Kanäle pro Sekunde.
Das Programm dazu ist aus Zeitmangel auch nur in einem Prototypenstatus.
Am einfachsten wäre es wenn die Firmware ein Update erhalten würde.

Gruß Franz
fusebit
träumt vom eigenen c't-Lab
träumt vom eigenen c't-Lab
Beiträge: 8
Registriert: 15.01.2012, 15:30

Re: Labscript Problem mit UNI-C / Datenlogger

Beitrag von fusebit »

Hi Franz,

ich habe cm vor einer Woche dazu auch angeschrieben, allerdings überhaupt keine Reaktion erhalten.
Insgesamt bin ich doch etwas entäuscht von der Vorgehensweise, besonders weil die Firmware mit einem komerziellen Programm erstellt ist und man selber dadurch nichts machen kann.
Es sei denn man schreibt sich eine komplette Firmware in C...


Grüße

Dirk
francis
kann c't-Lab-Bausätze löten
kann c't-Lab-Bausätze löten
Beiträge: 28
Registriert: 27.05.2009, 21:11

Re: Labscript Problem mit UNI-C / Datenlogger

Beitrag von francis »

Hallo Dirk,

das sehe ich ganz genau so. Vielleicht kommt es jetzt doch noch zu einer Reaktion von cm.

Gruß Franz
Antworten