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

 
 
> Atmega128 проблемы с флагом TWINT
Nekromant
сообщение Mar 18 2011, 19:33
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 21-03-07
Пользователь №: 26 369



Доброго всем времени суток.
С недавнего времени подвернулся проектик который собираю на AtMega 128,в данном проекте нужно запустить TWI интерфейс, для считывания показаний времени со счетчика DS1307. И все бы хорошо и много веток нашлось на данном форме, НО ни в одном из случаев контроллер не может ничего счтитать.
При попытке разгобраться в чем проблема выяснилось, что при попытке записать данные в регистр-TWDR данные, в регистре TWCR устанавливается флаг TWWC - ошибочная запись.
из даташита выяснилось что: После успешной передачи ПОДЧИН_АДР + ЗАПИСЬ должен быть передан пакет данных. Его передача инициируется записью байта данных в TWDR. Доступ на запись к TWDR разрешен только тогда, когда флаг TWINT равен 1. В противном случае доступ блокируется и устанавливается флаг ошибочной записи TWWC в регистре TWCR. После обновления TWDR необходимо сбросить бит TWINT (путем записи в него лог. 1) для продолжения сеанса связи.(стр 215 оригинального даташита на Atmega128-engl)
я в свою очередь после этого попытался вручную установить сначала один бит TWINи записать данные:
TWCR|=(1<<TWINT);
TWDR = adr;
twcr=TWCR;
Lcd.WriteInt(twcr);- но на дисплее получил число 44 что означает? что бит TWWC установился снова.
далее попробовал полностью в регистр TWCR записать все единицы

TWCR|=((1<<TWINT)|(1<<TWEA)|(1<<TWSTA)|(1<<TWSTO)|(1<<TWWC)|(1<<TWIE));
и так
TWCR=255; но на мое удивление при записи и последующем считывании снова получил, что бит TWINT установлен в 0.
итак суть вопроса: как правильно сделать запись, чтоб данные в регистр TWDR попали и при этом бит TWWC не установился?
PS да и бит TWEN в регистре TWCR естественно включено и состояние регистра TWBR=255 и значение предделителей TWPS0 и TWPS1 в единицы.(самая медленная скорость, так как за неимением осциллографа пользуемся дедушким методом отладки-светодиоды вешаем на линии и пытаемся понять хоть что уходит с МК для начала).

Сообщение отредактировал Nekromant - Mar 18 2011, 19:38
Go to the top of the page
 
+Quote Post



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

 


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


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