Миландр

Ключевым подразделением нашей компании является Центр Проектирования интегральных микросхем
Текущее время: 2017-дек-17 07:15

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
СообщениеДобавлено: 2016-сен-09 08:36 
Не в сети

Зарегистрирован: 2015-апр-21 15:20
Сообщения: 13
Для установки-сброса битов в порте (или порту?) решил использовать регистры SETTX и CLRTX. Программа делала не то что хотел. Написал кусочек для отладки:
PORTA->RXTX |= 0xFFFFFFFF; --> в порте установилось 0x0000FFFF
PORTA->RXTX &= 0xFFFFFFAF;--> в порте установилось 0x0000FFАF
PORTA->CLRTX |= 0x00000020; --> в порте установилось 0x00000000 !!!!!! а ожидал сброс одного бита и результат 0x0000FF8F
Я что-то делаю не так ?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2016-сен-09 08:43 
Не в сети

Зарегистрирован: 2010-авг-30 19:12
Сообщения: 381
Цитата:
PORTA->CLRTX |= 0x00000020; --> в порте установилось 0x00000000 !!!!!! а ожидал сброс одного бита и результат 0x0000FF8F
Я что-то делаю не так ?

не думаю, что чтение регистра PORTA->CLRTX возвращает состояние порта
правильно использовать
Код:
PORTA->CLRTX = 0x00000020;

_________________
О сколько нам открытий чудных
Готовит просвященья дух,
И опыт - сын ошибок трудных ... (Пушкин)

Пергаменты не утоляют жажду ("Фауст",Гете)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2016-сен-09 10:07 
Не в сети

Зарегистрирован: 2015-апр-21 15:20
Сообщения: 13
Спасибо. Получается, что порт с возможностью только записи. Жаль, что в даташите про SETTX и CLRTX ни слова подробно. Может, разработчики позже дополнят?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2016-сен-09 10:37 
Не в сети

Зарегистрирован: 2009-май-22 09:01
Сообщения: 1271
Откуда: АО "ПКК Миландр"
NikP писал(а):
Спасибо. Получается, что порт с возможностью только записи. Жаль, что в даташите про SETTX и CLRTX ни слова подробно. Может, разработчики позже дополнят?


15…0 CLRTX[15:0] Регистр индивидуального сброса выхода порта
Запись единицы в соответствующий разряд регистра сбрасывает в ноль соответствующий разряд выхода порта PORTx_RXTX.
Запись нуля не влияет на состояние соответствующего выхода порта PORTx_RXTX.
Читается ранее записанным в регистр значениями, а не состояние соответствующих входов порта PORTx_RXTX.


т.е если надо сбросить только один бит, то не надо делать |=. Достаточно только =.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2016-сен-09 21:41 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1039
Откуда: Тула
NikP писал(а):
Для установки-сброса битов в порте (или порту?) решил использовать регистры SETTX и CLRTX. Программа делала не то что хотел. Написал кусочек для отладки:
PORTA->RXTX |= 0xFFFFFFFF; --> в порте установилось 0x0000FFFF
PORTA->RXTX &= 0xFFFFFFAF;--> в порте установилось 0x0000FFАF
PORTA->CLRTX |= 0x00000020; --> в порте установилось 0x00000000 !!!!!! а ожидал сброс одного бита и результат 0x0000FF8F
Я что-то делаю не так ?

Более того, вся идея этих регистров заключается в том, чтобы управлять битами порта производя одну лишь запись, не выполняя чтение-модификация-запись.

_________________
сочувствующий…


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB