-
- В какой ситуации? - Лeoнид Ивaнoвич(22.06.2010 23:28)
- Иногда нормально не завершается транзакция на шине, когда нет обработчика ошибки - шина виснет. - psL(23.06.2010 00:03)
- Туманно как-то. Что делает обработчик ошибки? И что будет на шине без него? Никогда с таким не сталкивался, хоть PCF широко использую и ошибки не обрабатываю. - Лeoнид Ивaнoвич(23.06.2010 00:26)
- Аппаратный узел I2C определяет ошибку на шине, обработчик переинициализирует узел I2C. Без обработки ошибки состояние завершения транзакции не будет достигнуто. Три PCF на шине. Туманно - согласен. - psL(23.06.2010 08:43)
- Что подразумевается под "переинициализацей"? Только инициализация аппаратного модуля I2C мастера? Или шина тоже реинициализируется? Не пробовали просто проCLOCKать шину, как это рекомендуется в спецификации I2C сразу после подачи питания? - rezident(23.06.2010 18:49)
- Вот пошёл бы кто и написал в wiki, что нужно "проклокать". Вокруг миллионы примеров как работать с I2C и никто этим не озабочен (соответственно раз из 1000 виснет). И, кстати, таймаут ещё нужен (например 10мс) и сброс шины. Если мастер отвалился в fk0(51 знак., 24.06.2010 11:29)
- Да блин RTFM! То бишь нужно внимательно и вдумчиво спецификацию I2C-BUS от производителя читать, а не ориентироваться на отсебятину и пересказы в каких-то там википедиях! rezident(24.06.2010 16:27 - 16:29, ссылка)
- Ну блин, мне как-то всё равно. Я-то читал и даже в осциллограф смотрел. - fk0(24.06.2010 16:48)
- Тайм-ауты в SMBus были добавлены. - vmp(24.06.2010 11:34)
- Да блин RTFM! То бишь нужно внимательно и вдумчиво спецификацию I2C-BUS от производителя читать, а не ориентироваться на отсебятину и пересказы в каких-то там википедиях! rezident(24.06.2010 16:27 - 16:29, ссылка)
- Да, мастер переинициализируется. А как переиницилизировать шину и что значит "проклокать"? У контроллера I2C немультиплицирован с GPIO. - psL(23.06.2010 21:10)
- Ну да, как ReAl ниже уже пояснил, нужно SCL "проклокать". Неважно каким способом вы это реализуете: "ногодрыгом" GPIO или передачей уже реинициализированного модуля I2C. Главное вывести автомат слейва из ступора при котором он блокирует шину. - rezident(24.06.2010 05:19)
- Если кто-то из устройств "залип" с SDA=0, то надо давать SCL до тех пор, пока не поднимется SDA=1, после чего сформировать STOP. - ReAl(24.06.2010 00:55)
- Только не STOP а START. И не SCLом, а подавать команды START, >10 раз. - Т.Достоевский(24.06.2010 01:01)
- Если SDA задавлен в 0 кем-то из слейвов, оборванным сбросом контроллера на пол дороге чтения или просто слегка сдуревшим, то START подать не удастся. Как и STOP. Нужно дочитать до "1" на SDA. - ReAl(24.06.2010 01:40 - 01:43)
- Да. Но подавать надо только старт(монтажное или таки). Иначе, стоп поданый на запись может чёнить не то, или не туда... - Т.Достоевский(24.06.2010 02:18 - 02:35)
- Если SDA задавлен в 0 кем-то из слейвов, оборванным сбросом контроллера на пол дороге чтения или просто слегка сдуревшим, то START подать не удастся. Как и STOP. Нужно дочитать до "1" на SDA. - ReAl(24.06.2010 01:40 - 01:43)
- Только не STOP а START. И не SCLом, а подавать команды START, >10 раз. - Т.Достоевский(24.06.2010 01:01)
- Вот пошёл бы кто и написал в wiki, что нужно "проклокать". Вокруг миллионы примеров как работать с I2C и никто этим не озабочен (соответственно раз из 1000 виснет). И, кстати, таймаут ещё нужен (например 10мс) и сброс шины. Если мастер отвалился в fk0(51 знак., 24.06.2010 11:29)
- Получается, проблема в мастере, а не в PCF. - Лeoнид Ивaнoвич(23.06.2010 10:42)
- Что подразумевается под "переинициализацей"? Только инициализация аппаратного модуля I2C мастера? Или шина тоже реинициализируется? Не пробовали просто проCLOCKать шину, как это рекомендуется в спецификации I2C сразу после подачи питания? - rezident(23.06.2010 18:49)
- Аппаратный узел I2C определяет ошибку на шине, обработчик переинициализирует узел I2C. Без обработки ошибки состояние завершения транзакции не будет достигнуто. Три PCF на шине. Туманно - согласен. - psL(23.06.2010 08:43)
- Туманно как-то. Что делает обработчик ошибки? И что будет на шине без него? Никогда с таким не сталкивался, хоть PCF широко использую и ошибки не обрабатываю. - Лeoнид Ивaнoвич(23.06.2010 00:26)
- Иногда нормально не завершается транзакция на шине, когда нет обработчика ошибки - шина виснет. - psL(23.06.2010 00:03)
- В какой ситуации? - Лeoнид Ивaнoвич(22.06.2010 23:28)