raspberry-sharp/raspberry-sharp-io

Repeated Start Condition - How to code?

moelski opened this issue · 4 comments

Hi @ALL,

today I tried to implement the AS3935 Lightning Chip in my application. But I run into problems reading the Registers separately.

My first attempt was this:
i2cConnection.Write(0x01); byte res = i2cConnection.ReadByte();
This should read the Byte from Register 0x01. But I alsways get the data from Register 0x00.

My second try was this Code:
var readAction = new I2cReadAction(1); i2cConnection.Execute(new I2cTransaction(new I2cWriteAction(0x01), readAction)); Console.WriteLine($"ergebnis : {readAction.Buffer[0]}");
But this also did not work.

If I read a bulk of data then it works. But that is not a good solution because you have to read to many data at a time.

For me it look like a Problem with the repeated start condition (which is needed for the AS3935 device). I found some notes about changes for the repeated start. But how can I use it?

Any hint would be much appreciated !

regards Dominik

Got the same problem with this code:
I2cWriteAction writeAction = new I2cWriteAction(register); I2cReadAction readAction = new I2cReadAction(new byte[byteCount]); I2cTransaction transaction = new I2cTransaction(writeAction, readAction); Execute(transaction); return readAction.Buffer;

Have a look to my new libraries. Now repeated start is working

Hi !
Which libraries did you mean?
I can´t find any new stuff.

SORRY got it.
https://github.com/JTrotta/raspberry-sharp-io

regards Dominik