fk0, легенда (04.02.2013 19:33, просмотров: 137) ответил Vladimir Ljaschko на все же можно разобраться - виснет весь контроллер или неполная поддержка I2C. Отсюда и пути разные. Если виснет контроллер, то собака или абсолютно бездарная схемотехника и исполнение. Если сам I2C, то переводится на пониженную скорость и софтовую
Чтоб повис контроллер -- это очень постараться (при грамотной схемотехнике и разводке ПП). В голову приходят только залётные фотоны высоких энергий и просачивание больших зарядов электронов через выводы, за всеми пределами absolute maximum ratings. Что касается ATMEGA и I2C -- сделать можно всё на аппаратном модуле (проверено электроникой), чтоб работало, условно говоря, с 50% потерей пакетов вполне успешно. И делалось: AT91 + ATMEGA. Больше доставлял AT91. Скорость совсем низкая плохо (между помехами не просачивается пакет). Совсем высокая тоже (очень чувствителен ко всему становится). Истина где-то посередине, порядка 50-200кГц. У ATMEGA явно нужны софтовые таймауты в слейве, повторюсь. У мастера нужно уметь софтовый сброс ("проклокать"), таймауты, сбросить сам модуль через SFR. И аппаратная проблема ATMEGA: грузит шину, когда контроллер без питания. Проще сменить контроллер... Ещё активная подтяжка помогает, диоды и резисторы против звона, собственно резисторы подтяжки адекватного сопротивления (5-10к как в примерах приводят -- неадекват, с 1к может работать лучше, но электричество жрёт).
[ZX]