ADA-C mit neuer FirmWare als Oszilloskop benutzen ...

Hier werden Themen zur Programmierung des Port-Motherboards ADA-IO und seiner Tochterplatinen IO8-32, Optoschaltstufe, AD16-8 und DA12-8 diskutiert.
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

ADA-C mit neuer FirmWare als Oszilloskop benutzen ...

Beitrag von PatHoff »

Im Folgenden beschreibe ich meine (schon recht weit fortgeschrittene) Realisierung eines Oszilloskopes mit dem ADA-C-Modul des c’t-Labs. Grob gesagt besteht das ganze aus einer neuen FirmWare, die die originale FirmWare ersetzt. Sie benutzt den schnellen internen A/D-Wandler des ATmega32 um Analogwerte mit bis zu 615kSamples je Sekunde aufzunehmen. Die Daten werden im RAM des Mikrocontrollers zwischen gespeichert und über den OptoBus ausgegeben. Die FirmWare habe ich in C entwickelt. Es existiert auch ein LabView-Programm, mit dem sich das Oszilloskop bedienen lässt. Allerdings ist die FirmWare (noch) nicht so weit entwickelt, wie die originale. So ist die Syntax nicht vollständig implementiert, das Panel wird nicht unterstützt. Ebenso wenig die A/D- und D/A-Karten. Und man muss die alte FirmWare überschreiben, wobei aber die Kalibrierwerte im EEPROM erhalten bleiben. Man kann also durch FirmWare-Wechsel zwischen der originalen ADA-C-Funktion und der Oszilloskop-Funktion umschalten.
Soviel zur kurzen Einleitung. Details zu Realisierung, Eigenschaften, Einschränkungen, Zukunftsmusik und einige Anwendungsbeispiele kann man als vollständige Beschreibung hier herrunter laden :
http://sourceforge.net/projects/ada-c-s ... f/download
Projektseite mit allen anderen DownLoads: http://sourceforge.net/projects/ada-c-scope/files/

Was muss man machen :
- einfach neue Firmware in den ATmega32 des ADA-C-Moduls flashen (ggf. zum Flashen die IO8-32-, A/D- und D/A-Karten entfernen).
- WICHTIG: Bitte vorher EEPROM-Inhalt sichern ! Ich halte mich in meiner FirmWare zwar vom EEPROM fern, wegen der dort enthaltenen Kalibrier-Werte ist es aber schon besser, den EEPROM-Inhalt vorher zu sichern !
- Firmware übernimmt die Moduladresse aus den Jumpern und sollte erfolgreiches Flashen wie gewohnt durch ein langes Aufleuchten der Activity-LED signalisieren. Dem folgt dann ein der Moduladresse n entsprechendes n-maliges kurzes Aufleuchten.
- Hardware-Änderungen: Wenn man mit dem IO8-32-Modul messen möchte, so muss man den 2,2nF-Sieb-Kondensator auslöten. Es reicht bei einem Kanal, auf dem man messen möchte. Also z.B. C5, wenn man auf Kanal ADC2 (Pin 3 an PL3) messen möchte. Sonst misst man bei schnellen steilen Signalen nur die Lade/Entladekurve des Kondensators (siehe Anwendungsbeispiele in der oben herunterzuladenden PDF-Datei).
- SoftWare: Ich habe ein LabView-Demoprogramm Scope.vi geschrieben (oder besser: Zusammengedrahtet), mit welchem ich auch die Anwendungsbeispiele gemessen habe. Eigentlich kann man die originalen Sub-VI’s wie z.B. CTLAB-RequestVal.vi oder CTLAB-SendVal.vi verwenden. Allerdings erfordert der XSC-Befehl die Übertragung von sehr kleinen und großen Zahlen (1e-6 bis 1e+5). Das ist sinnvoll nur mit einer Exponentialdarstellung möglich. Im originalen CTLAB-SendVal.vi wird jedoch in einen String mit 4 festen Nachkommastellen konvertiert, d.h. Werte unter 0,0001 waren nicht möglich !
Deswegen habe ich ein neues SubVI mit dem Namen CTLAB-SendValExp.vi geschrieben, welches in der CTLIBNeu.llb enthalten ist. Die Datei enthält auch alle alten VI’s unverändert und sollte einfach im gleichen Verzeichnis wie Scope.vi liegen, dann findet LabView das neue CTLAB-SendValExp.vi schon. Zur Bedienung siehe unter „Ablauf einer Messung“ in der PDF-Datei.

