Уважаемый автор разработки, при изучении вашего очень интересного для любителей I2C шлюза для компьютера (через com-порт) на ATTiny2313 у меня возникли проблемы.
1. При подаче первой после включения питания команды воздействия на линию CS (15h или 16h) происходит формирование старт-условия на шине и выдача на шину какого-то байта. Сама линия CS не управляется.
Ситуация нормализуется только при подаче повторной любой команды 15h или 16h, но некий паразитный байт уже ушел.
2. Вне зависимости от п.1 команда формирования старт-условия (10h) в шину сразу улетает какой-то байт. Шлюз отвечает вместо 10h - 12h 10h, то есть признается, что отправил целый байт, о котором его не просили.
3. После первого воздействия шлюзом тактовая линия Clock остается в низком состоянии. Разве это правильно?
Может на странице программы оказалась не самая последняя актуальная прошивка?
Проблема с I2C шлюз для ПК (через com-порт) на ATTiny2313
- rhf-admin
- администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
- Сообщения: 3060
- Зарегистрирован: 25 авг 2009, 23:19
- Откуда: Уфа
- Контактная информация:
Re: Проблема с I2C шлюз для ПК (через com-порт) на ATTiny2313
Очень может быть... Я конечно покопаюсь в своих архивах (это ещё в 12-м году писалось)...
а ты пока попробуй эту прогу перекомпилить, добавив куда-нибудь в секцию Init команду clr I2C_flags, возможно это поможет.
Update. Даже не так. Это почти наверняка поможет. Судя по логу, шлюз при старте сразу попадает в режим ожидания байта для передачи, поэтому и получается, что когда ему присылают 10h, он этот байт посылает в шину и присылает в ответ 12h 10h.
Кстати, а вот в этом случае:
а ты пока попробуй эту прогу перекомпилить, добавив куда-нибудь в секцию Init команду clr I2C_flags, возможно это поможет.
Update. Даже не так. Это почти наверняка поможет. Судя по логу, шлюз при старте сразу попадает в режим ожидания байта для передачи, поэтому и получается, что когда ему присылают 10h, он этот байт посылает в шину и присылает в ответ 12h 10h.
Кстати, а вот в этом случае:
приходит что-то от шлюза в терминалку?При подаче первой после включения питания команды воздействия на линию CS (15h или 16h) происходит формирование старт-условия на шине и выдача на шину какого-то байта.
С уважением, администрация сайта.
Re: Проблема с I2C шлюз для ПК (через com-порт) на ATTiny2313
Кстати, а вот в этом случае:
Попробовал. При подаче самым первым кодом 16 шлюз послал в терминалку 12 16.
И еще одна загадка. При одном включении питания сегодня утром шлюз отработал как надо. Старт условие было правильным, нужные байты пошли от шлюза в шину. Но вот прочитать исследуемый чип не успел-нормальный запуск шлюза не повторился.
Снял логическим анализатором момент запуска шлюза по питанию. ИМХО, там очень много импульсной грязи на шине. Не исключен ложный старт шины. Не разобрался еще как выложить сюда файл скрина.
Повесил на ногу РЕСЕТ Тини2313 0,1 мкф на землю, чтобы удлиннить сигнал РЕСЕТа, усилил развязку МК по питанию. Не помогло.
приходит что-то от шлюза в терминалку?[/quote]При подаче первой после включения питания команды воздействия на линию CS (15h или 16h) происходит формирование старт-условия на шине и выдача на шину какого-то байта.
Попробовал. При подаче самым первым кодом 16 шлюз послал в терминалку 12 16.
И еще одна загадка. При одном включении питания сегодня утром шлюз отработал как надо. Старт условие было правильным, нужные байты пошли от шлюза в шину. Но вот прочитать исследуемый чип не успел-нормальный запуск шлюза не повторился.
Снял логическим анализатором момент запуска шлюза по питанию. ИМХО, там очень много импульсной грязи на шине. Не исключен ложный старт шины. Не разобрался еще как выложить сюда файл скрина.
Повесил на ногу РЕСЕТ Тини2313 0,1 мкф на землю, чтобы удлиннить сигнал РЕСЕТа, усилил развязку МК по питанию. Не помогло.
- rhf-admin
- администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
- Сообщения: 3060
- Зарегистрирован: 25 авг 2009, 23:19
- Откуда: Уфа
- Контактная информация:
Re: Проблема с I2C шлюз для ПК (через com-порт) на ATTiny2313
Да, всё правильно. При включении в регистрах общего назначения может быть что угодно случайным образом. Соответственно, если во втором бите регистра I2C_Flags окажется единица - первый же принятый байт будет послан в шину, если там окажется ноль - всё отработает как надо.При подаче самым первым кодом 16 шлюз послал в терминалку 12 16
Как я уже и сказал, - добавление команды clr I2C_Flags в секции Init решит проблему.
С уважением, администрация сайта.