Hallo,
ich habe gerade versucht, bei meinem ACV die Skalierung zu ändern, um die Spannung in Millivolt korrekt anzeigen zu lassen. Leider wirkt der "SCL" Befehl über die serielle Schnittstelle mit den im Syntax-Dokument von Carsten Meyer angegebenen Parametern ausschließlich auf den linken Kanal, der rechte Kanal bleibt völlig unbeeinflusst. Hat jedman schon mal damit Erfahrung gemacht oder dieses Problem vielleicht schon behoben?
besten Dank schon mal
Michael
Skalierung der Anzeige klappt nur für den linken Kanal
Re: Skalierung der Anzeige klappt nur für den linken Kanal
Soviel habe ich mittlerweile mit Hilfe von ParamBackupRestore.vi rausgefunden: die Werte für den linken Kanal sind in den Parametern 200 bis 207 (8 Messbereiche), die für den rechten Kanal scheinbar in 210 bis 217. Bloß kann man in letztere nicht speichern, weder per serieller Schnittstelle noch per vi. Da scheint wohl ein Schreibschutz drauf zu sein. Weiß jemand, wie man den entfernt?
besten Dank!
besten Dank!
Re: Skalierung der Anzeige klappt nur für den linken Kanal
Es ist sogar noch interessanter: Speichert man beispielsweise einen Parameter in 217, dann landet der in 207, 217 wird nicht geändert.
Re: Skalierung der Anzeige klappt nur für den linken Kanal
Hallo Michael,
wie Du der geringen Anzahl von Beiträgen zum ACV entnehmen kannst, haben nicht viele Leute diese Baugruppe. Ich versuche aber mal so zu "helfen".
Das ist noch ok. Aber hier:
für links und rechts wird beidesmal das Array für links ADCscalesL beschrieben. Damit wäre Dein Problem bestätigt. Ob das alles ist, kann ich jetzt auf die Schnelle nicht beurteilen.
Leider hat von uns keiner den kommerziellen Compiler. Ob sich der Aufruf im Hexfile patchen läßt, kann ich nicht sagen.
Tut mir leid.
Viele Grüße
Paul
wie Du der geringen Anzahl von Beiträgen zum ACV entnehmen kannst, haben nicht viele Leute diese Baugruppe. Ich versuche aber mal so zu "helfen".
Wenn man in den Original-Quellcode schaut, dann fällt einem nach ein paar Blicken auf, daß da was nicht stimmt.Mino hat geschrieben:Es ist sogar noch interessanter: Speichert man beispielsweise einen Parameter in 217, dann landet der in 207, 217 wird nicht geändert.
Code: Alles auswählen
procedure ParseGetParam
200..207:
ParamInt:=integer(ADCscalesL[myIndex]);
|
210..217:
ParamInt:=integer(ADCscalesR[myIndex]);
|
Code: Alles auswählen
procedure ParseSetParam
200..207:
ADCscalesL[myIndex]:=word(ParamInt);
|
210..217:
ADCscalesL[myIndex]:=word(ParamInt);
|
Leider hat von uns keiner den kommerziellen Compiler. Ob sich der Aufruf im Hexfile patchen läßt, kann ich nicht sagen.
Tut mir leid.
Viele Grüße
Paul
- ompf
- kann c't-Lab-Module konstruieren
- Beiträge: 168
- Registriert: 19.01.2008, 13:03
- Wohnort: Dortmund
Re: Skalierung der Anzeige klappt nur für den linken Kanal
Dem Assemblerfile lässt sich entnehmen, dass der Compiler doof genug war, die beiden cases nicht zusammenzufassen. ADCscalesL wird im Label ACV._L0271 geschrieben, ADCscalesR in ACV._L0275.
Du musst also die folgende Struktur finden und darin die Parameter der beiden LDI-anweisungen ändern.
Die beiden LDIs müsste als "EA E0 F0 E0" codiert sein. Der neue Wert ist dann "EA E1 F0 E0". Die Bytefolge kommt viermal vor, die letzte ist die richtige.
Ich hab's nicht ausprobiert, daher ohne Gewähr...
Gruß
Patrick
Du musst also die folgende Struktur finden und darin die Parameter der beiden LDI-anweisungen ändern.
Code: Alles auswählen
ACV._L0271:
.BLOCK 795
.LINE 795
LDI _ACCCLO, ACV.ADCscalesL AND 0FFh
LDI _ACCCHI, ACV.ADCscalesL SHRB 8
PUSH _ACCCLO
PUSH _ACCCHI
LDD _ACCA, Y+000h
MOV _ACCB, _ACCA
CLR _ACCA
LSL _ACCB
ROL _ACCA
POP _ACCCHI
POP _ACCCLO
ADD _ACCCLO, _ACCB
ADC _ACCCHI, _ACCA
LDS _ACCB, ACV.ParamInt
LDS _ACCA, ACV.ParamInt+1
MOVW _ACCALO, _ACCB
CALL SYSTEM._WriteEEp16
.ENDBLOCK 796
.BRANCH 20,ACV._L0260
JMP ACV._L0260
Ich hab's nicht ausprobiert, daher ohne Gewähr...
Gruß
Patrick
Re: Skalierung der Anzeige klappt nur für den linken Kanal
an beide antwortenden Forumsteilnehmer: Ganz herzlichen Dank. Ich habe eure Tipps erst jetzt gesehen, da ich das ctlab zwar produktiv einsetze, aber die Anzeige (noch) nicht verwende, weil sie bislang eben rechts nur Hausnummern anzeigt. Ich werde mal versuchen, das Assembler-File zu patchen - Abenteuer muss sein.
Michael
Michael