Страница 1 из 1

Проблема с I2C шлюз для ПК (через com-порт) на ATTiny2313

Добавлено: 12 янв 2016, 03:19
Dima_SPb
Уважаемый автор разработки, при изучении вашего очень интересного для любителей I2C шлюза для компьютера (через com-порт) на ATTiny2313 у меня возникли проблемы.
1. При подаче первой после включения питания команды воздействия на линию CS (15h или 16h) происходит формирование старт-условия на шине и выдача на шину какого-то байта. Сама линия CS не управляется.
Ситуация нормализуется только при подаче повторной любой команды 15h или 16h, но некий паразитный байт уже ушел.
2. Вне зависимости от п.1 команда формирования старт-условия (10h) в шину сразу улетает какой-то байт. Шлюз отвечает вместо 10h - 12h 10h, то есть признается, что отправил целый байт, о котором его не просили.
3. После первого воздействия шлюзом тактовая линия Clock остается в низком состоянии. Разве это правильно?
Может на странице программы оказалась не самая последняя актуальная прошивка?

Re: Проблема с I2C шлюз для ПК (через com-порт) на ATTiny2313

Добавлено: 12 янв 2016, 08:40
rhf-admin
Очень может быть... Я конечно покопаюсь в своих архивах (это ещё в 12-м году писалось)... :-?
а ты пока попробуй эту прогу перекомпилить, добавив куда-нибудь в секцию Init команду clr I2C_flags, возможно это поможет.

Update. Даже не так. Это почти наверняка поможет. Судя по логу, шлюз при старте сразу попадает в режим ожидания байта для передачи, поэтому и получается, что когда ему присылают 10h, он этот байт посылает в шину и присылает в ответ 12h 10h.

Кстати, а вот в этом случае:
При подаче первой после включения питания команды воздействия на линию CS (15h или 16h) происходит формирование старт-условия на шине и выдача на шину какого-то байта.
приходит что-то от шлюза в терминалку?

Re: Проблема с I2C шлюз для ПК (через com-порт) на ATTiny2313

Добавлено: 12 янв 2016, 13:44
Dima_SPb
Кстати, а вот в этом случае:
При подаче первой после включения питания команды воздействия на линию CS (15h или 16h) происходит формирование старт-условия на шине и выдача на шину какого-то байта.
приходит что-то от шлюза в терминалку?[/quote]

Попробовал. При подаче самым первым кодом 16 шлюз послал в терминалку 12 16.
И еще одна загадка. При одном включении питания сегодня утром шлюз отработал как надо. Старт условие было правильным, нужные байты пошли от шлюза в шину. Но вот прочитать исследуемый чип не успел-нормальный запуск шлюза не повторился.
Снял логическим анализатором момент запуска шлюза по питанию. ИМХО, там очень много импульсной грязи на шине. Не исключен ложный старт шины. Не разобрался еще как выложить сюда файл скрина.
Повесил на ногу РЕСЕТ Тини2313 0,1 мкф на землю, чтобы удлиннить сигнал РЕСЕТа, усилил развязку МК по питанию. Не помогло.

Re: Проблема с I2C шлюз для ПК (через com-порт) на ATTiny2313

Добавлено: 12 янв 2016, 16:28
rhf-admin
При подаче самым первым кодом 16 шлюз послал в терминалку 12 16
Да, всё правильно. При включении в регистрах общего назначения может быть что угодно случайным образом. Соответственно, если во втором бите регистра I2C_Flags окажется единица - первый же принятый байт будет послан в шину, если там окажется ноль - всё отработает как надо.
Как я уже и сказал, - добавление команды clr I2C_Flags в секции Init решит проблему.