реклама на сайте
подробности

 
 
> Помогите советом. I2C, Мож кто сталкивался.
SasaVitebsk
сообщение Jun 17 2007, 13:20
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



У меня есть в устр-ве шина I2C. На ней сидит мастер - atmega640(I2C софтовый) пару микрух памяти 24с512 и atmega48(I2C аппаратный слэйв). Всё это подпёрто резисторами 3.9кОм. Общая протяжённость шины составляет ~30см.

Изначально работал побайтно с 24с512 и блоком с mega48. Всё работало суперустойчиво. Сутками. Ни единого сбоя. С какого-то момента я попытался значительно повысить скорость на чтение (а заодно на запись) с 24с512. Для этого я ввёл буфер на 32 байта и начал писать/читать блоками по 32 байта. В принципе всё работает, но периодически возникают сбои. Я выяснил. Сбои возникают как при чтении, так и при записи. Их характер - случайный и хаотический. Создаётся ощущение, что сбои - результат помех. Увеличение задержек - не дало результата.

Может кто сталкивался с чем-нибудь подобным и может подсказать? Пока не знаю куда рыть.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SasaVitebsk
сообщение Jun 17 2007, 20:23
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Я, к примеру, совершенно не удивился сообщению zltigo. И совершенно не понимаю что вас в нём удивляет? I2C - статическая шина. Следовательно поступающие сигналы не должны быть привязаны ко времени. Если подтяжки нет, то наводки на этих ножках рано или поздно но уложатся в нужный сигнал, как ни крути. Один раз я столкнулся со случаем работы контроллера дисковода (ВГ93) при обрезанном сигнале управления (то ли RD то ли WR уже не помню, но помню что совершенно необходимый). Тот милый человек, который смотрел эту плату до меня зачем-то перерезал его с помощью лезвия. Наверное потом хотел соплю кинуть, да подзабыл. Когда я нашёл настоящую неисправность и запустил злополучный синклер, то выяснил что дисковод работает, но только длинные файлы не читает. Причина выяснилась достаточно быстро. Анализирую ноги ВГ93 было обнаружено, что одна просто болтается в воздухе. Как я писал выше дисковод полностью работал и короткие файлы читал исправно.

zltigo спасибо за информацию Ваш пост я понял.

2 singlskv. Также спасибо. Я правда не совсем понял фразу
Цитата
Вы понимаете что аппаратно формируемые сигналы от 24xx и от ATmegaxx имеют
по крайней мере разную форму ?
Все зависит от софта на Атмега...


Софт на м48 писал, естественно я сам. Наверное Вы имели ввиду не "разную форму", а "работают по разному". Это, безусловно, я понимаю. Ещё раз повторяю. Если работа с at24 идёт побайтно, то никаких проблем не возникает. Два изделия работают круглосуточно больше месяца.

2 zltigo. При блочной записи. Записываю 32 байта. Границы верны. То есть принципиально всё пишется правильно. Вопрос достаточно ли одной задержки 10мс после записи страницы? Точнее части страницы. Помню в какой-то мне приходилось задержку на запись делать = Twr * число записываемых байт. Правда это в какой-то младшенькой памяти было.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 17 2007, 20:38
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(SasaVitebsk @ Jun 17 2007, 23:23) *
Вопрос...

Увы, я софтовой эмуляцией не занимался - работает железный контроллер все на прерываниях, т.е. никакие задержки не формируются - достаточно ACK.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Jun 17 2007, 20:46
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(zltigo @ Jun 17 2007, 23:38) *
Увы, я софтовой эмуляцией не занимался - работает железный контроллер все на прерываниях, т.е. никакие задержки не формируются - достаточно ACK.


Это-то я понимаю. Я спрашиваю про задержку после записи. Она же по-любому аппаратно не формируется.

2 Dog Pawlowa. Простите о каком бите готовности вы говорите? Я работаю с 24с512.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 17 2007, 21:19
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(SasaVitebsk @ Jun 17 2007, 23:46) *
Это-то я понимаю. Я спрашиваю про задержку после записи. Она же по-любому аппаратно не формируется.

Можно узнать. Cмотрите раздел ACKNOWLEDGE POLLING в мануале - щупается наличие реакции на START+DEVICE ADDRESS.
Практически все очень просто - запрашиваете запись следующего блока без всяких задержек и повторяете запросы пока на запрос не получите ACK. В любом случае с предварительной задержкой или без, получение ACK на START означает завершение цикла записи блока.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Jun 17 2007, 21:55
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(zltigo @ Jun 18 2007, 00:19) *
Можно узнать. Cмотрите раздел ACKNOWLEDGE POLLING в мануале - щупается наличие реакции на START+DEVICE ADDRESS.
Практически все очень просто - запрашиваете запись следующего блока без всяких задержек и повторяете запросы пока на запрос не получите ACK. В любом случае с предварительной задержкой или без, получение ACK на START означает завершение цикла записи блока.


Так японский городовой, - я ж этого не делаю. Я просто делаю задержку такую же как на байт. 10мс. smile.gif

Похоже в этом и ошибка кроется. А то что при чтении сбои возникают, так похоже просто некоторые ячейки записываются неустойчиво. Сейчас попробовал запись побайтно, а чтение блоками. Вроде полностью работает.