Anregungen, Kritik und Jubelgeschrei erwünscht !
Patrick
Benutzeravatar
Marcel
kann c't-Lab-Module umbauen
kann c't-Lab-Module umbauen
Beiträge: 91
Registriert: 31.12.2008, 17:26
Wohnort: Siegen

Re: ADA-C mit neuer FirmWare als Oszilloskop benutzen ...

Beitrag von Marcel »

615kS sind sicherlich nicht die Welt, aber zumindest mal für langsame Signale sollte das recht gut reichen. Ich progge auch Controller in C und hatte grad so den Gedanken, ob es nicht möglich wäre beide Firmwares Parallel zu nutzen.
Hat bisher jemand die Originale Firmware für das Modul auf C umgestellt?
Stolzer Besitzer eines c`t-Lab:

1x 19" Gehäuse von Segor [ 100% ]
1x IFP ohne LAN [ 100% ]
2x DCG/DCP 16bit [ 100% ]
psclab38
kann c't-Lab-Konstrukteure konstruieren
kann c't-Lab-Konstrukteure konstruieren
Beiträge: 942
Registriert: 25.01.2008, 23:34

Re: ADA-C mit neuer FirmWare als Oszilloskop benutzen ...

Beitrag von psclab38 »

Marcel hat geschrieben:Ich progge auch Controller in C und hatte grad so den Gedanken, ob es nicht möglich wäre beide Firmwares Parallel zu nutzen.
Wie meinst Du denn das? Die Original-Pascal-Fw und die neue C-Firmware von Patrick? Ich fürchte, die wird man schon in eine mergen müssen.
Marcel hat geschrieben:Hat bisher jemand die Originale Firmware für das Modul auf C umgestellt?
Wir haben im sourceforge-DCG Projekt (DCG, DDS, EDL) einen neuen Mitspieler, der eigentlich die ADA in C in Angriff nehmen wollte. Ich habe leider schon länger nichts mehr von ihm gehört. Aber es war ja Sommer und Urlaubszeit... :D

PatHoff hat geschrieben:Anregungen, Kritik und Jubelgeschrei erwünscht !
Hallo Patrick, erstmal herzlichen Dank für Dein Engagement und auch für die komplette Anwendungssoftware in LabView (für mich bis heute ein Buch mit sieben Siegeln). Vielleicht lassen sich ja die Aktivitäten bündeln und es wird eine auf C portierte Version mit allen Standardfunktionen und Deinen Erweiterungen daraus.

Die erzielbare Samplingfrequenz ist ausreichend für den NF-Bereich. Man muß halt beim Messen im Hinterkopf behalten, wie groß die "Lücken" zwischen den Messungen sind und was man daher alles eventuell nicht sieht (Glitches, Überschwinger etc). Als Signalkontrolle kann da evtl. ein einfaches altes Analogoszi dienen. Die Auflösung mit 8bit ist eigentlich kein Problem, das machen selbst die einfachen professionellen Geräte nicht besser.

Ich würde mich freuen, wenn dieses Projekt zu einer kompletten C-Portierung für die ADA führen würde. Aber bevor Du zuviel selbst neu entwickelst, schau Dir bitte die oben erwähnten Projekte an, da ist das ganze "Framework" um Kommunikation, Panel, Kommandointerpreter etc. schon mal vorhanden.

Viele Grüße
Paul
Benutzeravatar
Marcel
kann c't-Lab-Module umbauen
kann c't-Lab-Module umbauen
Beiträge: 91
Registriert: 31.12.2008, 17:26
Wohnort: Siegen

Re: ADA-C mit neuer FirmWare als Oszilloskop benutzen ...

Beitrag von Marcel »

Ich meinte nicht die Original Firmware in Pascal, sondern eine Eventuell bereits vorhandene Portierung in C. Wenn man die Original-Funktionen und die neuen Funktionen in eine Firmware bekommen kann so dass man per Kommando umschalten kann wäre das um längen praktischer als immer die Firmware hin und her zu Flashen.
Stolzer Besitzer eines c`t-Lab:

