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

 
 
> ATmega128+AD7745, Непонятки с I2C
beginer
сообщение May 21 2007, 07:58
Сообщение #1





Группа: Новичок
Сообщений: 12
Регистрация: 20-04-07
Пользователь №: 27 212



Уважаемые!
Кто реализовывал работу интерфейса I2C на ATmega128 помогите советом. Никак не могу понять в чем у меня ошибка. Суть проблемы:
Не инициализируется аппаратный TWI. Возвращает коды состояния отличные от указанной в документации. Иногда появляются коды с арбитражем. Пробовал всевозможные установки порта D. Наверно здесь есть какая-нибудь особенность. Подскажите пожалуйста кто знает.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
beginer
сообщение May 24 2007, 11:27
Сообщение #2





Группа: Новичок
Сообщений: 12
Регистрация: 20-04-07
Пользователь №: 27 212



Dopler
Попробовали Ваши подпрограммы. В результате инициализация проходит, старт и стоп - работают. При передаче адреса данных и приёме данных код регистра TWSR равен 0x84. Пробовали с двумя различными микросхемами (чтобы исключить вероятнсть неисправности ведомой микросхемы) - AD7745 и 24C16 (микросхема памяти). При просмотре состояния линий после передачи линия SCL оказывается в низком уровне. С подтягивающими резисторами всё в норме (используем по 5 кОм). Никак не пойму где же всё-таки ошибка. Особо интересует, откуда берётся код 0x84?
Go to the top of the page
 
+Quote Post
defunct
сообщение May 25 2007, 15:06
Сообщение #3


кекс
******

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



Цитата(beginer @ May 24 2007, 14:27) *
При просмотре состояния линий после передачи линия SCL оказывается в низком уровне. С подтягивающими резисторами всё в норме (используем по 5 кОм). Никак не пойму где же всё-таки ошибка.

Низкий уровень на мой взгляд выдает ведомое устройство.
Как это может случиться - при чтении последний байт данных должен быть "NACKed",
если же послыется ACK - ведомое устройство считает что передача не закончена и может проигнорировать STOP.

На асме обслуживание Twi - "сизифов труд".. у вас же ж все-таки не t13 где ужимать надо все что можно. Почему выбрали asm?

Если интересует я бы мог поделиться примером TWI драйвера на Cи.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение May 25 2007, 17:48
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(defunct @ May 25 2007, 18:06) *
Низкий уровень на мой взгляд выдает ведомое устройство.
Как это может случиться - при чтении последний байт данных должен быть "NACKed",
Не, не путайте человека - ведомое может "придерживать" SCL чтобы притормаживать обмен, но не держать его постоянно в нуле, к тому же память 24хх на такое не способна. Это вы с SDA спутали. А кстати вопрос - не попутал ли автор SCL и SDA? И еще - проверить кто тянет можно если включить небольшой (100-200 ом) резистор в разрыв этой линии.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
defunct
сообщение May 25 2007, 22:30
Сообщение #5


кекс
******

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



Цитата(Сергей Борщ @ May 25 2007, 20:48) *
Это вы с SDA спутали.

Да, конечно, я говорил про SDA. Прошу прощения не углядел SCL в описании проблемы.

Если автор наблюдает проблему с SCL, то это imho все равно следствие того, что SDA в нуле:

SCL - затормозится при попытке выдачи STOP состояния (SDA ведь 0), т.е. аппаратная часть не может сформировать ни START, ни STOP.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- beginer   ATmega128+AD7745   May 21 2007, 07:58
- - Yura_K   Приведите, пожалуйста, код инициализации и прерыва...   May 21 2007, 12:57
- - beginer   Код инициализации: LDI R16,0x1C ; К...   May 22 2007, 10:03
- - bodja74   А теперь выкладывайте все остальное.   May 22 2007, 10:18
- - beginer   Контроль корректности выполнения операций сейчас н...   May 23 2007, 08:16
- - Dopler   Я в код сильно не вникал, выкладываю свои рабочие ...   May 23 2007, 13:30
- - IgorKossak   beginer, Dopler, предлагаю Вам в двухдневный срок ...   May 23 2007, 15:55
- - beginer   Dopler Спасибо, завтра поковыряем Ваши подпрограмм...   May 23 2007, 16:33
|- - IgorKossak   Цитата(beginer @ May 23 2007, 19:33) Igor...   May 23 2007, 16:45
- - beginer   Сергей Борщ ЦитатаА кстати вопрос - не попутал ли ...   May 25 2007, 23:43
|- - Сергей Борщ   Цитата(beginer @ May 26 2007, 02:43) Если...   May 26 2007, 10:02
- - beginer   Ничего не получилось. Контоллер на плате перепаял...   Jun 1 2007, 08:20
- - Ridllem   Цитата(beginer @ Jun 1 2007, 15:20) Ничег...   Jun 1 2007, 09:15


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

 


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


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