DIV-C Firmware: Implementierung

Themen rund um die Software des Digitalvoltmeters DIV gehören hier rein.
psclab38
kann c't-Lab-Konstrukteure konstruieren
kann c't-Lab-Konstrukteure konstruieren
Beiträge: 942
Registriert: 25.01.2008, 23:34

DIV-C Firmware: Implementierung

Beitrag von psclab38 »

Hallo Forum,

mein DIV-Modul hat schon seit längerer Zeit Staub angesetzt. Nachdem es vor gut einem Jahr nur bei einer Ideensammlung für die DIV-C-Firmware hier im Forum geblieben ist, und sich die anderen C-Mitstreiter m. W. zwischenzeitlich anderen Beschäftigungen 8) zugewandt haben, möchte ich hier kundtun, daß ich mich in der Zwischenzeit an eine Implementierung einer DIV-C-Firmware gemacht habe.

Als Basis habe ich die DDS-C-Firmware verwendet.
Es läuft schon:
- ADC24+ADC10
- Bus+Parser
- Display mit Werteausgabe
- Menü mit getrennter Einstellung des Meßbereiches und des Modus (AC/DC + Spannung/Strom)

Es fehlen z. B. noch die Auto-Offset-Einstellung und andere kleinere Baustellen sind auch noch offen. Der Code ist noch ziemlich roh und viele DDS-Überreste treiben sich auch noch rum. Die ROM-Füllung ist derzeit bei ca. 50%.

Was ich noch nicht testen konnte, ist alles, was mit TRMS zu tun hat. Mein Emulator dockt leider an ein paar für DIV entscheidende Portleitungen an, so daß die TRMS und auch die beiden Spannungsteiler-Reed-Relais lahmgelegt sind.

- Autorange steht definitiv noch auf dem Wunschzettel (da gibt's vielleicht aufgrund der Hardware Einschränkungen. Wenn man z.B. bei DC-V mehr als 15V auf den Eingang gibt, der momentan auf dem 250mV oder 2.5V-Bereich steht, dann dominieren für die Umschaltezeit die 2*22kOhm Schutz-Widerstände gegen +/-15V und nicht der 1GOhm des LF411.)
- "Rel" und "Min/Max"-Anzeigen sollte kein Problem sein
- Die Sache mit dem Korrektur-Polynom finde ich auch interessant. Wenn da jemand von Euch was beisteuern kann, wie das funktionieren soll, würde ich mich leichter tun. (ein paar Stützstellen messen, mit Excel ein passendes Polynom bestimmen lassen und dann die Koeffizienten als Parameter in die Firmware bringen?) Da der LTC2400 mit 160ms Meßperiode recht gemütlich arbeitet, sollte das keine zeitkritische Sache sein.

Ansonsten würde ich mich über Beta-Tester freuen, wenn ich eine etwas komplettere Version fertig habe.

Viele Grüße
Paul
Lennart
kann c't-Lab-Bausätze löten
kann c't-Lab-Bausätze löten
Beiträge: 32
Registriert: 11.12.2009, 05:42
Wohnort: Berlin
Kontaktdaten:

Re: DIV-C Firmware: Implementierung

Beitrag von Lennart »

Respekt ... ich finds ja immer bewundernswert wie du hier reinhaust
"When in trouble or in doubt, run in circles, scream and shout."
Aktuelle Projekte: DevilTrac, ArmLab
PatHoff
kann c't-Lab-Bausätze löten
kann c't-Lab-Bausätze löten
Beiträge: 34
Registriert: 02.10.2009, 23:47

Re: DIV-C Firmware: Implementierung

Beitrag von PatHoff »

Hallo Paul,

Ich muss auch mal meine Anerkennung aussprechen. Ich versuch' seit Wochen mit der FirmWare für meine Schrittmotorsteuerung weiter zu kommen. Insofern kann ich abschätzen, wieviel Zeit sowas in Anspruch nimmt ...
psclab38 hat geschrieben: Ansonsten würde ich mich über Beta-Tester freuen, wenn ich eine etwas komplettere Version fertig habe.
Also ich würde da gern mit machen. Aber wie sieht das mit der Übernahme der Kalibrier-Daten aus. Kann man die in Deine C-FirmWare rüberretten ?

Grüße !
Patrick
psclab38
kann c't-Lab-Konstrukteure konstruieren
kann c't-Lab-Konstrukteure konstruieren
Beiträge: 942
Registriert: 25.01.2008, 23:34

Re: DIV-C Firmware: Implementierung

Beitrag von psclab38 »

PatHoff hat geschrieben: Also ich würde da gern mit machen. Aber wie sieht das mit der Übernahme der Kalibrier-Daten aus. Kann man die in Deine C-FirmWare rüberretten
Hallo Patrick und Lennart,

danke für das Vorschuß-Lob! 8)
Ja, es kostet schon Zeit und zwischen den verschiedenen C-Philiosophien (DDS-C, DIV-C bzw. DCG2-C, EDL2-C) zu springen erhöht den Zeitbedarf. Aber es macht auch Spaß, sonst würde ich es nicht machen.