А если нет ответа, то повторяется старт условие без всяких яких? Или надо запрос стопом завершить?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- SasaVitebsk   Помогите советом. I2C   Jun 17 2007, 13:20
- - singlskv   Цитата(SasaVitebsk @ Jun 17 2007, 17:20) ...   Jun 17 2007, 13:37
- - zltigo   То:singlskv - насточтельная просьба избегать совер...   Jun 17 2007, 14:04
|- - singlskv   Цитата(zltigo @ Jun 17 2007, 18:04) То:si...   Jun 17 2007, 14:18
|- - zltigo   Цитата(singlskv @ Jun 17 2007, 17:18) Ну ...   Jun 17 2007, 16:40
|- - singlskv   Цитата(zltigo @ Jun 17 2007, 20:40) У LPC...   Jun 17 2007, 16:46
|- - zltigo   Цитата(singlskv @ Jun 17 2007, 19:46) Ну ...   Jun 17 2007, 17:00
|- - singlskv   Цитата(zltigo @ Jun 17 2007, 21:00) Никак...   Jun 17 2007, 17:24
|- - zltigo   Цитата(singlskv @ Jun 17 2007, 20:24) но ...   Jun 17 2007, 18:13
|- - singlskv   Цитата(zltigo @ Jun 17 2007, 22:13) Норма...   Jun 17 2007, 18:44
||- - zltigo   Цитата(singlskv @ Jun 17 2007, 21:44) ......   Jun 17 2007, 18:53
||- - singlskv   Цитата(zltigo @ Jun 17 2007, 22:53) А чег...   Jun 17 2007, 19:31
||- - zltigo   Цитата(singlskv @ Jun 17 2007, 22:24) ......   Jun 17 2007, 19:36
|- - singlskv   Цитата(zltigo @ Jun 17 2007, 22:13) Норма...   Jun 17 2007, 18:58
|- - zltigo   Цитата(singlskv @ Jun 17 2007, 21:58) есл...   Jun 17 2007, 19:14
- - SasaVitebsk   Экспериментировал от 1МГц до 100кГц. На высоких ск...   Jun 17 2007, 16:15
|- - singlskv   Цитата(SasaVitebsk @ Jun 17 2007, 20:15) ...   Jun 17 2007, 16:33
- - bodja74   А софтовый I2C следит за SCL при растяжке ACK слей...   Jun 17 2007, 17:04
|- - SasaVitebsk   Цитата(bodja74 @ Jun 17 2007, 20:04) А со...   Jun 17 2007, 18:54
|- - Dog Pawlowa   Цитата(SasaVitebsk @ Jun 17 2007, 21:54) ...   Jun 17 2007, 20:38
|- - zltigo   Цитата(SasaVitebsk @ Jun 18 2007, 00:55) ...   Jun 17 2007, 22:21
|- - SasaVitebsk   Цитата(zltigo @ Jun 18 2007, 01:21) Да, п...   Jun 17 2007, 23:18
|- - defunct   Цитата(SasaVitebsk @ Jun 18 2007, 02:18) ...   Jun 17 2007, 23:51
|- - Dog Pawlowa   Цитата(SasaVitebsk @ Jun 18 2007, 02:18) ...   Jun 18 2007, 07:24
|- - zltigo   Цитата(SasaVitebsk @ Jun 18 2007, 02:18) ...   Jun 18 2007, 07:37
|- - SasaVitebsk   Цитата(zltigo @ Jun 18 2007, 10:37) Нет, ...   Jun 18 2007, 08:43
|- - defunct   Цитата(zltigo @ Jun 18 2007, 10:37) Какой...   Jun 18 2007, 11:04
|- - zltigo   Цитата(defunct @ Jun 18 2007, 14:04) в пр...   Jun 18 2007, 12:21
|- - defunct   Цитата(zltigo @ Jun 18 2007, 15:21) (а ме...   Jun 18 2007, 22:06
- - SasaVitebsk   Кое что прояснилось. Буду, конечно ещё дальше копа...   Jun 18 2007, 21:35
- - SasaVitebsk   Код //Инициализация порта TWI void TWI_Init(v...   Jun 18 2007, 22:42
|- - defunct   Цитата(SasaVitebsk @ Jun 19 2007, 01:42) ...   Jun 18 2007, 23:37
- - singlskv   1. нужно обязательно добавить обработку состояния ...   Jun 18 2007, 23:57
- - mrcashe   Кстати говоря, на такой шине при поллинге надо обя...   Jun 19 2007, 04:54
|- - SasaVitebsk   Цитата(mrcashe @ Jun 19 2007, 07:54) Кста...   Jun 19 2007, 08:19
|- - singlskv   Цитата(SasaVitebsk @ Jun 19 2007, 12:19) ...   Jun 19 2007, 08:41
- - SasaVitebsk   Всем спасибо за участие. В любом случае я узнал но...   Jun 30 2007, 00:37
|- - defunct   Цитата(SasaVitebsk @ Jun 30 2007, 03:37) ...   Jun 30 2007, 01:07
|- - Dog Pawlowa   Цитата(SasaVitebsk @ Jun 30 2007, 03:37) ...   Jun 30 2007, 04:15
- - sensor_ua   ЦитатаМожно работать с массивами и указателями. Чт...   Jul 1 2007, 06:26
- - mrcashe   ЦитатаПодскажите спецы кто как работает в Си. Можн...   Jul 1 2007, 08:35
|- - defunct   Цитата(mrcashe @ Jul 1 2007, 11:35) В раз...   Jul 1 2007, 13:09
|- - zltigo   Цитата(defunct @ Jul 1 2007, 16:09) Для п...   Jul 1 2007, 13:31
- - sensor_ua   ЦитатаЭто что-то новое. Размер массива в Си, вообщ...   Jul 1 2007, 10:36
- - SasaVitebsk   Спасибо. Доступно, внятно и чётко. Короче похоже э...   Jul 1 2007, 15:47


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 18:33
Рейтинг@Mail.ru


Страница сгенерированна за 0.01475 секунд с 7
ELECTRONIX ©2004-2016