1x 19" Gehäuse von Segor [ 100% ]
1x IFP ohne LAN [ 100% ]
2x DCG/DCP 16bit [ 100% ]
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: ADA-C mit neuer FirmWare als Oszilloskop benutzen ...

Beitrag von PatHoff »

Marcel hat geschrieben:Ich meinte nicht die Original Firmware in Pascal, sondern eine Eventuell bereits vorhandene Portierung in C. Wenn man die Original-Funktionen und die neuen Funktionen in eine Firmware bekommen kann so dass man per Kommando umschalten kann wäre das um längen praktischer als immer die Firmware hin und her zu Flashen.
Ja, das wär' auch meine Vorstellung. Leider gibt es noch keine C-Portierung für ADA oder DIV. Bei DIV würde diese Scope-Erweiterung noch mehr Sinn machen, könnte man doch dann die ganzen Spannungsteiler und Shunts zur Strommessung verwenden (Wobei ich nicht weiß, ob die Wechselstromsignale so ungeschoren durch die Spannungsteiler und Op-Amps (U6) durchkommen).
psclab38 hat geschrieben:Ich würde mich freuen, wenn dieses Projekt zu einer kompletten C-Portierung für die ADA führen würde. Aber bevor Du zuviel selbst neu entwickelst, schau Dir bitte die oben erwähnten Projekte an, da ist das ganze "Framework" um Kommunikation, Panel, Kommandointerpreter etc. schon mal vorhanden.
Ja, das schau' ich mir mal an ! Für EDL, DCG und DDS gibt es eine C-FirmWare, oder ? Könnte man daraus den Grund-Stock (geräte-unabhängiger Parser, Panel-Ansteuerung) entnehmen ?
Prinzipiell funktioniert die Scope-Erweiterung ja auf allen Modulen mit ATmegaXX. Es wäre also auch möglich, sie in die EDL- oder DDS-Firmware zu integrieren. Aber auf ADA bzw. DIV macht sie eben am meisten Sinn.
Und ich hab' halt deswegen ein eigenes und unabhängiges Projekt gemacht, um mich a) schnell in die C- und AVR-Programmierung einzuarbeiten und um b) schnelle und vorzeigbare Ergebnisse zu erzielen, ohne schon vorher in den Untiefen einer zuvor nötigen Pascal-C-Portierung auf Grund zu laufen.

Mich würde ja auch mal interessieren, ob schon jemand die neue FirmWare ausprobiert hat, und ob sie funktioniert ? Bei Interesse würde ich das ganze schon gern weiter führen, bis hin zu einer ADA- oder DIV-FirmWare mit Scope-Zugabe (so denn die ATmega32-Resourcen wie Flash und RAM ausreichen).

Viele Grüße aus Berlin !
Patrick
Benutzeravatar
moosmichel001
kann c't-Lab-Module konstruieren
kann c't-Lab-Module konstruieren
Beiträge: 175
Registriert: 06.12.2007, 10:09
Wohnort: Schwerin

Re: ADA-C mit neuer FirmWare als Oszilloskop benutzen ...

Beitrag von moosmichel001 »

Ich werde mich mal ans Ausprobieren machen.

Ich hätte da noch einen Hardwarevorschlag:

um die Daten schneller via RS232 zum PC zu schaufeln würde ja eine deutlich höhere Datenrate des IFP Sinn machen.
Um die Fehlerrate dabei zu minimieren würde ich dann eine Quarz-Frequenz von 14,7456 MHz verbauen. Das müßte dann ja auch Codeseitig berücksichtigt werden.
Mit einem MAX232A oder MAX243 lassen sich Datenraten bis 200 kBaud, mit dem MAX3232E sogar 250 kBaud erreichen. Die Kondensatoren um den MAX müßten dann natürlich auch angepaßt werden. Die ICs sind als DIP16 verfügbar und pinkompatibel.

USB sollte ja eh etwas zügiger möglich sein.

MfG Moosi...
Eine genagelte Schraube hält besser als ein geschraubter Nagel.
FPGA v2.61 CORERAM/COREIO/(LCD)
ADAC v1.73 IO8-32/DA12-8(16bit)/AD16-8/CVC/REL8/OUT8
2 DCG(16bit) v2.91 DCP/BF + EDL 2A v1.78 + DIV v3.10 TRMSC
DDS v3.71 TRMSC + DIV v3.10 TRMSC + EDL 10A
Benutzeravatar
Marcel
kann c't-Lab-Module umbauen
kann c't-Lab-Module umbauen
Beiträge: 91
Registriert: 31.12.2008, 17:26
Wohnort: Siegen

Re: ADA-C mit neuer FirmWare als Oszilloskop benutzen ...

Beitrag von Marcel »

Mal noch eine ganz andere Idee: Warum nicht direkt eine Nummer größer? Ulrich Radig hat ein DSO mit einem Atmel entwickelt. Wenn ich mich nicht irre ist das alles unter der GnuGPL, sollte man also verwenden dürfen. Ausgelegt ist das ebenfalls für einen 14,7456 MHz Quarz, platz genug für Syntax-Parser sollte noch sein. Geschrieben hat er ebenfalls in C, das teil kann 40 MS liefern und ist zu finden unter http://www.ulrichradig.de/home/index.php/avr/avr-dso

