-
- Вот пошёл бы кто и написал в 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)