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


