|
|
  |
Помогите советом. I2C, Мож кто сталкивался. |
|
|
|
Jun 17 2007, 13:37
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(SasaVitebsk @ Jun 17 2007, 17:20)  ...удалено.... А какая частота шины i2c ? 3,9K может быть многовато при большом количестве устройств(емкость шины). Попробуйте уменьшить до 2,7 или даже до 1,5. У меня при pullup 4,7 отказывалось работать при 400KHz с FRAM, а при 1,5K завелось на 1,4MHz (не с Atmega).
Сообщение отредактировал zltigo - Jun 17 2007, 13:47
|
|
|
|
|
Jun 17 2007, 14:18
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(zltigo @ Jun 17 2007, 18:04)  То:singlskv - насточтельная просьба избегать совершенно не нужных цитирований. Эээ... привычка, когда отвечаешь в длинной ветке нужно обозначить кому отвечаешь. В данном случае это конечно было не нужно Цитата мне попалась в свое время отладочная борда от Olimex, где болгарские друзья вообще не развели один из подтягивающих резисторов (кажется SDA) к Микрочиповской EEPROM. Каким чудом на утечках хоть на пониженной частоте со сташными сбоями, но работало непонятно! Ну все-таки наверное работало на внутреннем пулапе ? Вроде как i2c по стандарту умеет тянуть только вниз, и если вобще нет пулапа то там должен быть всегда 0. Хотя конечно реализации на разных контроллерах могут достаточно сильно отличатся от стандарта
|
|
|
|
|
Jun 17 2007, 16:33
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(SasaVitebsk @ Jun 17 2007, 20:15)  Экспериментировал от 1МГц до 100кГц. На высоких скоростях колличество сбоев увеличивается, но до определённого порядка. Начиная примерно с 360кГц количество сбоев от тактовой частоты не зависит. пулап все-таки попробуйте поменьше, хотя бы просто для эксперимента Цитата Только запись пакетную делал один раз. Но задержки ставил большие. А сейчас впритык. Сам уже не знаю где рыть. Пока ни одной ошибки не нашёл. Создаётся ощущение что проблема с вызывом прерываний в определённых местах. Так как ошибки проявляются только при значительных объёмах (практически непрерывной работе) передаваемой от I2C инфы. Возможно из-за софтового I2C. Задержки между каждым пакетом или между обращениями к разным устройствам ? Ошибки только с 24с512 или с mega48 тоже ? На mega48 обработка через прерывания ? Ошибки с 24xx случайно происходят не после общения с мегой без паузы ? Какая частота ошибок (примерно) ? Ну и код общения через i2c(на мегах) лучше конечно покажите... Для редко возникающих ошибок знаю одну багу/фичу...
|
|
|
|
|
Jun 17 2007, 17:24
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(zltigo @ Jun 17 2007, 21:00)  Никаких фокусов - сигнал при рассмотрении осциллографом был жутчайший, но как-то иногда понимался взаимодействующими сторонами. Ну а иметь хорошие I2C контроллеры Филипса положение обязывает  . Положение то обязывает, но вот попробуйте объяснить мне, откуда там в сигнале могли единички появлятся при полном отсутствии пулапов. То что на i2c сигналы тянутся только к 0, принципиально, т.к. иначе сложно реализовать мультимастер.
|
|
|
|
|
Jun 17 2007, 18:13
|

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

|
Цитата(singlskv @ Jun 17 2007, 20:24)  но вот попробуйте объяснить мне, откуда там в сигнале могли единички появлятся при полном отсутствии пулапов. Нормального сигнала не было, но наводки с соседнего клока были по этим фронтам оно все как-то жило. Цитата То что на i2c сигналы тянутся только к 0.... Я не запрашивал курс ликбеза и объяснений почему не могло работать, то, что хоть хреново, но работало на моих глазах.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jun 17 2007, 18:44
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(zltigo @ Jun 17 2007, 22:13)  Нормального сигнала не было, но наводки с соседнего клока были по этим фронтам оно все как-то жило. Я не запрашивал курс ликбеза и объяснений почему не могло работать, то, что хоть хреново, но работало на моих глазах. Ну я вобще-то и не собирался устраивать ликбез, только вот для меня осталось странным, что получив подобный результат Вы не разобрались в чем была фишка... Ну не должно было там быть единички, а Вы говорите что была и все было "Ok"... P.S. Раскажите откуда все-таки 1ки появились...
|
|
|
|
|
Jun 17 2007, 18:53
|

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

|
Цитата(singlskv @ Jun 17 2007, 21:44)  ... только вот для меня осталось странным, что получив подобный результат Вы не разобрались в чем была фишка... А чего странного? Мне эта 'фишка' без надобности - угробил несколько часов (начинал дома копаться и боролся с нежеланием искать сетевой шнур от осциллографа), потом увидел кашу, выяснил, что и резистор и место для него отсутствуют, как класс, грязно выругался по-болгарски  , запаял прямо на корпус AT24 первый попавшийся выводной резистор и все. Цитата P.S. Раскажите откуда все-таки 1ки появились... Читайте предыдущий пост.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jun 17 2007, 18:54
|
Гуру
     
Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521

|
Цитата(bodja74 @ Jun 17 2007, 20:04)  А софтовый I2C следит за SCL при растяжке ACK слейвом? У меня один мастер. Я не сталкивался с таким. Уточните откуда может быть растяжка. И 24c512 и mega48 - аппаратно формируют сигналы. Насчёт ошибок у м48 информации нет. Я пока это проконтролировать не могу. Необходимо на ней писать специальную отладочную программу чтобы это увидеть. Так, на вскидку, на ней ошибок нет. Ночь длинная. Проведу сейчас дополнительные исследования, тогда доложу о результатах. По поводу уменьшения резисторов - что-то нет веры: должно и так работать, по-моему. Средний примерный объём ошибокЖ 1-2 на 3к инфы
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|