Ich muß zugeben, daß ich mich mit der Original-FW nicht lange beschäftigt hatte und den Abgleich nur rudimentär absolviert hatte. Aber ich habe natürlich das gleiche Offset- und Scale-Verfahren übernommen. Meine auf gut-Glück zurückgespielten Abgleichdaten passen (zumindest für DC250mV und DC2.5V, die anderen Bereiche sind ja durch den Emulator lahmgelegt)

Ich bin dran und mache Zug-um-Zug weiter. Vor dem großen Aufräumen und einer Alpha-Version möchte ich eigentlich noch alle Grundfunktionen drin haben.

Kleine Frage in die Runde: macht beim Auto-Offset die Bestimmung des AC-Offset Sinn? Der TRMSC-Baustein geht ja nicht ganz bis Null runter, da wäre ja eine Offsetbestimmung nicht so zielführend. Das Auto-Offset ist - wie hier auch schon mal letztes Jahr vorgeschlagen - nur von temporärer Wirkung sinnvoll, höchstens per Extra-Menüpunkt ins EEProm zu übernehmen.

Viele Grüße
Paul
psclab38
kann c't-Lab-Konstrukteure konstruieren
kann c't-Lab-Konstrukteure konstruieren
Beiträge: 942
Registriert: 25.01.2008, 23:34

Re: DIV-C Firmware: Implementierung

Beitrag von psclab38 »

Hallo DIV-Besitzer,

ich möchte hiermit bekanntgeben, daß für die Experimentierfreudigen unter Euch eine erste Beta-Version der C-Firmware für unser DIV-Modul auf dem Netz liegt, nämlich hier:
http://dcg-firmware.cvs.sourceforge.net ... e_Beta.hex

Ich habe aufgrund einer Handverletzung leider derzeit keine Möglichkeit, meinen Versuchsaufbau umzubauen und die Sache ohne Emulator (und mit allen Relais und TRMSC-Modul) zu testen. Ich wollte Euch aber trotzdem den Zwischenstand zur Verfügung stellen und um erstes Feedback bitten.

Die Firmware läuft hier schon ganz anständig, hat neben den Standardfunktionen der original Pascal-Version
- eine sichere Umschaltung zwischen Stom- und Spannungsbereichen (bitte Encoder drücken und dann die Auswahl durch nochmaliges Drücken bestätigen)
- Autorange (Aktivierung per Bus-Parameter 20=1 (Adresse nicht vergessen! 7:20=1!) oder per Menü)

und diese Abweichungen:
- Auto-Offset (speichert die Werte aber nur im RAM, nicht im EEPROM)
- Triggerung (die Triggerflanke läßt sich auch ohne Reset umschalten)

