raspberry-sharp / raspberry-sharp-io

A .NET/Mono IO Library for Raspberry Pi
339 stars 139 forks source link

Repeated Start Condition - How to code? #91

Open moelski opened 7 years ago

moelski commented 7 years ago

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

JTrotta commented 6 years ago

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 commented 6 years ago

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

moelski commented 6 years ago

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

JTrotta commented 6 years ago

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