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

 
 
> MSP430 флаги UART
ThE_BuZz
сообщение Apr 10 2012, 06:33
Сообщение #1





Группа: Новичок
Сообщений: 9
Регистрация: 10-02-12
Пользователь №: 70 196



Использую контроллер CC430F5137. Возникла проблема с флагами уарта - а именно передача массива данных (опустошение буффера передатчика). Контроллер напроч не обращает внимание на флаги UCA0TXIFG и на UCBUSY. В итоге - мясо из байтов. Может кто сталкивался с таким?.

while(temp!=RxBuffer[0])
{
P3OUT |= BIT2; //Tx on
while((UCA0IFG&BIT1 == 0)&& (UCA0STAT&UCBUSY !=0));
UCA0TXBUF=RxBuffer[temp+1];

// for(i=0; i<8; i++)
// {
// }
temp++;
P3OUT &= ~BIT2; //Tx off
}
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 6)
MrYuran
сообщение Apr 10 2012, 06:43
Сообщение #2


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Не вдаваясь в прочие тонкости, так делать в корне неправильно.
У вас процессор сидит и скучает, пока байт неспешно вываливается наружу. И ладно, если на 115200, а если 1200?
Лучше работать через прерывания.
"мясо из байтов" - это что?


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
ThE_BuZz
сообщение Apr 10 2012, 07:10
Сообщение #3





Группа: Новичок
Сообщений: 9
Регистрация: 10-02-12
Пользователь №: 70 196



Я работаю с РС485 - т.е. мне еще нужно выставлять бит на приём/передачу. Вся проблемма в том, как его грамматно выставить на каждый байт.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 10 2012, 07:11
Сообщение #4


Гуру
******

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



QUOTE (ThE_BuZz @ Apr 10 2012, 09:33) *
while((UCA0IFG&BIT1 == 0)&& (UCA0STAT&UCBUSY !=0));
Здесь с логикой точно все в порядке? Ждать пока не взведен первый бит в UCA0IFG и взведен USBUSY? Просто взгляд зацепился, логики работы UART в 430 я уже не помню.


--------------------
На любой вопрос даю любой ответ
"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
ThE_BuZz
сообщение Apr 10 2012, 09:50
Сообщение #5





Группа: Новичок
Сообщений: 9
Регистрация: 10-02-12
Пользователь №: 70 196



UCA0IFG&BIT1 ==1 при опусташении буффера передатчика. USBUSY==1 на время приёма/передачи.
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Apr 10 2012, 10:51
Сообщение #6


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(ThE_BuZz @ Apr 10 2012, 13:50) *
UCA0IFG&BIT1

Вот эти штучки тоже бросьте.
Ведь есть же наверняка у этого бита мнемоническое обозначение.

А насчет переключения шины - можно же отправить пакет по прерываниям, а потом уже шаманить с отправкой последнего байта.


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
ThE_BuZz
сообщение Apr 10 2012, 13:33
Сообщение #7





Группа: Новичок
Сообщений: 9
Регистрация: 10-02-12
Пользователь №: 70 196



Цитата(MrYuran @ Apr 10 2012, 14:51) *
Вот эти штучки тоже бросьте.
Ведь есть же наверняка у этого бита мнемоническое обозначение.

А насчет переключения шины - можно же отправить пакет по прерываниям, а потом уже шаманить с отправкой последнего байта.


USCI_Ax Interrupt Flag Register (UCAxIFG)

UCTXIFG Bit 1 Transmit interrupt flag. UCTXIFG is set when UCAxTXBUF empty.
0 No interrupt pending
1 Interrupt pending
UCRXIFG Bit 0 Receive interrupt flag. UCRXIFG is set when UCAxRXBUF has received a complete character.
0 No interrupt pending
1 Interrupt pending
Проблемма в том, что бит UCTXIFG имеет нехорошее св-во не выставляться.
Go to the top of the page
 
+Quote Post

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

 


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


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