Миландр
http://forum.milandr.ru/

использование регистра CLRTX в 1986ВЕ1Т
http://forum.milandr.ru/viewtopic.php?f=22&t=3549
Страница 1 из 1

Автор:  NikP [ 2016-сен-09 08:36 ]
Заголовок сообщения:  использование регистра CLRTX в 1986ВЕ1Т

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

Автор:  редактор [ 2016-сен-09 08:43 ]
Заголовок сообщения:  Re: использование регистра CLRTX в 1986ВЕ1Т

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

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

Автор:  NikP [ 2016-сен-09 10:07 ]
Заголовок сообщения:  Re: использование регистра CLRTX в 1986ВЕ1Т

Спасибо. Получается, что порт с возможностью только записи. Жаль, что в даташите про SETTX и CLRTX ни слова подробно. Может, разработчики позже дополнят?

Автор:  -=Sergei=- [ 2016-сен-09 10:37 ]
Заголовок сообщения:  Re: использование регистра CLRTX в 1986ВЕ1Т

NikP писал(а):
Спасибо. Получается, что порт с возможностью только записи. Жаль, что в даташите про SETTX и CLRTX ни слова подробно. Может, разработчики позже дополнят?


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


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

Автор:  prostoRoman [ 2016-сен-09 21:41 ]
Заголовок сообщения:  Re: использование регистра CLRTX в 1986ВЕ1Т

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

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

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/