Hi/Lo in I2COut geht nicht - wieso ?

Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 60
Beiträge: 2155
Dabei seit: 03 / 2003
Betreff:

Hi/Lo in I2COut geht nicht - wieso ?

 · 
Gepostet: 12.10.2010 - 20:10 Uhr  ·  #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
Geschlecht:
Herkunft: Germany
Alter: 25
Homepage: e-lab.de
Beiträge: 5558
Dabei seit: 03 / 2002
Betreff:

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

 · 
Gepostet: 12.10.2010 - 20:55 Uhr  ·  #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
Gewählte Zitate für Mehrfachzitierung:   0

Registrierte in diesem Topic

Aktuell kein registrierter in diesem Bereich

Die Statistik zeigt, wer in den letzten 5 Minuten online war. Erneuerung alle 90 Sekunden.
MySQL Queries: 15 · Cache Hits: 14   50   64 · Page-Gen-Time: 0.03621s · Speichernutzung: 2 MB · GZIP: ein · Viewport: SMXL-HiDPI