Wenn meine Programmierkenntnisse ausreichen würden würde ich mich sofort dranmachen, aber leider bin ich (noch) nicht so weit
Stolzer Besitzer eines c`t-Lab:

1x 19" Gehäuse von Segor [ 100% ]
1x IFP ohne LAN [ 100% ]
2x DCG/DCP 16bit [ 100% ]
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: ADA-C mit neuer FirmWare als Oszilloskop benutzen ...

Beitrag von PatHoff »

psclab38 hat geschrieben:Aber bevor Du zuviel selbst neu entwickelst, schau Dir bitte die oben erwähnten Projekte an, da ist das ganze "Framework" um Kommunikation, Panel, Kommandointerpreter etc. schon mal vorhanden.
Wollte ich eigentlich seit gestern machen, aber irgendwie werden mir da keine Files zum herunterladen angezeigt (meine mich erinnern zu können, dass ich das schon mal konnte !??).
Du meintest doch sicherlich das Projekt unter https://sourceforge.net/projects/dcg-firmware, oder ?
moosmichel001 hat geschrieben:um die Daten schneller via RS232 zum PC zu schaufeln würde ja eine deutlich höhere Datenrate des IFP Sinn machen.
Die RS232 ist allerdings nicht das begrenzende Element bei der Sampling-Rate. Sie beeinflusst nur die "Bildwiederholrate" des Oszilloskops. Das begrenzende ist echt der A/D-Wandler des ATmega32. Den kann man nur mit maximal 1/26 der Taktrate betreiben (was auch schon außerhalb der Spezifikation ist). Das ergibt dann bei 16MHz die erwähnten 615kSamples pro Sekunde.
Marcel hat geschrieben:... Ulrich Radig hat ein DSO mit einem Atmel entwickelt. ...
Jaaaa ... das ist natürlich auch ein interessantes Projekt und ein interessanter Ansatz. Allerdings dient der Atmel da nur zum Daten managen. Ein spezieller 40MHz-A/D-Wandler (TLC5540) speichert Daten direkt in ein SRAM (CY7C199) unter Regie eines FPGA-ähnlichen Bausteins (der XC9572 ist ein CPLD, siehe WikiPedia). Der ATmega32 dient dann nur noch zum Auslesen der Daten via CPLD und ausgeben via RS232.
Das ist alles natürlich interessant und erlaubt ganz andere Datenraten. Aber man muss alles komplett neu bauen, und vor allem sich in viele Dinge (Steuerung von CPLD, SRAM- und A/D-Wandler) neu einarbeiten.

Viele 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: ADA-C mit neuer FirmWare als Oszilloskop benutzen ...

Beitrag von psclab38 »

PatHoff hat geschrieben:
psclab38 hat geschrieben:Aber bevor Du zuviel selbst neu entwickelst, schau Dir bitte die oben erwähnten Projekte an, da ist das ganze "Framework" um Kommunikation, Panel, Kommandointerpreter etc. schon mal vorhanden.
Wollte ich eigentlich seit gestern machen, aber irgendwie werden mir da keine Files zum herunterladen angezeigt (meine mich erinnern zu können, dass ich das schon mal konnte !??).
Du meintest doch sicherlich das Projekt unter https://sourceforge.net/projects/dcg-firmware, oder ?
Hallo Patrick,

schau mal hier: http://dcg-firmware.cvs.sourceforge.net/dcg-firmware/
Wir haben keine Downloadpackages gepflegt, nur rudimentär in ct-lab-c-firmware. Schau' Dir vielleicht mal die Quellen aus EDL2 an, oder DDS (die unterscheiden sich in u.a. in der Philosophie für's Panel). Bei beiden hatte ich meine Finger mit drin, und kann Dir weiterhelfen.

Parallel frage ich mal nach, ob denn die ADA-Portierung schon irgendwie spruchreif ist. Ich will eigentlich ungern doppelte Arbeit machen, sooo viel Zeit hab ich nun auch nicht über. Aber andererseits würde es mich schon reizen. Die ADA dürfte ja nicht allzu kompliziert sein.

Ich stimme Dir aber zu, das DSO-Konzept von Ulrich Radig erfordert einen eigenen Hardwareansatz. Es spricht aber nichts dagegen aus der bestehenden ADA-Hardware das Beste rauszuholen.

Viele Grüße
Paul
Benutzeravatar
Marcel
kann c't-Lab-Module umbauen
kann c't-Lab-Module umbauen
Beiträge: 91
Registriert: 31.12.2008, 17:26
Wohnort: Siegen

Re: ADA-C mit neuer FirmWare als Oszilloskop benutzen ...

Beitrag von Marcel »

Das man dazu neue Hardware braucht ist mir nicht entfallen. Wäre ja auch noch schöner wenn der Atmel 3x mehr Samples schaffen würde als er Takte bekommt.
Meine Idee ging ein ganzes Stück weiter als nur eine Portierung der Software. Die Software für das DSO gibt es bereits, Schaltpläne sind auch verfügbar, also könnte man das ganze (mit einem ordentlichen Brocken arbeit versteht sich) so umbauen, dass es als reguläres ct-lab Modul genutzt werden kann. Also die Größe auf Europakarte, die Stecker wie im ct-lab, Möglichkeit ein Panel anzuschließen etc.

Noch eine Sache zu deinem Ursprünglichen Programm: Wie lang kann die Messung sein? Gibt es da eine Technisch bedingte dauer oder rennt der endlos weiter?
Stolzer Besitzer eines c`t-Lab:

1x 19" Gehäuse von Segor [ 100% ]
1x IFP ohne LAN [ 100% ]
2x DCG/DCP 16bit [ 100% ]
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: ADA-C mit neuer FirmWare als Oszilloskop benutzen ...

Beitrag von PatHoff »

