• Okay, did some more testing here:

    With software I2C, this just plain doesnt work. On an official Espruino Pico:

     _____                 _
    |   __|___ ___ ___ _ _|_|___ ___
    |   __|_ -| . |  _| | | |   | . |
    |_____|___|  _|_| |___|_|_|_|___|
              |_| http://espruino.com
     1v95 Copyright 2017 G.Williams
    >
    =undefined
    >test() //with hardware I2C1 on pins B6, B7
    new Uint8Array([5, 24, 99, 107, 32, 116, 104, 101, 32, 112])
    new Uint8Array([7, 26, 99, 107, 32, 116, 104, 101, 32, 112])
    =undefined
    >
     _____                 _
    |   __|___ ___ ___ _ _|_|___ ___
    |   __|_ -| . |  _| | | |   | . |
    |_____|___|  _|_| |___|_|_|_|___|
              |_| http://espruino.com
     1v95 Copyright 2017 G.Williams
    >
    =undefined
    >test() //software I2C on B6, B7
    new Uint8Array([252, 33, 0, 32, 1, 0, 0, 0, 10, 0])
    new Uint8Array([252, 33, 0, 32, 1, 0, 0, 0, 10, 0])
    =undefined
    

    The first one, with hardware I2C, is reading actual data off the chip. I do not know where the garbage that it's reading back with software I2C is coming from....

    Reads using software I2C similarly give bad values on the ESP8266, while hardware I2C can at least read the correct values off the chip...

    |   __|___ ___ ___ _ _|_|___ ___
    |   __|_ -| . |  _| | | |   | . |
    |_____|___|  _|_| |___|_|_|_|___|
              |_| http://espruino.com
     1v95 Copyright 2017 G.Williams
    Espruino is Open Source. Our work is supported
    only by sales of official boards and donations:
    http://espruino.com/Donate
    Flash map 4MB:1024/1024, manuf 0xe0 chip 0x4016
    >
    =undefined
    >test()
    new Uint8Array([200, 31, 255, 63, 200, 243, 255, 63, 220, 53])
    new Uint8Array([200, 31, 255, 63, 200, 243, 255, 63, 172, 53])
    =undefined
    >
    
    
    >
    >
     _____                 _
    |   __|___ ___ ___ _ _|_|___ ___
    |   __|_ -| . |  _| | | |   | . |
    |_____|___|  _|_| |___|_|_|_|___|
              |_| http://espruino.com
     1v95 Copyright 2017 G.Williams
    Espruino is Open Source. Our work is supported
    only by sales of official boards and donations:
    http://espruino.com/Donate
    Flash map 4MB:1024/1024, manuf 0xe0 chip 0x4016
    >
    =undefined
    >test()
    new Uint8Array([7, 26, 99, 107, 32, 116, 104, 101, 32, 112])
    new Uint8Array([7, 26, 99, 107, 32, 116, 104, 101, 32, 112])
    =undefined
    
    

    It would appear that software I2C is totally broken? How come this doesn't show up with other devices... this isn't subtle.

    Yet the AT24 I am using is clearly OK because it works fine with hardware I2C on the Pico!

About

Avatar for DrAzzy @DrAzzy started