Problem: IO60P16-Module internal pullup problem

No answere yet :frowning:

@ miugemelo -

We contacted to Mountaineer’s engineer, they will help us to solve your problem.

Thank you very much for this. Mountaineer answered me 15 minutes ago :slight_smile:

I hope there will be a quick solution soon.

I received a working solution from Microsoft.

There was a problem with the implementation of the softwareI2C code.

I had to replace the following code in the Gadgeteer.Interfaces.SoftwareI2C.DoManagedWriteRead method of the DaisyLink42 class:


sclPort.Active = false;                    // Allow clock pin to float high
while (!sclPort.Read() && !timeout) ;      // Wait for the clock pin to go high
sdaPort.Active = false;                    // Allow data pin to float high

This shoud be wraped into a test condition:


if (readLength == 0 || numWritten != writeLength)
{
    // send stop pulse if not reading, or if write failed
    sclPort.Active = false;                    // Allow clock pin to float high
    while (!sclPort.Read() && !timeout) ;      // Wait for the clock pin to go high
    sdaPort.Active = false;                    // Allow data pin to float high
}
else
{
    // set up for repeated start condition;
    sdaPort.Active = false;
    while (!sdaPort.Read() && !timeout) ;
    sclPort.Active = false;
}

The code appears twice in the method, it only need to be replaced at the first place.

This bug will be fixed in the next release.

Thank you all for your help.