extmod/machine_i2c: Use writes not reads in i2c.scan().

As per discussion in #2449, using write requests instead of read requests
for I2C.scan() seems to support a larger number of devices, especially
ones that are write-only.  Even a read-only I2C device has to implement
writes in order to be able to receive the address of the register to read.
pull/2494/merge
Radomir Dopieralski 2016-10-08 17:34:46 +02:00 zatwierdzone przez Damien George
rodzic 9e1dec1818
commit eaef6b5324
1 zmienionych plików z 1 dodań i 1 usunięć

Wyświetl plik

@ -272,7 +272,7 @@ STATIC mp_obj_t machine_i2c_scan(mp_obj_t self_in) {
// 7-bit addresses 0b0000xxx and 0b1111xxx are reserved
for (int addr = 0x08; addr < 0x78; ++addr) {
mp_hal_i2c_start(self);
int ack = mp_hal_i2c_write_byte(self, (addr << 1) | 1);
int ack = mp_hal_i2c_write_byte(self, (addr << 1));
if (ack) {
mp_obj_list_append(list, MP_OBJ_NEW_SMALL_INT(addr));
}