DIV-C Firmware: Implementierung
DIV-C Firmware: Implementierung
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 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
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 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
-
- 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
Respekt ... ich finds ja immer bewundernswert wie du hier reinhaust
Re: DIV-C Firmware: Implementierung
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 ...
Grüße !
Patrick
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 ...
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 ?psclab38 hat geschrieben: Ansonsten würde ich mich über Beta-Tester freuen, wenn ich eine etwas komplettere Version fertig habe.
Grüße !
Patrick
Re: DIV-C Firmware: Implementierung
Hallo Patrick und Lennart,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
danke für das Vorschuß-Lob!
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
Re: DIV-C Firmware: Implementierung
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.
Den Quellcode veröffentliche ich gerne, wenn die gröbsten Schnitzer ausgebaut sind.
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
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.
Den Quellcode veröffentliche ich gerne, wenn die gröbsten Schnitzer ausgebaut sind.
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
Re: DIV-C Firmware: Implementierung
Hallo Paul,
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
habe es mal gewagt.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
Prima, endlich hat die LED auch eine Funktion und Autorange funktioniert anscheinend auch.- Autorange (Aktivierung per Bus-Parameter 20=1 (Adresse nicht vergessen! 7:20=1!) oder per Menü)
Das funktioniert nicht. Nach zurückspielen der Daten mit ParamBackupRestore.vi blinkt die Activity-LEDWie ü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...
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
Re: DIV-C Firmware: Implementierung
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: Prima, endlich hat die LED auch eine Funktion und Autorange funktioniert anscheinend auch.
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.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.
Re: DIV-C Firmware: Implementierung
Wünsche dir schnelle Genesung!psclab38 hat geschrieben:ich kann's leider z. Z. nicht selbst testen.
Let's fets with Static-DC.
Re: DIV-C Firmware: Implementierung
Ja, lassen sich umschalten. Die AC/DC und U/I Umschaltung finde ich so auch besser.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.
Hier ist es.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.
Gruß
Gerhard
Re: DIV-C Firmware: Implementierung
@Roddot: Danke Dir!Roddot hat geschrieben: Wünsche dir schnelle Genesung!
Hi Gerhard,gewo hat geschrieben:Hier ist es.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.
Gruß
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
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...
Viele Grüße
Paul
- ompf
- kann c't-Lab-Module konstruieren
- Beiträge: 168
- Registriert: 19.01.2008, 13:03
- Wohnort: Dortmund
Re: DIV-C Firmware: Implementierung
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
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
Re: DIV-C Firmware: Implementierung
Funktioniert jetzt.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
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.
Gerhard
Re: DIV-C Firmware: Implementierung
Hi Gerhard, danke! Passen die von der Pascal-FW übernommenen Kalibrierwerte hinreichend genau?gewo hat geschrieben:Funktioniert jetzt.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.
Gerhard
Hallo Patrick,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.
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
Re: DIV-C Firmware: Implementierung
Ja, passen in etwa.psclab38 hat geschrieben: Hi Gerhard, danke! Passen die von der Pascal-FW übernommenen Kalibrierwerte hinreichend genau?
Damit wird der gerade eingestellte Messbereich gespeichert.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?
Mist, jetzt ist doch gerade mein DCG ausgefallen.
Gerhard
Re: DIV-C Firmware: Implementierung
Ah, jetzt, ja! Jetzt seh' ich's auch! Danke!gewo hat geschrieben:Damit wird der gerade eingestellte Messbereich gespeichert.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?
Oh je...gewo hat geschrieben:Mist, jetzt ist doch gerade mein DCG ausgefallen.