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

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> Помогите советом. I2C, Мож кто сталкивался.
singlskv
сообщение Jun 17 2007, 18:58
Сообщение #16


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(zltigo @ Jun 17 2007, 22:13) *
Нормального сигнала не было, но наводки с соседнего клока были по этим фронтам оно все как-то жило.

наводки по фронтам 07.gif
если это ловля кода по радиоканалу я бы еще поверил...
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 17 2007, 19:14
Сообщение #17


Гуру
******

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



Цитата(singlskv @ Jun 17 2007, 21:58) *
если это ловля кода по радиоканалу я бы еще поверил...

Радиоканал? С каких частот у нас радио начинается знаете? Ну а даже заваленые 20ns фронты LPX2000 великолетно наводятся на идущую параллельно висящую дорожку.

Сообщение отредактировал zltigo - Jun 17 2007, 22:23


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
singlskv
сообщение Jun 17 2007, 19:31
Сообщение #18


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(zltigo @ Jun 17 2007, 22:53) *
А чего странного? Мне эта 'фишка' без надобности - угробил несколько часов (начинал дома копаться и боролся с нежеланием искать сетевой шнур от осциллографа), потом увидел кашу, выяснил, что и резистор и место для него отсутствуют, как класс, грязно выругался по-болгарски smile.gif, запаял прямо на корпус AT24 первый попавшийся выводной резистор и все.

Читайте предыдущий пост.

Дык а фишка заключается в том, что Вы неразобравшись в Вашем конкретном случае
начинаете советовать остальным (неразобравшись в чем у Вас была проблемма)
как нужно организовывать обмен по i2c другим...
вот это и странно...
Цитата
Радиоканал? С каких частот у нас радио начинается знаете? Ну а даже заваленые 10ns фронты LPX2000 великолетно наводятся на идущую параллельно висящую дорожку.

Знаю, но к приему сигнала по i2c без пулапов это не имеет никакого значения.
Ладно, если Вы не против довайте попробуем отвлечся smile.gif и ответить на вопрос автора.

Цитата(SasaVitebsk @ Jun 17 2007, 22:54) *
И 24c512 и mega48 - аппаратно формируют сигналы.

Вы понимаете что аппаратно формируемые сигналы от 24xx и от ATmegaxx имеют
по крайней мере разную форму ?
Все зависит от софта на Атмега...
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 17 2007, 19:36
Сообщение #19


Гуру
******

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



Цитата(singlskv @ Jun 17 2007, 22:24) *
...что Вы неразобравшись
...
начинаете советовать остальным (неразобравшись в чем у Вас была проблемма)
как нужно организовывать обмен по i2c другим...

Я разобрался в том, что:
1. AT24 очень НЕ КРИТИЧНА к качеству сигналов и шаманство с уменьшению pullup-ов маловероятно приведет к результату.
2. AT24 не имеет проблем с блочным режимом, по крайней мере при работе с железным I2C контроллером.
Кроме того, я разобрался в чем была конкретная проблема с конкретной платой.
О чем и написал - перечитайте пост №3.
Если Вам привиделись какие-то "советы" - это Ваши проблемы.


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


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 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
Dog Pawlowa
сообщение Jun 17 2007, 20:38
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(SasaVitebsk @ Jun 17 2007, 21:54) *
Средний примерный объём ошибокЖ 1-2 на 3к инфы

А попробовать исключить возможное влияние прерываний? - Может, что-то банально портится во время прерывания. У Вас, насколько я помню, система прерываний достаточно требовательная. Может там что накосячили 07.gif Во всяком случае у меня при софтовом мастере и работе с EEPROM сбоев не бывает.
И еще - есть такая особенность, что время записи некоторых микросхем существенно возрастает. Если бит готовности не обрабатывается, а используется банальная задержка "с запасом", может оказаться так, что по мере старения микросхемы этого запаса может не хватать.
Спокойной ночи biggrin.gif


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Jun 17 2007, 20:46
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 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
zltigo
сообщение Jun 17 2007, 22:21
Сообщение #26


Гуру
******

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



Цитата(SasaVitebsk @ Jun 18 2007, 00:55) *
А если нет ответа, то повторяется старт условие без всяких яких?

