Проблема в следующем- пытаюсь работать с HMC 5883L в режиме автоинкремента адреса., софтовый i2C.
Cами функии i2с работают на аналогичном хонейвелловском компасе ( HMC 6352) без проблем.
Cудя по даташиту после инициализации ( или просто после включения- по умолчанию стоит режим работы по запросу)
надо просто подать адрес на чтение и потом 6 раз подряд прочитать данные.
то есть ST- DA- RD -RD-RD-RD-RD-RD-SP ( DA-divice adress, RD- read data, ST- start, SP- stop)
Однако после этого алгоритма устройство "не отпускает" шину SDA.. и дальнейшее считывание превращается в мешанину импульсов
Если перед этим принудительно командой записать адрес регистра (3), (ST-DA-RA-SP)
то происходть то же самое.
Если я делаю стоп после одной регистровой пары ( (ST-DA-RA-SP) - задали адрес, затем прочитали 2 регистра подряд (ST- DA- RD -RD-SP),
то устройство шину отпускает, но считанные данные в регистре не меняются . (они кажется и не должны меняться пока не прочитаешь подряд все регистры)
(хотя данные в регистре правдоподобны)