Hallo zusammen,
Ich habe ein Problem mit der slave ACK. Hier möchte ich der Temperatur messen, dafür benutze ich eine Bibliothek von Asynchron Pro (
https://github.com/TurboPack/AsyncPro).
Das Problem ist, dass ich kein ACK von Slave schicken kann. Das ist mein Quellcode und Vielen Danke für eure Hilfe. LG
muss normalaweise so sein (Anhängen foto):
mein Delphi Code :
unit Unit1;
interface
uses
Winapi.Windows,
Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
Vcl.Graphics,
Vcl.Controls,
Vcl.Forms,
Vcl.Dialogs , i2cusb,
Vcl.StdCtrls,
Vcl.ComCtrls;
const
cTimeoutInMs = 1000;
cTimeoutInit = 5000;
SCL90 = 'A'; { SCL 90 kHz PCD8584 Clocktakt }
SCL45 = 'B'; { SCL 45 kHz }
SCL11 = 'C'; { SCL 11 kHz }
SCL1_5 = 'D'; { SCL 1.5kHz }
type
//Ti2cUsb = class(TObject);
TForm1 = class(TForm)
Button1: TButton;
StatusBar1: TStatusBar;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Déclarations privées }
public
end;
var
Form1: TForm1;
ic, slave : Ti2cUsb;
Temperatur1 : Byte;
Temperatur2 : Byte;
Wert : Double ;
Byte1, Byte2 :Byte;
a : Double;
implementation
{$R *.dfm}
Function i2cLM75_in(Var Temperatur1 , Temperatur2 : Byte):double; //Liest einen Wert (2 Byte) vom LM75 Temperatursensor
var Byte1, Byte2 :byte;
Wert : double ;
begin
Byte1 := Temperatur1; //1. Byte Wert vom LM75 lesen
Byte2 := Temperatur2;
If (Byte1 And 128) = 0 Then
Wert := Byte1 //Temperatur Vorkomma >= 0°C
Else
Wert := Byte1 - 255; //Temperatur Vorkomma < 0°C
If ((Byte2 And 128) <> 0) Then
Wert := Wert + 0.5;
i2cLM75_in := Wert;
End;
procedure TForm1.Button1Click(Sender: TObject);
begin
ic := Ti2cUsb.Create;
slave := Ti2cUsb.Create;
//Check if the I2C is Initialized
Repeat
ic.Init(4,SCL90);
Until ic.Is_Initialized = True;
ic.relais_on ;
Sleep(1000);
ic.start_iic(False,146,'w'); // Start LM75
ic.wr_byte_iic(0);
ic.stop_iic;
ic.restart_iic (False, 147 , 'r');
ic.rd_byte_iic(Temperatur1,False);
ic.rd_byte_iic(Temperatur2,True);
ic.relais_off ;
ic.stop_iic;
a := i2cLM75_in(Temperatur1 , Temperatur2 );
ShowMessage(a.ToString);
end;
End.