-
- вот представь у тебя 10 дивайсов и все на одной шине и2с сидят, тут происходит гамма-всплеск на солнце и 10-й дивайс попадает под облучений в результате чаго и2с на нем виснет намертво, заодно отрубая от сети и все остальные 9 дивайсов. - whale(03.02.2013 18:13)
- По шине I2C фирмой Philips (NXP) очень много чего наработано и там есть готовые решения на многие случаи жизни. Не нужно изобретать велосипед с квадратными колёсами. И оптическая развязка есть (не нужная в данном случае, оптика это больше от fk0(1434 знак., 04.02.2013 01:04)
- опторазвязка не спасет от кз на землю, всякие мультиплексоры и хабы это из области фантастики, whale(255 знак., 04.02.2013 02:27)
- Кондер нельзя подобрать... LCRLCRLCRLCRLCR с произвольно меняющимся R -- фаза сигнала на выходе х.з. какая. Я тебе уже сказал. Всё это надумано и связано исключительно с AVR. Проще взять нормальный контроллер и нормально его программировать (чтоб fk0(22 знак., 04.02.2013 12:31)
- Да нормально работает собака в АВР, что-то тут не то в реализации. - Vladimir Ljaschko(04.02.2013 15:59)
- Собаку можно плохо запрограммировать. А в AVR не то в реализации GPIO выходов. Там диоды на +VCC стоят. И горбатого уже только могила исправит. Впрочем, если шина питания у всех одна -- пофигу. Если разная -- придётся думать головой и конденсаторы fk0(545 знак., 04.02.2013 17:59)
- все же можно разобраться - виснет весь контроллер или неполная поддержка 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)
- Собаку можно плохо запрограммировать. А в AVR не то в реализации GPIO выходов. Там диоды на +VCC стоят. И горбатого уже только могила исправит. Впрочем, если шина питания у всех одна -- пофигу. Если разная -- придётся думать головой и конденсаторы fk0(545 знак., 04.02.2013 17:59)
- надо доделать на том что есть потом уже перейдем времени нет. - whale(04.02.2013 14:46)
- Да нормально работает собака в АВР, что-то тут не то в реализации. - Vladimir Ljaschko(04.02.2013 15:59)
- Кондер нельзя подобрать... LCRLCRLCRLCRLCR с произвольно меняющимся R -- фаза сигнала на выходе х.з. какая. Я тебе уже сказал. Всё это надумано и связано исключительно с AVR. Проще взять нормальный контроллер и нормально его программировать (чтоб fk0(22 знак., 04.02.2013 12:31)
- опторазвязка не спасет от кз на землю, всякие мультиплексоры и хабы это из области фантастики, whale(255 знак., 04.02.2013 02:27)
- то есть следующие варианты вы не рассматриваете ?! 1) по питанию произошел тиристорный эффект и все 10 отрубились. 2) модуль I2C ушел в теоретический самовозбуд и генерация пролазит через кондеры и также не дает нормально работать - MegaJohn(03.02.2013 23:46)
- это уже мало вероятно а вот вот сбой модуля и2с от помехи по шине запросто. - whale(04.02.2013 02:30)
- ИМХО, если помехи такие, что сбоит модуль на кремнии - нужно принимать какие-то другие меры, но никак не развязку кондерами. - Хитрый Китаец(04.02.2013 14:28)
- Нужна функция "пересброса всего". С выключением питания. В т.ч. в случае превышения потребляемого тока. А для шины есть диодики, подойдут те, что для защиты USB. - fk0(04.02.2013 12:32)
- диодики стоят сразу после резисторов в 150 ом ) - whale(04.02.2013 14:44)
- это уже мало вероятно а вот вот сбой модуля и2с от помехи по шине запросто. - whale(04.02.2013 02:30)
- По шине I2C фирмой Philips (NXP) очень много чего наработано и там есть готовые решения на многие случаи жизни. Не нужно изобретать велосипед с квадратными колёсами. И оптическая развязка есть (не нужная в данном случае, оптика это больше от fk0(1434 знак., 04.02.2013 01:04)
- вот представь у тебя 10 дивайсов и все на одной шине и2с сидят, тут происходит гамма-всплеск на солнце и 10-й дивайс попадает под облучений в результате чаго и2с на нем виснет намертво, заодно отрубая от сети и все остальные 9 дивайсов. - whale(03.02.2013 18:13)