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

 
 
 
Reply to this topicStart new topic
> UART на MSP430G2553
BratInt
сообщение Aug 24 2012, 16:42
Сообщение #1


Участник
*

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



Как осуществить обмен данными с MSP430G2553 через встроенный UART?
Проверял исходники, поставляемые от TI, вот например:
Код
#include  "msp430g2553.h"

void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  BCSCTL1 = CALBC1_1MHZ;                    // Set DCO
  DCOCTL = CALDCO_1MHZ;
  P1SEL = BIT1 + BIT2;                     // P1.1 = RXD, P1.2=TXD
  P1SEL2 = BIT1 + BIT2;                     // P1.1 = RXD, P1.2=TXD
  UCA0CTL1 |= UCSSEL_2;                     // SMCLK
  UCA0BR0 = 104;                            // 1MHz 9600
  UCA0BR1 = 0;                              // 1MHz 9600
  UCA0MCTL = UCBRS0;                        // Modulation UCBRSx = 1
  UCA0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
  IE2 |= UCA0RXIE;                          // Enable USCI_A0 RX interrupt

  __bis_SR_register(LPM0_bits + GIE);       // Enter LPM0, interrupts enabled
}

//  Echo back RXed character, confirm TX buffer is ready first
#pragma vector=USCIAB0RX_VECTOR
__interrupt void USCI0RX_ISR(void)
{
  while (!(IFG2&UCA0TXIFG));                // USCI_A0 TX buffer ready?
  UCA0TXBUF = UCA0RXBUF;                    // TX -> RXed character
}


И другие, на 9600, 19200, 115200 - не работает. Отправляю данные на контроллер (через ланчпад) - функция обработки прерывания вобще не вызывается.
Go to the top of the page
 
+Quote Post
rezident
сообщение Aug 24 2012, 18:09
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Oversampling отключите (не устанавливать бит UCBRS0 в регистре UCA0MCTL). Ваши делители на него не рассчитаны.
Второй вариант. Вы случайно затерли сегмент флеш INFO_A с калибровочными коэффициентами, записанными на заводе. Попробуйте исключить две строки инициализации системы тактирования с их участием. После сброса система тактирования и так работает на частоте 1МГц.
Go to the top of the page
 
+Quote Post
BratInt
сообщение Aug 24 2012, 20:32
Сообщение #3


Участник
*

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



Спасибо, но не помогло.
Хотя вроде я понял в чём проблема - здесь P1.1=RXD, P1.2=TXD, а на ланчпаде - наоборот P1.1=TXD, P1.2=RXD...
Кстати UART на Таймере А работает нормально.
Go to the top of the page
 
+Quote Post

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

 


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


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