Über Berichte zu Bugs oder weiteren Ideen und Verbesserungen würde ich mich freuen.
Apropos: Gibt es außer mir noch jemanden, der auf den 10A-Bereich verzichten kann? Dann würde ich den nämlich optional bei der Auswahl verschwinden lassen. 8)
Den Quellcode veröffentliche ich gerne, wenn die gröbsten Schnitzer ausgebaut sind. :wink:

Wie üblich die Vorsichtsmaßregeln:
Vor dem Update bitte die EEPROM-(Kalibrier)-Daten der Pascal-Version retten, per Programmer und noch besser per ParamBackupRestore.vi
Die C-Firmware braucht kein EEP-Hexfile. Nach dem ersten Start dann per ParamBackupRestore.vi die alten Kalibrierdaten zurückspielen, die sollten eigentlich passen. Wenn nicht, müssen wir uns das nochmal genau anschauen...

Viele Grüße
Paul
gewo
kann c't-Lab-Bausätze löten
kann c't-Lab-Bausätze löten
Beiträge: 26
Registriert: 01.12.2009, 22:09

Re: DIV-C Firmware: Implementierung

Beitrag von gewo »

Hallo Paul,
ich möchte hiermit bekanntgeben, daß für die Experimentierfreudigen unter Euch eine erste Beta-Version der C-Firmware für unser DIV-Modul auf dem Netz liegt, nämlich hier:
http://dcg-firmware.cvs.sourceforge.net ... e_Beta.hex
habe es mal gewagt.
- Autorange (Aktivierung per Bus-Parameter 20=1 (Adresse nicht vergessen! 7:20=1!) oder per Menü)
Prima, endlich hat die LED auch eine Funktion und Autorange funktioniert anscheinend auch.
Wie üblich die Vorsichtsmaßregeln:
Vor dem Update bitte die EEPROM-(Kalibrier)-Daten der Pascal-Version retten, per Programmer und noch besser per ParamBackupRestore.vi
Die C-Firmware braucht kein EEP-Hexfile. Nach dem ersten Start dann per ParamBackupRestore.vi die alten Kalibrierdaten zurückspielen, die sollten eigentlich passen. Wenn nicht, müssen wir uns das nochmal genau anschauen...
Das funktioniert nicht. Nach zurückspielen der Daten mit ParamBackupRestore.vi blinkt die Activity-LED
und der aktuelle Messwert wird ständig über den Optobus übertragen.
Beim Zurückspielen der EEPROM-Daten mit dem Programmer macht die FW ein INIT und die Kalibrierung ist futsch.

Gruß
Gerhard
psclab38
kann c't-Lab-Konstrukteure konstruieren
kann c't-Lab-Konstrukteure konstruieren
Beiträge: 942
Registriert: 25.01.2008, 23:34

Re: DIV-C Firmware: Implementierung

Beitrag von psclab38 »

gewo hat geschrieben: Prima, endlich hat die LED auch eine Funktion und Autorange funktioniert anscheinend auch.
Danke für's Testen. Lassen sich die Wechselspannungsbereiche auch brav umschalten? Wie gesagt, ich kann's leider z. Z. nicht selbst testen.
gewo hat geschrieben: Nach zurückspielen der Daten mit ParamBackupRestore.vi blinkt die Activity-LED
und der aktuelle Messwert wird ständig über den Optobus übertragen.
Beim Zurückspielen der EEPROM-Daten mit dem Programmer macht die FW ein INIT und die Kalibrierung ist futsch.
Das Zurückspielen per Programmer kann nicht funktionieren, weil das Mapping der EEPROM-Daten zwischen Pascal und C nicht identisch ist. Poste bitte mal Dein File, das Du mit dem VI erzeugt hast, oder schicke es mir per PN. Mir scheint, daß da die Triggerung anspringt, warum auch immer.
Roddot
kann c't-Lab-Module konstruieren
kann c't-Lab-Module konstruieren
Beiträge: 146
Registriert: 19.06.2008, 13:53

Re: DIV-C Firmware: Implementierung