Да, поскольку девайс в этот момент банально отключен от линии, то наличие/отсутствие стопа ему безразлично.


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


Гуру
******

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



Цитата(zltigo @ Jun 18 2007, 01:21) *
Да, поскольку девайс в этот момент банально отключен от линии, то наличие/отсутствие стопа ему безразлично.


Какой-то брэд у меня. 05.gif У меня всегда 24с отвечает. Ошибки вроде нет. Буду разбираться завтра. Пока меня устроит запись побайтная. Время некритично, но неприятно. Так как массивы по 60к. Затягивается процесс. smile.gif Но мне пока достаточно работу предъявить. А там только чтение.

Скажи а страницу я обязан полностью записывать (там 128 байт). Насколько я помню там просто копируется вся страница в озу потом модифицируется и записывается. То есть по моим понятиям я могу сколько угодно записать. Работать должна. Или я не прав? Почему может 24с всегда отвечать?
Go to the top of the page
 
+Quote Post
defunct
сообщение Jun 17 2007, 23:51
Сообщение #28


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(SasaVitebsk @ Jun 18 2007, 02:18) *
Скажи а страницу я обязан полностью записывать (там 128 байт). Насколько я помню там просто копируется вся страница в озу потом модифицируется и записывается. То есть по моим понятиям я могу сколько угодно записать. Работать должна. Или я не прав? Почему может 24с всегда отвечать?

После записи страницы надо ждать 5ms для чипов с маркировкой "A", и 10ms без "A"..

Код
U8 AT24_AttemptWrite( U16 Address, U8 *pData, U8 count)
{
    U8 retval = NACK;
    U8 repcount = 12; // (A package - write op timeout - 5ms, not (A) package - 10ms)

    while (repcount-- && (retval != ACK))
    {
        i2c_MemTransfer(AT24_DevAddress + SLA_W, Address, count, pData);
        retval = i2c_WaitCompleteOperation();
        if (retval) // operation NACK'ed
            Kernel_WaitMS( 1 );
    }
    return retval;
}


Цитата
Сбои возникают как при чтении, так и при записи. Их характер - случайный и хаотический.

Возможно сбои связаны с тем, что у вас не обрабатывается либо неправильно обрабатывается какое-то из состояний шины.
Например, при блочном чтении, очень важно устанавливать NACK перед приемом последнего байта данных.


Цитата
Для этого я ввёл буфер на 32 байта и начал писать/читать блоками по 32 байта.

На меге640 лучше не скупиться на буфер и сделать его размером байт в 200 (про запас) чтобы можно было размещать страницы целиком.
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Jun 18 2007, 07:24
Сообщение #29


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(SasaVitebsk @ Jun 18 2007, 02:18) *
...Пока меня устроит запись побайтная. Время некритично, но неприятно...

А драматическое уменьшение ресурса не смущает?
Про бит готовности - это у меня терминология выпала под вечер smile.gif ACK, конечно же.

Еще раз предупреждаю про задержку - дело в том, что для микросхем какого-то производителя очень критично, если повторная запись страницы начинается раньше, чем закончилась предыдущая. Во всяком случае это было лет 6 назад и у меня были серьезные проблемы. Микросхема выходила из строя в течение дня.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 18 2007, 07:37
Сообщение #30


Гуру
******

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



Цитата(SasaVitebsk @ Jun 18 2007, 02:18) *
Скажи а страницу я обязан полностью записывать (там 128 байт).

Нет, любым кусочком. Я почти всегда пишу не страницами а по 32 байта, дабы не разбираться, какой чип стоит или в некоторых случаях кусками равными размеру записи а не страницы.


Цитата(defunct @ Jun 18 2007, 02:51) *
После записи страницы надо ждать 5ms для чипов с маркировкой "A", и 10ms без "A"..

Уже писал - я не разбираюсь с буковками на чипе и не жду. Банально повторяется посылка START до получения ACK.
Какой-либо задержки не используется в принципе.
Прокладок-задержек между циклами опроса, как в Вашем примере, тоже, поскольку работаю по прерываниям и там автомат самостоятельно непрерывно молотит.
Чипы производители оборудования точно ставят разные и разных производителей.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

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

 


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


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