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

 
 
> Uart обмен данными, или помогите послать байт
EverGreen_
сообщение May 24 2009, 18:19
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 16
Регистрация: 26-01-09
Пользователь №: 43 973



Здравствуйте
Имеется 149 кристал ,кварцевый резонатор 32кГц. Пытаюсь отправить потоком один и тот же символ
а также читать то что приходит. Результат отправки для начала смотрю
осциллографом на ноге Tx , но там постоянно высокий уровень. Также пытаюсь поставить
бряк в обработчике прерывания Rx но IAR почему то говорит что там точку останова ставить нельзя и
она становится бледно розовой .
вот код, в основном из примеров TI .
Скажите пожалуйста , что здесь не так
Код
void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop watchdog
  P3SEL = 0x30;                             // P3.3,4 = USART0 TXD/RXD
  U0CTL = SWRST;
  ME1 |= UTXE0 + URXE0;                     // Enabled USART0 TXD/RXD
  UCTL0 |= CHAR;                            // 8-bit character, SWRST=1
  UTCTL0 |= SSEL0;                          // UCLK = ACLK
  UBR00 = 0x03;                             // 9600 from 1Mhz
  UBR10 = 0x00;                             //
  UMCTL0 = 0x4A;                            // Modulation
  UCTL0 &= ~SWRST;                          // Initialize USART state machine
  IE1 |= URXIE0;                   // Enable USART0 RX interrupt
  IFG1 &= ~UTXIFG0;                         // Clear inital flag on POR
  _EINT();
  while(1){
       while ((IFG1 & UTXIFG0) == 0); //ждем пока буфер будет свободен
       TXBUF0 = 0x30;                       //отсылаем символ
  }
}
#pragma vector = USART0RX_VECTOR
__interrupt void RxD()
{
    char rec_char  = RXBUF0;
  
}
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
EverGreen_
сообщение May 25 2009, 15:05
Сообщение #2


Участник
*

Группа: Новичок
Сообщений: 16
Регистрация: 26-01-09
Пользователь №: 43 973



Спасибо за советы !
Модуль тактирования проинициализировал так
Код
BCSCTL1 |= (RSEL0+RSEL1+RSEL2);

Цитата
Вообще-то для использования UART функции пинов нужно конфигурировать так
Код
P3DIR|=0x10;
P3SEL|=0x30;

мне немного непонятна первая строка. Может все таки P3DIR | = BIT4 ??
Ведь Tx висит на P3.4.
Код
void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                
  BCSCTL1 |= (RSEL0+RSEL1+RSEL2);
  U0CTL |= SWRST;
  U0CTL &= ~SWRST;
  P3SEL = 0x30;                            
  P3DIR |= BIT4;                          
  ME1 |= UTXE0 + URXE0;                    
  UCTL0 |= CHAR;                              
  UTCTL0 |= SSEL0;                            
  UBR00 = 0x03;                                
  UBR10 = 0x00;                                
  UMCTL0 = 0x4A;                          
  IE1 |= URXIE0;                          
    while(1){    
        while ((IFG1 & UTXIFG0)==0); //ждем когда буфер будет готов
       TXBUF0 = 0x30;                     // отсылаем символ
  }
}
#pragma vector = USART0RX_VECTOR
__interrupt void RxD()
{
  volatile char rec_char  = RXBUF0;
}

В этом случае на Tx наблюдается сигнал .
Подскажите пожалуйста , чем можно посмотреть те символы что я передаю . Я где то слышал на форуме , вроде от Вас ,rezident , что это можно сделать с помощью программы hyperterminal под Windows .Так же хочется отправить какой нибудь символ в обратную сторону .Объясните пожалуйста как.
Go to the top of the page
 
+Quote Post



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

 


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


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