Marcel hat geschrieben:Noch eine Sache zu deinem Ursprünglichen Programm: Wie lang kann die Messung sein? Gibt es da eine Technisch bedingte dauer oder rennt der endlos weiter?
Man muss ja vorher eine Länge angeben. Die gibt an, wieviel Datenpunkte gemessen werden sollen. Da für jeden Datenpunkt im Voraus ein Byte reserviert wird, begrenzt der ATmega32-RAM diese Länge (gut 1200 Byte sind noch frei, bei der jetzigen Software-Version). Nachdem er alle Datenpunkte gemessen hat, hört er mit messen auf und wartet auf Abruf der Daten.
Die Zeit, die zum Messen aller Datenpunkte nötig, ergibt sich aus Messpunkte * (Messzeit pro Punkt). Die Messzeit pro Punkt kann minimal 1,625 Mikrosekunden (26 Takte bei 16MHz) und maximal gut 124 Stunden betragen. D.h. 1200 Datenpunkte sind schnellstens nach 1,95mSek und längstens nach 17 Jahren {also fast endlos ;-)} gemessen.
Eine Möglichkeit die Messwerte wie eine Art Ringpuffer wieder von vorn zu beschreiben, wenn man hinten angekommen ist (und dann sozuzagen auf ein End-Ereignis zu triggern) ist leicht möglich, aber z.Z. nicht implementiert.

Gruß !
Patrick
amd-65
kann c't-Lab-Module konstruieren
kann c't-Lab-Module konstruieren
Beiträge: 130
Registriert: 29.11.2007, 16:28

Re: ADA-C mit neuer FirmWare als Oszilloskop benutzen ...

Beitrag von amd-65 »

PatHoff hat geschrieben:Die Messzeit pro Punkt kann minimal 1,625 Mikrosekunden (26 Takte bei 16MHz)...betragen.
Das paßt so nicht. Der A/D-Wandler kann bei 10Bit Auflösung max. mit 200kHz laufen.

Gruß
amd-65
Benutzeravatar
Marcel
kann c't-Lab-Module umbauen
kann c't-Lab-Module umbauen
Beiträge: 91
Registriert: 31.12.2008, 17:26
Wohnort: Siegen

Re: ADA-C mit neuer FirmWare als Oszilloskop benutzen ...

Beitrag von Marcel »

Laut Spezifikation, aber irgendwo erwähnte er glaube ich schon, dass er sich nicht mehr innerhalb dieser bewegt
Stolzer Besitzer eines c`t-Lab:

1x 19" Gehäuse von Segor [ 100% ]
1x IFP ohne LAN [ 100% ]
2x DCG/DCP 16bit [ 100% ]
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: ADA-C mit neuer FirmWare als Oszilloskop benutzen ...

Beitrag von PatHoff »

amd-65 hat geschrieben:Das paßt so nicht. Der A/D-Wandler kann bei 10Bit Auflösung max. mit 200kHz laufen.
Stimmt. Ich betreibe die A/D-Wandler dann außerhalb der Spezifikation. Das ATmega32-Datenblatt erwähnt dazu auf Seite 204 "If a lower resolution than 10 bits is needed, the input clock frequency to the ADC can be higher than 200 kHz to get a higher sample rate." (siehe auch Seite 2, 6. Stichpunkt meiner ganz oben verlinkten PDF-Datei). Wie hoch man gehen kann, steht da leider nicht. Ich betreiben den A/D-Wandler dann mit maximal möglichen 8MHz. Aber das Rechteck-Signal wurde damit immer noch mit nahezu ideal steilen Flanken aufgenommen.

Gruß !
Patrick
amd-65
kann c't-Lab-Module konstruieren
kann c't-Lab-Module konstruieren
Beiträge: 130
Registriert: 29.11.2007, 16:28

Re: ADA-C mit neuer FirmWare als Oszilloskop benutzen ...

Beitrag von amd-65 »

PatHoff hat geschrieben:Wie hoch man gehen kann, steht da leider nicht.
Im Datenblatt steht was von max. 1MHz Clock für die AD-Wandlung.

Gruß
amd-65
Antworten