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

 
 
 
Reply to this topicStart new topic
> I2C: Проблема с регистром в AVR, Установка бита TWINT
vargy
сообщение Sep 24 2011, 17:00
Сообщение #1





Группа: Новичок
Сообщений: 2
Регистрация: 24-09-11
Пользователь №: 67 360



Не могу установить бит в TWINT в регистре TWCR, пробовал:
TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN);
TWCR = 0b10100100;

Моделировал в AVR Studio4, платформы Proteus VSM Viewer, AVR Siulator, в самом Proteus.

Контроллеры AtMega128, 32.

Сообщение отредактировал vargy - Sep 24 2011, 17:01
Go to the top of the page
 
+Quote Post
Палыч
сообщение Sep 24 2011, 17:58
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(vargy @ Sep 24 2011, 21:00) *
Не могу установить бит в TWINT в регистре TWCR

Как большенство флагов в AVR этот флаг можно прочитать или программно сбросить записью в него единицы, но не установить.
Go to the top of the page
 
+Quote Post
vargy
сообщение Sep 24 2011, 19:10
Сообщение #3





Группа: Новичок
Сообщений: 2
Регистрация: 24-09-11
Пользователь №: 67 360



Так и оказалось, смущает только то, что в отличии от реального железа, эмуляторы этот бит не устанавливали, а также то, что в примере кода в даташите этот бит установлен программно.
Go to the top of the page
 
+Quote Post
AlexFTF
сообщение Sep 25 2011, 03:36
Сообщение #4


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

Группа: Свой
Сообщений: 95
Регистрация: 11-11-10
Из: Новосибирск
Пользователь №: 60 808



Цитата(vargy @ Sep 25 2011, 02:10) *
Так и оказалось, смущает только то, что в отличии от реального железа, эмуляторы этот бит не устанавливали, а также то, что в примере кода в даташите этот бит установлен программно.


Эмуляторы действительно не устанавливают флаги, по крайней мере флаги прерывания. Почему? Непонятно... Поэтому я предпочитаю делать отладку прямо в железе sm.gif
Go to the top of the page
 
+Quote Post
Палыч
сообщение Sep 25 2011, 08:46
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(vargy @ Sep 24 2011, 23:10) *
в примере кода в даташите этот бит установлен программно.
C чего Вы взяли, что этот бит "установлен программно"? В примере команда
ldi r16, (1<<TWINT)|(1<<TWSTA)|(1<<TWEN)
out TWCR, r16
устанавливает биты TWSTA,TWEN и сбрасывает бит TWINT, поскольку этот бит сбрасывается записью в него единицы.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 15:14
Рейтинг@Mail.ru


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