Parameter Error

werner mehl
Benutzer
Avatar
Gender:
Age: 68
Posts: 49
Registered: 02 / 2012
Subject:

Parameter Error

 · 
Posted: 30.03.2018 - 07:37  ·  #1
Hallo zusammen
ich habe gerade ein Problem beim compilieren mit einer Unit

Compiler Version 5.09.25 Opt. Version 3.4.8.1

Ich erhalte folgende Fehlermeldungen

Beim compilieren ohne Optimizer
internal Assembler Error 4653
und Verweis auf diese mov Befehle

.LINE 89
MOV _ACCB, MS_8607.humidity
MOV _ACCA, MS_8607.humidity+1
MOV _ACCALO, MS_8607.humidity+2
MOV _ACCAHI, MS_8607.humidity+3
PUSH _ACCB

Mit Optimizer
SMS_Remote.asm *3555,1# : Error: "MS_8607.humidity" is not a register
SMS_Remote.asm *3556,1# : Error: "MS_8607.humidity+1" is not a register
SMS_Remote.asm *3557,1# : Error: "MS_8607.humidity+2" is not a register
SMS_Remote.asm *3558,1# : Error: "MS_8607.humidity+3" is not a register
SMS_Remote.asm *3590,1# : Error: "MS_8607.humidity" is not a register
SMS_Remote.asm *3591,1# : Error: "MS_8607.humidity+1" is not a register
SMS_Remote.asm *3592,1# : Error: "MS_8607.humidity+2" is not a register
SMS_Remote.asm *3593,1# : Error: "MS_8607.humidity+3" is not a register
SMS_Remote.asm *4651,1# : Error: "MS_8607.Temp" is not a register
SMS_Remote.asm *4652,1# : Error: "MS_8607.Temp+1" is not a register

Mit der Compiler Version 3.09.34 ohne Opt.
internal Assembler Error 4653

SMS_Remote.asm *4422,1# : Error: parameter error
SMS_Remote.asm *4423,1# : Error: parameter error
SMS_Remote.asm *4424,1# : Error: parameter error
SMS_Remote.asm *4425,1# : Error: parameter error
und Verweis auf diese mov Befehle

.LINE 90
MOV _ACCB, MS_8607.humidity
MOV _ACCA, MS_8607.humidity+1
MOV _ACCALO, MS_8607.humidity+2
MOV _ACCAHI, MS_8607.humidity+3

Der Optimizer Version 3.5.5.3 compiliert, produziert keine Fehler

Hier ein Codefetzen aus dem entsprechenden Bereich.

Code
var humidity : Float;
    D3      : LongInt;

  humidity := (-6.0 + (125.0) * (Float(D3) / 65536));
  humidity := humidity+(20-24.8) * Tcoeff;
  WriteLn(SeroutD1,'Humid ' + FloatToStr(humidity:6:1)+'%RH');
 


Irgendwelche Ideen?
Danke
Harry
Moderator
Avatar
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2134
Registered: 03 / 2003
Subject:

Re: Parameter Error

 · 
Posted: 30.03.2018 - 08:47  ·  #2
Hallo Werner

Code
humidity := (-6.0 + (125.0) * (Float(D3) / 65536)); 
ist doch das gleiche wie
humidity := (-6.0 + 125.0 * (Float(D3) / 65536)); 
oder wie
humidity := 119 * (Float(D3) / 65536));
und wie
humidity := Float(D3) * 0.0018157959;


Oder rechnet AVRCo Punkt vor Strich??????

Dann wäre das richtig:
Code

humidity := (-6.0) + (Float(D3) * 0.0019073486);


Gruss
Harry
werner mehl
Benutzer
Avatar
Gender:
Age: 68
Posts: 49
Registered: 02 / 2012
Subject:

Re: Parameter Error

 · 
Posted: 30.03.2018 - 11:13  ·  #3
Hallo Harry,
besten Dank! Du hast natürlich recht. Das kommt davon, wenn man fremden (hier Phyton) Code 1:1 und ohne nachzudenken übersetzt. :angel5:
Merlin
Administrator
Avatar
Gender:
Age: 24
Posts: 1409
Registered: 03 / 2005
Subject:

Re: Parameter Error

 · 
Posted: 31.03.2018 - 11:39  ·  #4
The internal assembler error is almost certainly because your code exceeds flash size. With the optimiser it is smaller ;-)
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 15 · Cache Hits: 14   79   93 · Page-Gen-Time: 0.023292s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI