ADA-C-Firmware: Zurückspielen der Kalibrierwerte

Hier werden Themen zur Programmierung des Port-Motherboards ADA-IO und seiner Tochterplatinen IO8-32, Optoschaltstufe, AD16-8 und DA12-8 diskutiert.
Antworten
psclab38
kann c't-Lab-Konstrukteure konstruieren
kann c't-Lab-Konstrukteure konstruieren
Beiträge: 942
Registriert: 25.01.2008, 23:34

ADA-C-Firmware: Zurückspielen der Kalibrierwerte

Beitrag von psclab38 »

PatHoff hat geschrieben:Hallo Paul,

Ich bin gerade dabei, Deine C-Firmware auf meinem ADA-Modul auszuprobieren, weil ich ein Temperatur-Mess-Modul für die ADA in die FirmWare integrieren will. Jetzt hatte ich dazu mit ParamBackupRestore.vi sämtliche Parameter aus meiner Pascal-Firmware 1.73 ausgelesen, Deine C-Firmware geflasht und dann die Parameter wieder mit ParamBackupRestore.vi zurück gespielt. Leider hat danach der ADC bei negativen Spannung (und zwar nur bei negativen Spannung !) gesponnen. Es wurden schnell springende positive oder auch negative Werte angezeigt. Ich habe ein Compilier-Fehler vermutet (Ich hatte Deinen Quellcode mit AVR-Studio 4.16 compiliert) und Dein Compilat geflasht. Und siehe da, der ADC zeigte auch vernüftige negative Werte an. Dann habe ich wieder mit ParamBackupRestore.vi meine alten Kalibrierwerte übertragen und der ADC fing wieder bei negativen Werten an zu spinnen ! Also habe ich ein bisschen mit OFS und SCL am seriellen Terminal gespielt, konnte den Fehler aber so nicht provozieren. Dann fiel mir auf, dass ParamBackupRestore.vi auch bei eigentlich nicht gültigen SubChannel-Nummern (z.B. 108 und 109, 118 und 119, oder 208 und 209) Werte ausliest und auch wieder zurück schreibt (erkennbar an der 1 in der Spalte "1=gültig"). Ich habe also alle für mich nicht nachvollziehbaren SubChannels auf 0 gesetzt (in der durch das VI erzeugten Parameter-Datei) und diese Datei dann per ParamBackupRestore.vi in Deine C-Firmware geschrieben. Und so funktionierte es dann.
Lange Rede, kurzer Sinn: Da scheint es mit ParamBackupRestore.vi eine Inkompatibilität zwischen der Pascal- und der C-Firmware zu geben, weil die Pascal-Firmware wohl solche ungültigen SubChannels wie 108 usw. als gültig zurück meldet, und Deine C-Firmware mit diesen aber nicht klar kommt.

Meine Frage ist nun: Kannst Du das reproduzieren ? Und wenn ja, könnte man die C-Firmware gegen solche ungültigen SubChannels "abhärten" ?

Besten Gruß,
PatHoff
Das kann ich mir gerne am Wochenende ansehen. Ich habe aber eine Bitte: poste doch bitte die modifizierte und unmodifizierte Kalibrierdatei. Dann kann ich gleich Deinen Fall nachstellen. Danke.

Grüße
Paul
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-Firmware: Zurückspielen der Kalibrierwerte

Beitrag von PatHoff »

Hallo Paul,
psclab38 hat geschrieben:Das kann ich mir gerne am Wochenende ansehen. Ich habe aber eine Bitte: poste doch bitte die modifizierte und unmodifizierte Kalibrierdatei. Dann kann ich gleich Deinen Fall nachstellen. Danke.
Das wäre schön, auch wenn das Problem ja eigentlich von dem unorthodoxen Verhalten der Pascal-Firmware kommt. Ich habe die beiden Dateien angehängt.

Viele Grüße,
PatHoff
Dateianhänge
ADA-Kalib-GOOD.txt
geänderte Rücklesedaten von ParamBackupRestore.vi
(4.28 KiB) 234-mal heruntergeladen
ADA-Kalib-BAD.txt
Original-Rücklesedaten der Pascal-Firmware vom ParamBackupRestore.vi
(4.28 KiB) 225-mal heruntergeladen
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-Firmware: Zurückspielen der Kalibrierwerte

Beitrag von psclab38 »

Hallo PatHoff,
PatHoff hat geschrieben:Das wäre schön, auch wenn das Problem ja eigentlich von dem unorthodoxen Verhalten der Pascal-Firmware kommt. Ich habe die beiden Dateien angehängt.
Erst mal danke für die Vorarbeit. Das Problem scheint aber etwas verzwickter oder vielleicht auch banaler zu sein. Wenn ich Deine beiden Dateien einspiele, dann kann ich nur in einem einzigen Bit im EEprom-Dump einen Unterschied feststellen: es ist die Variable "Params.ucAD16Integrate". Damit wird die Integration der Werte aus dem AD16 gesteuert. Mit den eigentlichen Kalibrierwerten hat das aber nichts zu tun. Die habe ich stichprobenweise überprüft und das paßt. Z.B. reagiert die C-Firmware auf Parameter 108, 109, 118 und 119 mit PARERR und akzeptiert sie gar nicht. Der Anfangsverdacht hat sich m. E. nicht bestätigt.

Kannst Du bitte mal prüfen, ob sich Deine Beobachtung des Fehlers mit dem Parameter 157 (Integration) beeinflussen läßt. Nicht, daß ich an der falschen Stelle suche...

Grüße
Paul
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-Firmware: Zurückspielen der Kalibrierwerte

Beitrag von PatHoff »

Hallo Paul,
psclab38 hat geschrieben:Kannst Du bitte mal prüfen, ob sich Deine Beobachtung des Fehlers mit dem Parameter 157 (Integration) beeinflussen läßt. Nicht, daß ich an der falschen Stelle suche...
Ja, da steckt der Fehler ! Ich habe frisch die heruntergeladene ADAFirmware_Beta.hex geflasht. Beim ersten Start steht auf dem Display "Init EEP" und IDN meldet "#0:254=0.1 [ADA-C by PSC; AD16 IO32 LCD ]" zurück. Dann habe ich SubChannel 157 ausgelesen => 0.
Wenn ich jetzt z.B. -5V an ADC0 (SubChannel 10) anlege werden korrekt -5V ausgelesen. Dann habe ich 1 auf SubChannel 157 geschrieben => stark schwankende Anzeige auf SubChannel 10 bei -5V am Eingang. Wieder 0 auf SubChannel 157 schreiben und die Anzeige ist auch wieder ordentlich bei -5V.

Scheint also irgendwas beim Integrieren schief zu laufen ???

Betsen Gruß,
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-Firmware: Zurückspielen der Kalibrierwerte

Beitrag von psclab38 »

Hallo Patrick,
PatHoff hat geschrieben:Scheint also irgendwas beim Integrieren schief zu laufen ???
so isses. War so ein typischer Fehler, der nur in C passieren kann; was hab' ich gesucht! Liegt aber am Programmierer.

Den neuen Code habe ich hochgeladen.
Danke Dir für's Fehlerfinden!

Grüße
Paul
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-Firmware: Zurückspielen der Kalibrierwerte

Beitrag von PatHoff »

Hallo Paul,
psclab38 hat geschrieben:Den neuen Code habe ich hochgeladen.
Ja, danke. Funktioniert jetzt auch mit der unveränderten Kalibrierdaten-Datei, die ich mit der Pascal-Firmware und ParamBackupRestore.vi erstellt hatte.

Besten Gruß,
Patrick
Antworten