raspberry-sharp-io icon indicating copy to clipboard operation
raspberry-sharp-io copied to clipboard

Repeated Start Condition - How to code?

Open moelski opened this issue 8 years ago • 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

moelski avatar Jul 21 '17 20:07 moelski

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;

JTrotta avatar Sep 25 '17 10:09 JTrotta

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

JTrotta avatar Oct 21 '17 05:10 JTrotta

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

moelski avatar Nov 02 '17 08:11 moelski

This one: https://github.com/JTrotta/raspberry-sharp-io/tree/master/Raspberry.IO.InterIntegratedCircuit

I rewrote it, and it works now. Try nuget packages. https://www.nuget.org/packages/Raspberry.IO.InterIntegratedCircuit3

JTrotta avatar Nov 02 '17 09:11 JTrotta