Vielleicht kannst du ja damit was anfangen:
Code:
Procedure ReadAT;
Var Error : Integer;
JT : Word; // Chip-Temperatur
B1,B2,B3,B4 : Byte;
Dummy : Byte;
Begin
For Dummy:=0 to 1 do
Excl(PortC,5+Dummy);
SDelay(200);
B1:=SPIInpByte1;
B2:=SPIInpByte1;
B3:=SPIInpByte1;
B4:=SPIInpByte1;
Error:=((256*Integer(B3))+Integer(B4)) and $0007;
If Error>0
then
ATError[Dummy]:=Error;
else
ATError[Dummy]:=0;
EndIf;
JT:=((Word(B3)*256)+Word(B4)) SHR 8;
If (B1 and $80)=$80
then
AT[Dummy]:=(-1*((((not((256*Integer(B1))+Integer(B2))) and $0FFF)+1) SHR 4))-JT+20;
else
AT[Dummy]:=(((256*Integer(B1))+Integer(B2)) SHR 4)-JT + 21; // Temperatur-Korrektur
EndIf;
Incl(PortC,5+Dummy);
EndFor;
End ReadAT;
PortC,5 und6 sind die /CS der beiden MAX (ich hatte 2 in der Schaltung).
Harry
Lesezeichen