Beitrag von Roddot »

psclab38 hat geschrieben:ich kann's leider z. Z. nicht selbst testen.
Wünsche dir schnelle Genesung!
Let's fets with Static-DC. :-)
gewo
kann c't-Lab-Bausätze löten
kann c't-Lab-Bausätze löten
Beiträge: 26
Registriert: 01.12.2009, 22:09

Re: DIV-C Firmware: Implementierung

Beitrag von gewo »

div_eep.txt
(4.33 KiB) 283-mal heruntergeladen
psclab38 hat geschrieben: Danke füRs Testen. Lassen sich die Wechselspannungsbereiche auch brav umschalten? Wie gesagt, ich kann's leider z. Z. nicht selbst testen.
Ja, lassen sich umschalten. Die AC/DC und U/I Umschaltung finde ich so auch besser.
psclab38 hat geschrieben: Poste bitte mal Dein File, das Du mit dem VI erzeugt hast, oder schicke es mir per PN. Mir scheint, daß da die Triggerung anspringt, warum auch immer.
Hier ist es.

Gruß
Gerhard
psclab38
kann c't-Lab-Konstrukteure konstruieren
kann c't-Lab-Konstrukteure konstruieren
Beiträge: 942
Registriert: 25.01.2008, 23:34

Re: DIV-C Firmware: Implementierung

Beitrag von psclab38 »

Roddot hat geschrieben: Wünsche dir schnelle Genesung!
@Roddot: Danke Dir! 8)

gewo hat geschrieben:
Poste bitte mal Dein File, das Du mit dem VI erzeugt hast, oder schicke es mir per PN. Mir scheint, daß da die Triggerung anspringt, warum auch immer.
Hier ist es.

Gruß
Gerhard
Hi Gerhard,
das Problem liegt ganz einfach in der Art, wie die C-Firmware die Parameter auf den gültigen Wertebereich eingrenzt. Bei 240 steht in Deinem File 128, also das siebte Bit ist gesetzt. Das ist aber unbenutzt, also hat die Firmware den höchsten erlaubten Wert eingetragen: 7. Damit sind alle Triggerbits gesetzt. QED :wink:

Ich hab das jetzt in der Firmware aber für alle Bit-basierten Parameter dahingehend geändert, daß die unbenutzen Bits einfach wegmaskiert werden. Damit gibt's bei Deinem EEP.txt-File auch keine Probleme mehr.

Bei der Suche nach der Ursache bin aber noch auf eine unaufgeräumte Baustelle meinerseits bei den Bus-Parametern gestoßen, die ich auch gleich beseitigt habe. Es gibt also an oben genannter Stelle ein neues Beta-Hexfile... :mrgreen:

Viele Grüße
Paul
Benutzeravatar
ompf
kann c't-Lab-Module konstruieren
kann c't-Lab-Module konstruieren
Beiträge: 168
Registriert: 19.01.2008, 13:03
Wohnort: Dortmund

Re: DIV-C Firmware: Implementierung

Beitrag von ompf »

Hallo Paul,

wird Deine DIV-FW einen Encoder benötigen? Der wäre durchaus nachrüstbar, aber das original DIV hat an der Stelle eine dritte Taste.


Gruß
Patrick
gewo
kann c't-Lab-Bausätze löten
kann c't-Lab-Bausätze löten
Beiträge: 26
Registriert: 01.12.2009, 22:09

Re: DIV-C Firmware: Implementierung

Beitrag von gewo »

psclab38 hat geschrieben: das Problem liegt ganz einfach in der Art, wie die C-Firmware die Parameter auf den gültigen Wertebereich eingrenzt. Bei 240 steht in Deinem File 128, also das siebte Bit ist gesetzt. Das ist aber unbenutzt, also hat die Firmware den höchsten erlaubten Wert eingetragen: 7. Damit sind alle Triggerbits gesetzt. QED :wink:

