in reply to I2C help (from python)

So it's really this line self.DEVICE_REG_DATA &= ~(0x1<<0) that's causing my trouble.
This is just a wild guess since I don't know python, but I suspect it clears the least significant bit of the value stored in the DEVICE_REG_DATA variable.

The &= looks like a read-modify-write register operation. My guess is that &= is the AND-EQUAL bit-wise operator and ~ is the bit-wise negation operator. (0x1 << 0) is simplified as 0x1, which is represented in binary format as 0000_0001 (8 bits). 0000_0001 negated is 1111_1110. So the line is probably equivalent to the pseudo-code:

self.DEVICE_REG_DATA = self.DEVICE_REG_DATA & 1111_1110

UPDATE: Added note to explicitly state that the code example I gave is pseudo.

Replies are listed 'Best First'.
Re^2: I2C help (from python)
by BrowserUk (Patriarch) on Nov 30, 2015 at 16:03 UTC
    So the line is probably equivalent to: 01 self.DEVICE_REG_DATA = self.DEVICE_REG_DATA & 1111_1110

    That would have to be: self.DEVICE_REG_DATA = self.DEVICE_REG_DATA &0b1111_1110


    With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    "Science is about questioning the status quo. Questioning authority". I knew I was on the right track :)
    In the absence of evidence, opinion is indistinguishable from prejudice.