-
- все же можно разобраться - виснет весь контроллер или неполная поддержка I2C. Отсюда и пути разные. Если виснет контроллер, то собака или абсолютно бездарная схемотехника и исполнение. Если сам I2C, то переводится на пониженную скорость и софтовую Vladimir Ljaschko(35 знак., 04.02.2013 18:47)
- Чтоб повис контроллер -- это очень постараться (при грамотной схемотехнике и разводке ПП). В голову приходят только залётные фотоны высоких энергий и просачивание больших зарядов электронов через выводы, за всеми пределами absolute maximum fk0(869 знак., 04.02.2013 19:33)
- подтяжка 1,5к стоит если что ) whale(198 знак., 04.02.2013 19:46)
- Слейв, если обмен начался и не завершился за определённое время -- сбрасывает свой I2C модуль и освобождает шину (если держал SCL в нуле и т.п.) Мастер свой сброс выполняет так в общем случае: через SFR регистры сбрасывает свой I2C модуль (если fk0(1400 знак., 04.02.2013 20:04)
- насчет сброса whale(316 знак., 04.02.2013 20:23)
- Всё НЕ В ПОРЯДКЕ. На N/ACK вообще расчитывать нельзя, но даже не в том дело. "Зависать" может на более низком уровне: слейв увидел лишний клок, например, где его нет (помеха). И в ACK ему подошёл какой нужно битик. А дальше висит с SDA=0 ожидая fk0(358 знак., 04.02.2013 21:02)
- эээ ну эта whale(469 знак., 04.02.2013 22:52 - 23:13)
- При коллизии мастер прекращает работу и где-то в SFR появляется битик "коллизия". И так в цикле. И ничего не сделать, кроме как не проклокать вручную. Напильник на "+" не надо. На GND достаточно. - fk0(04.02.2013 23:22)
- это понятно что на минус ) короче тест напильник сделал whale(105 знак., 04.02.2013 23:28)
- При коллизии мастер прекращает работу и где-то в SFR появляется битик "коллизия". И так в цикле. И ничего не сделать, кроме как не проклокать вручную. Напильник на "+" не надо. На GND достаточно. - fk0(04.02.2013 23:22)
- эээ ну эта whale(469 знак., 04.02.2013 22:52 - 23:13)
- Всё НЕ В ПОРЯДКЕ. На N/ACK вообще расчитывать нельзя, но даже не в том дело. "Зависать" может на более низком уровне: слейв увидел лишний клок, например, где его нет (помеха). И в ACK ему подошёл какой нужно битик. А дальше висит с SDA=0 ожидая fk0(358 знак., 04.02.2013 21:02)
- Выдержки из слейва на atmega, может поможет: fk0(8069 знак., 04.02.2013 20:13)
- у меня все на асе написано ) - whale(04.02.2013 20:26)
- атмега. ассемблер. конденсаторы в I2C. просто классика жанра. лучше бросай это... - fk0(04.02.2013 23:20)
- ниче, еще помучимся - whale(04.02.2013 23:28)
- атмега. ассемблер. конденсаторы в I2C. просто классика жанра. лучше бросай это... - fk0(04.02.2013 23:20)
- у меня все на асе написано ) - whale(04.02.2013 20:26)
- насчет сброса whale(316 знак., 04.02.2013 20:23)
- Слейв, если обмен начался и не завершился за определённое время -- сбрасывает свой I2C модуль и освобождает шину (если держал SCL в нуле и т.п.) Мастер свой сброс выполняет так в общем случае: через SFR регистры сбрасывает свой I2C модуль (если fk0(1400 знак., 04.02.2013 20:04)
- подтяжка 1,5к стоит если что ) whale(198 знак., 04.02.2013 19:46)
- Чтоб повис контроллер -- это очень постараться (при грамотной схемотехнике и разводке ПП). В голову приходят только залётные фотоны высоких энергий и просачивание больших зарядов электронов через выводы, за всеми пределами absolute maximum fk0(869 знак., 04.02.2013 19:33)
- все же можно разобраться - виснет весь контроллер или неполная поддержка I2C. Отсюда и пути разные. Если виснет контроллер, то собака или абсолютно бездарная схемотехника и исполнение. Если сам I2C, то переводится на пониженную скорость и софтовую Vladimir Ljaschko(35 знак., 04.02.2013 18:47)