Hi/Lo in I2COut geht nicht - wieso ?

Harry
Moderator
Avatar
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2132
Registered: 03 / 2003
Subject:

Hi/Lo in I2COut geht nicht - wieso ?

 · 
Posted: 12.10.2010 - 20:10  ·  #1
Hallo @ all,

ich hab da was, das ich nicht verstehe - aber ich würde es gern verstehen.

Das hier geht nicht:
Code

Procedure SetDAC(Value:Word);
  Begin
    I2COut($20,$02,Lo(Value));
    I2COut($20,$03,Hi(Value));
  End SetDAC;


..... und das hier geht:
Code

Procedure SetDAC(Value:Word);
  Var LoDAC, HiDAC : Byte;
  Begin
    LoDAC:=Lo(Value);
    HiDAC:=Hi(Value);
    I2COut($20,$02,LoDAC);
    I2COut($20,$03,HiDAC);
  End SetDAC;


Angesprochen wird ein R2R-DAC-Wandler aufgebaut mit einem PCA9555. Jetzt da ich weiß wie es funktioniert ist es nicht schlimm, aber wieso ist das so ?

gruss
Harry
rh
Administrator
Avatar
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: Hi/Lo in I2COut geht nicht - wieso ?

 · 
Posted: 12.10.2010 - 20:55  ·  #2
Hallo Harry,

diverse Treiber, wie auch I2Cout, erwarten reine Variablen oder Konstante. Lo(value) ist eine Funktion. die einen Wert liefert! Aber so geht es auch:
Code
Procedure SetDAC(Value : Word);
Var 
  LoDAC[@value]   : byte;
  HiDAC[@value+1] : Byte;
Begin
  I2COut($20, $02, LoDAC);
  I2COut($20, $03, HiDAC);
End SetDAC;


rolf
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   50   64 · Page-Gen-Time: 0.025672s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI