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

 
 
> TWI интерфейс
KIG
сообщение Jan 2 2009, 19:34
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 115
Регистрация: 25-12-06
Пользователь №: 23 884



Здравствуйте!
Пытаюсь реализовать связь между МК Atmega164P и микросхемой PCF8535 c помощью TWI интерфейса. На ножке часов A0 высокий уровень. Не могу прочитать байты из часов. Что не так? Текст проги следующий:

TWCR=(1<<TWEN)|(1<<TWINT)|(1<<TWSTA)|(1<<TWEA); (add_sl-байт адреса часов (равен 1), add-адрес читаемого байта в часах)
while (!(TWCR&(1<<TWINT)));

TWDR=(add_sl<<1);
TWCR=(1<<TWEN)|(1<<TWINT)|(1<<TWEA);
while (!(TWCR&(1<<TWINT)));

TWDR=add;
TWCR=(1<<TWEN)|(1<<TWINT)|(1<<TWEA);
while (!(TWCR&(1<<TWINT)));
TWDR=(add_sl<<1)|1;

TWCR=(1<<TWEN)|(1<<TWINT)|(1<<TWEA);
while (!(TWCR&(1<<TWINT)));

TWCR=(1<<TWEN)|(1<<TWINT)|(1<<TWEA);
while (!(TWCR&(1<<TWINT)));

time=TWDR;
TWCR=(1<<TWEN)|(1<<TWINT);
while (!(TWCR&(1<<TWINT)));

TWCR=(1<<TWEN)|(1<<TWINT)|(1<<TWSTO)|(1<<TWEA);

Заранее спасибо

Сообщение отредактировал KIG - Jan 2 2009, 19:36
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
KIG
сообщение Jan 3 2009, 11:18
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 115
Регистрация: 25-12-06
Пользователь №: 23 884



Неужели никто не работал с TWI?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 3 2009, 14:21
Сообщение #3


Гуру
******

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



Цитата(KIG @ Jan 3 2009, 13:18) *
Неужели никто не работал с TWI?
С TWI - нет, а с I2C приходилось. В вашей программе нет анализа ACK, поэтому вообще непонятно, что она будет делать если ведомое устройство отсутствует или занято.
Цитата
(add_sl-байт адреса часов (равен 1)
Адрес состоит из 7 или 10 битов. Адресная нога задает один из них, остальные фиксированы для данного типа ведомого и не равны нулю - читайте документацию внимательнее.


--------------------
На любой вопрос даю любой ответ
"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
KIG
сообщение Jan 3 2009, 18:33
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 115
Регистрация: 25-12-06
Пользователь №: 23 884



Спасибо, разобрался. Действительно проблема была с адресом (старшая тетрада фиксирована). Также необходимо было добавить стартовое событие после ввода адреса читаемого байта.
Go to the top of the page
 
+Quote Post



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

 


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


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