msp430 UART (msp430f5435a)

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
dzrkot
Открыл глаза
Сообщения: 75
Зарегистрирован: Чт авг 29, 2013 08:02:24

msp430 UART (msp430f5435a)

Сообщение dzrkot »

В отладочных целях необходимо вкл UART (на msp430f5435a) , платы пока что нет, но хотелось бы просто показать грамотным людям это:
написал такую функцию для инициалзации

Код: Выделить всё

void uart()
{
P3SEL=pin3+pin4;                 // порты 3.4 , 3.5 на UART
UCA0CTL1 |= UCSWRST;             // грубо говоря отключаем UART ... я так понимаю что мне это делать не надо т.к. прерываний связаннх с UART у меня нет
UCA0CTL1 |= UCSSEL_2;            // настраиваем работу UART от SMCLK
UCA0BR0 = 0xDA; // делитель для 9600 (моя частота 2.097152 MHz , и ровно 900 мне не получить...скажется ли?)
UCA0BR1 = 0x00; // 2ой делитель
UCA0CTL1 &= ~UCSWRST; //включаем UART
//UCA0TXBUF=; // буфер передатчика
}
вообщем правильна ли она?
моё устр-во будет общаться с другим по I2C , для контроля правильности, хочу видеть посылки на терминале, т.е. мне нужно просто отправлять посылки по UART в определённые моменты, как это правильно делается? просто записать в буфер UCA0TXBUF слово?
Нашел такую функцию

Код: Выделить всё

void UARTWriteString(string str)
{
  int strSize = str.length();
  for(int i = 0; i < strSize; i++)
  {
    WDTCTL = WDTPW + WDTCNTCL; // Сброс таймера watchdog в ноль.
    while (!(IFG2&UCA0TXIFG)); // Проверка готовности буфера отправки.
    UCA0TXBUF = str[i];
  }
}
у меня для отправки unsigned char будет примерно так? или достаточно просто UCA0TXBUF = str;

Код: Выделить всё

void UARTWriteString(unsigned char str)
{
    WDTCTL = WDTPW + WDTCNTCL; // Сброс таймера watchdog в ноль.
    while (!(IFG2&UCA0TXIFG)); // Проверка готовности буфера отправки.
    UCA0TXBUF = str;
  }
Реклама
Аватара пользователя
Ser60
Друг Кота
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Re: msp430 UART (msp430f5435a)

Сообщение Ser60 »

Инициализация правильная, команда
UCA0CTL1 |= UCSWRST;
с прерываниями ничего общего не имеет. Ее можно не подавать, т.к. этот бит изначально равен 1 после ресета.

С делителем на 218 разница в скорости с 9600 получается около 0.2%, т.е. все должно сработать. Перед загрузкой байта в регистр UCA0TXBUF нужно проверять отослан-ли предыдущий байт. Для этого в функции и служит while-loop. Если watchdog в проекте не используется, в функции его можно не обнулять. Ваша модификация функции должна работать.
Реклама
dzrkot
Открыл глаза
Сообщения: 75
Зарегистрирован: Чт авг 29, 2013 08:02:24

Re: msp430 UART (msp430f5435a)

Сообщение dzrkot »

Огромное спасибо)
Аватара пользователя
Ser60
Друг Кота
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Re: msp430 UART (msp430f5435a)

Сообщение Ser60 »

Да не за что. Только я не понял: Вы с месяц назад тоже спрашивали что-то про этот МК, а теперь пишете, что все еще нет платы. Если ждете демо-плату для обучения, то зачем начинать с такого монстра? Если делаете устройство на нем, мне было-бы очень любопытно хотя-бы в общих чертах узнать что за устройство, где нужен такой мощный МК. Судя по темам на форуме, здесь никого кроме нас с Вами не интересует 5-я серия. Тогда в след. раз обращайтесь-уж сразу в личку, чтобы форум не засорять. Буду искренне рад, если укажут, что я с этим не прав.
Реклама
Эиком - электронные компоненты и радиодетали
dzrkot
Открыл глаза
Сообщения: 75
Зарегистрирован: Чт авг 29, 2013 08:02:24

Re: msp430 UART (msp430f5435a)

Сообщение dzrkot »

отвечу сразу в личку
Реклама
Ответить

Вернуться в «Разные вопросы по МК»