Ich hab das jetzt in der Firmware aber für alle Bit-basierten Parameter dahingehend geändert, daß die unbenutzen Bits einfach wegmaskiert werden. Damit gibt's bei Deinem EEP.txt-File auch keine Probleme mehr.
Funktioniert jetzt.

Gerhard
psclab38
kann c't-Lab-Konstrukteure konstruieren
kann c't-Lab-Konstrukteure konstruieren
Beiträge: 942
Registriert: 25.01.2008, 23:34

Re: DIV-C Firmware: Implementierung

Beitrag von psclab38 »

gewo hat geschrieben:
psclab38 hat geschrieben:Ich hab das jetzt in der Firmware aber für alle Bit-basierten Parameter dahingehend geändert, daß die unbenutzen Bits einfach wegmaskiert werden. Damit gibt's bei Deinem EEP.txt-File auch keine Probleme mehr.
Funktioniert jetzt.

Gerhard
Hi Gerhard, danke! Passen die von der Pascal-FW übernommenen Kalibrierwerte hinreichend genau?
ompf hat geschrieben: wird Deine DIV-FW einen Encoder benötigen? Der wäre durchaus nachrüstbar, aber das original DIV hat an der Stelle eine dritte Taste.
Hallo Patrick,

hmm. Ich muß zugeben, daß mir die DIV-Variante ohne Encoder (nur mit Buttons) nicht wirklich bewußt war. :?
Eigentlich bin ich ja der Meinung, daß das DIV ein anständiges Menü mit Encoder verdient hat. Aber wenn es Bedarf gibt, dann kann ich sicher eine Option einbauen, die für die Werteanzeige (und das wäre dann der einzige Menüpunkt) nur mit Buttons auskommt. Wäre das ok für Dich? Oder gibt es gar noch mehr Interessenten an dieser Variante?

Weil wir grade von den Knöpfen sprechen: Wenn man bei der Pascal-FW den "Encoder"/"Enter"-Knopf drückt, dann kommt "Memorizd". Ich kann aus den Pascal-Quellen da leider nix rauslesen. Hat jemand von Euch geblickt, wofür das Feature gut ist?

Viele Grüße
Paul
gewo
kann c't-Lab-Bausätze löten
kann c't-Lab-Bausätze löten
Beiträge: 26
Registriert: 01.12.2009, 22:09

Re: DIV-C Firmware: Implementierung

Beitrag von gewo »

psclab38 hat geschrieben: Hi Gerhard, danke! Passen die von der Pascal-FW übernommenen Kalibrierwerte hinreichend genau?
Ja, passen in etwa.
psclab38 hat geschrieben: Weil wir grade von den Knöpfen sprechen: Wenn man bei der Pascal-FW den "Encoder"/"Enter"-Knopf drückt, dann kommt "Memorizd". Ich kann aus den Pascal-Quellen da leider nix rauslesen. Hat jemand von Euch geblickt, wofür das Feature gut ist?
Damit wird der gerade eingestellte Messbereich gespeichert.
Mist, jetzt ist doch gerade mein DCG ausgefallen.

Gerhard
psclab38
kann c't-Lab-Konstrukteure konstruieren
kann c't-Lab-Konstrukteure konstruieren
Beiträge: 942
Registriert: 25.01.2008, 23:34

Re: DIV-C Firmware: Implementierung

Beitrag von psclab38 »

gewo hat geschrieben:
psclab38 hat geschrieben: Weil wir grade von den Knöpfen sprechen: Wenn man bei der Pascal-FW den "Encoder"/"Enter"-Knopf drückt, dann kommt "Memorizd". Ich kann aus den Pascal-Quellen da leider nix rauslesen. Hat jemand von Euch geblickt, wofür das Feature gut ist?
Damit wird der gerade eingestellte Messbereich gespeichert.
Ah, jetzt, ja! Jetzt seh' ich's auch! Danke!
gewo hat geschrieben:Mist, jetzt ist doch gerade mein DCG ausgefallen.
Oh je...
Antworten