ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
19 апреля
1022580 Топик полностью
=AK= (31.07.2020 03:12, просмотров: 673) ответил Илья на еще гипотеза. используется I2C аппаратный или программный? Программный по правильному нужно делать через управление TRIS (эмуляция ОК/OD) а не PORT. По стандарту Slave может затягивать SCL. Если управлять через PORT, то редко (но возможно) появление конфликта (Slave удерживает SCL в нуле если не готов, а Master тянет его к 1) - отсюда лишние токи и/или неправильное считывание данных и/или подвешивание Slave (с автоматическим "развешиванием" последующим общением).
I2C программный. "Затягивание SCL" не используется. 

Чтобы его не было:

- после операции записи в EEPROM выдерживается задержка 10 мс
- в SHT35 выбран режим работы без затяжки SCL

В любом случае непонятно как быть с п.4), когда в память всего лишь добавляется код умножения 16х16, но он не вызывается, работает "старый" код со сдвигом впpаво на 6 разрядов. Почему в п.2) этот код работает нормально, а в п.4) - дает "осциллирующий" результат? Просто абсурд какой-то...