Trashy_2 1 29 августа, 2016 Опубликовано 29 августа, 2016 · Жалоба Куча девайсов на I2C. Иногда у какого-либо девайса происходит затык и он притягивает к земле или дату или клок. В итоге раком встаёт ВСЁ! Как схемотехнически избежать подобных ситуаций? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
holy0dmin 0 29 августа, 2016 Опубликовано 29 августа, 2016 · Жалоба Предусмотреть сброс всех/только глючных устройств шины по питанию. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jury093 2 29 августа, 2016 Опубликовано 29 августа, 2016 · Жалоба Куча девайсов на I2C. Иногда у какого-либо девайса происходит затык и он притягивает к земле или дату или клок. В итоге раком встаёт ВСЁ! Как схемотехнически избежать подобных ситуаций? если у чипов есть вход "reset", то дергать им, если более глобально - то рубить питание через ключ.. в теории, есть еще возможность развешивать через саму i2c, но это если чип поддерживает данную процедуру.. самый тяжелый вариант - мультимастеринг.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Trashy_2 1 29 августа, 2016 Опубликовано 29 августа, 2016 · Жалоба Предусмотреть сброс всех/только глючных устройств шины по питанию. А как узнать кто из них глючный? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
holy0dmin 0 29 августа, 2016 Опубликовано 29 августа, 2016 · Жалоба Статистически, во время разработки. У меня, например, так делал барометр BMP280, а акселерометр MPU-6050 не глючил ни разу. Но, по факту, лучше перезагружать по питанию всё, что есть на шине. Ещё стоит попробовать снизить номинал подтягивающих резисторов. Часто устройства на шине заглючивают не просто так. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Trashy_2 1 29 августа, 2016 Опубликовано 29 августа, 2016 · Жалоба Статистически, во время разработки. У меня, например, так делал барометр BMP280, а акселерометр MPU-6050 не глючил ни разу. Но, по факту, лучше перезагружать по питанию всё, что есть на шине. Ещё стоит попробовать снизить номинал подтягивающих резисторов. Часто устройства на шине заглючивают не просто так. Там железяка с кучей слотов, в который на ходу вставляют и выдёргивают блоки. У каждой свой прогер(даже из других регионов). И каждому нужно доказывать, что это его металлолом гонит. А так, адреса протестил, его глючный - в ауте. Вот и пусть сам колупается пока не очухается. Я тут думал через транзистор коммутировать, на базу которого через кондёр сигнал заводить. Типа, импульсы проходят, а постоянка хрен. Типа вотчдог на конденсаторе... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jury093 2 29 августа, 2016 Опубликовано 29 августа, 2016 · Жалоба Ещё стоит попробовать снизить номинал подтягивающих резисторов. Часто устройства на шине заглючивают не просто так. ну и не забыть проинтить чипы после сброса/питания, а в линусе сначала выгрузить модули драйверов, а уж потом ребутать чипы на шине.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex11 5 29 августа, 2016 Опубликовано 29 августа, 2016 · Жалоба Если на шине только слейвы, то почти всегда помогает поставить SDA в high и подать 9 SCL импульсов. Если устройство не ломаное совсем, то перестает держать шину. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vladec 10 30 августа, 2016 Опубликовано 30 августа, 2016 · Жалоба А как Вы подаете на SCL импульсы если он, как раз таки, удерживается в нуле? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex11 5 30 августа, 2016 Опубликовано 30 августа, 2016 · Жалоба Если виснет так, то только ресет или питание. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 234 30 августа, 2016 Опубликовано 30 августа, 2016 · Жалоба Если на шине только слейвы, то почти всегда помогает поставить SDA в high и подать 9 SCL импульсов. Если устройство не ломаное совсем, то перестает держать шину. И каким образом это поможет? Например устройство - EEPROM, которая на операции записи пропустила (из-за помех) один клок. Соответственно - держит ACK. Ну подадите Вы ещё 9 клоков - она будет ACK для след. байта держать. Как это поможет? Или любое устройство, принимающее блок байт, подтверждающее каждый байт ACK-ом. И если после такого ACK-а получает СТОП-условие - завершающее транзакцию, а если не получает - запускает счётчик на ещё 9 клоков. Тогда уж, чтобы точно освободить шину, надо 9 раз сформировать СТОП-условие на шине. Или даже ещё больше раз. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HardEgor 81 30 августа, 2016 Опубликовано 30 августа, 2016 · Жалоба Там железяка с кучей слотов, в который на ходу вставляют и выдёргивают блоки. . Ставить на каждый слот отдельный контроллер I2C. По другому никак. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 49 30 августа, 2016 Опубликовано 30 августа, 2016 · Жалоба А как Вы подаете на SCL импульсы если он, как раз таки, удерживается в нуле? Че-то не понял, если устройство - слейв, как оно вообще что-то на клок выставляет?? В топку такие "умные" девайсы Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
holy0dmin 0 30 августа, 2016 Опубликовано 30 августа, 2016 · Жалоба Че-то не понял, если устройство - слейв, как оно вообще что-то на клок выставляет?? В топку такие "умные" девайсы А почему нет? Это называется Clock Stretching - когда микросхема EEPROM не успевает записать данные, она придерживает SCL внизу, и мастер понимает, что устройство занято и не надо его грузить новыми данными. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lagman 1 19 сентября, 2016 Опубликовано 19 сентября, 2016 · Жалоба А почему нет? Это называется Clock Stretching - когда микросхема EEPROM не успевает записать данные, она придерживает SCL внизу, и мастер понимает, что устройство занято и не надо его грузить новыми данными. А если вешается система то при чем тут слейв!? Значит алгоритм мастера не правильно продуман. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться