Hallo,
habe einen Codeschnipsel den ich gerne in Pascal übersetzen würde.
Es klappt leider nicht.
Sub I2c_read(device_adres As Byte , Reg_adres As Byte , Wert_count As Byte )
Local X As Byte
Local Y As Byte
Y = Wert_count - 1
I2cstart 'Start I2C
I2cwbyte Device_adres 'Sende Slave Adresse
I2cwbyte Reg_adres 'Register Adresse
I2cstart
Incr Device_adres
I2cwbyte Device_adres 'sende Slave Adresse +1 für Lesen
If Wert_count > 1 Then
For X = 1 To Y
I2crbyte Wert_array(x) , Ack 'lese Wert
Next
End If
I2crbyte Wert_array(wert_count) , Nack 'lese Wert
I2cstop
Waitms 10
End Sub
Procedure I2c_read(device_adres:Byte;Reg_adres:Byte;Wert_count:Byte);
Var X : Byte;
Y : Byte;
begin
Y:= Wert_count - 1;
bool:= I2Cout(device_adres,Reg_adres);
inc(Device_adres);
bool:= I2Cout(device_adres); // geht so nicht! Data fehlt.
If Wert_count > 1 Then
For X:= 1 To Y do
bool:= I2Cinp(Wert_array[x]); //, Ack); // geht so nicht! Adr fehlt.
EndFor;
EndIf;
bool:= I2Cinp(Wert_array[Wert_count]); //, Nack); // geht so nicht! Adr fehlt.
// mDelay(10);
End I2c_read;
An den drei Zeilen wo am Ende "geht so nicht!" scheitert es.
Vielleicht ist auch schon der der Ansatz falsch.
Wie kann man das zum Laufen bringen?
Danke
Gruß
Mathias
habe einen Codeschnipsel den ich gerne in Pascal übersetzen würde.
Es klappt leider nicht.
Code
Sub I2c_read(device_adres As Byte , Reg_adres As Byte , Wert_count As Byte )
Local X As Byte
Local Y As Byte
Y = Wert_count - 1
I2cstart 'Start I2C
I2cwbyte Device_adres 'Sende Slave Adresse
I2cwbyte Reg_adres 'Register Adresse
I2cstart
Incr Device_adres
I2cwbyte Device_adres 'sende Slave Adresse +1 für Lesen
If Wert_count > 1 Then
For X = 1 To Y
I2crbyte Wert_array(x) , Ack 'lese Wert
Next
End If
I2crbyte Wert_array(wert_count) , Nack 'lese Wert
I2cstop
Waitms 10
End Sub
Code
Procedure I2c_read(device_adres:Byte;Reg_adres:Byte;Wert_count:Byte);
Var X : Byte;
Y : Byte;
begin
Y:= Wert_count - 1;
bool:= I2Cout(device_adres,Reg_adres);
inc(Device_adres);
bool:= I2Cout(device_adres); // geht so nicht! Data fehlt.
If Wert_count > 1 Then
For X:= 1 To Y do
bool:= I2Cinp(Wert_array[x]); //, Ack); // geht so nicht! Adr fehlt.
EndFor;
EndIf;
bool:= I2Cinp(Wert_array[Wert_count]); //, Nack); // geht so nicht! Adr fehlt.
// mDelay(10);
End I2c_read;
An den drei Zeilen wo am Ende "geht so nicht!" scheitert es.
Vielleicht ist auch schon der der Ansatz falsch.
Wie kann man das zum Laufen bringen?
Danke
Gruß
Mathias
Attachments
Filename: | I2C_read.png |
Filesize: | 61.68 KB |
Title: | |
Download counter: | 185 |