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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> MSP430F449 UART - необходима помощь...., help
Fenriz
сообщение Dec 12 2005, 12:48
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 24
Регистрация: 12-12-05
Пользователь №: 12 106



Люди, если не трудно, помогите студенту: Хочу связать MSP430F449 с PC через COM (ну хотя бы, чтоб контроллер эхо на HyperT дал) и ничего не получается.
Заранее спасибо.
Go to the top of the page
 
+Quote Post
Adlex
сообщение Dec 12 2005, 13:13
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 500
Регистрация: 8-08-05
Пользователь №: 7 451



UART процессора - драйвер RS232 (напр. ST232) - COM порт компьютера. В самом простейшем случае используются только цепи TXD, RXD и GND.
Go to the top of the page
 
+Quote Post
Joy
сообщение Dec 12 2005, 13:56
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 89
Регистрация: 28-10-05
Из: Киев
Пользователь №: 10 227



а какие конкретно проблемы? ставится микросхема типа ST232, настраивается UART (в доке достаточно точно описан этот процесс) - и все! правда у меня иногда бывали проблемы именно с гипертерминалом (почему-то байты приходят. но не отправляются. в этом смысле беспроигрышный вариант - mTTY
Прикрепленные файлы
Прикрепленный файл  MTTTY.rar ( 104.99 килобайт ) Кол-во скачиваний: 96
 
Go to the top of the page
 
+Quote Post
avesat
сообщение Dec 12 2005, 18:39
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 589
Регистрация: 14-08-05
Из: Украина
Пользователь №: 7 621



Проблема скорее всего в неправильной инициализации UARTA. Описание его настроек лучше чем в мане ты вряд ли где найдешь, там и блок схемки есть, по которым мож набить свою программу. Под иаровским симулятором посмотри регистры USART0. Ну, если совсем глухо, наверно железяка мертвая.


--------------------
"Мы будем играть, пока не треснут наши гитары, и все те, кто любит рок - я отдаю вам честь!" AC/DC
Go to the top of the page
 
+Quote Post
rezident
сообщение Dec 12 2005, 21:29
Сообщение #5


Гуру
******

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



Думаю, что студенту помощь в виде уже готовой программы нужна. Нахяляву так сказать. Иначе он привел бы свой код и спросил что он не так делает. Студент, я угадал? wink.gif
Go to the top of the page
 
+Quote Post
Bolg
сообщение Dec 13 2005, 02:59
Сообщение #6





Группа: Новичок
Сообщений: 8
Регистрация: 13-12-05
Из: Хабаровск
Пользователь №: 12 142



Господа разработчики, вы неправильно поняли fenriza!
Мы с ним занимаемя разработкой небольшого устройства, какого неважно. На этапе отладки нам требуется связаться с сом-портом по терминальной программе.
В качестве преобразователя уровней RS-232 в TTL используется MAX232 со стандартной обвязкой взятой из мануала. Текст программы следующий:

#include <msp430x44x.h>

void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT

FLL_CTL0 |= XCAP18PF; // Configure load caps

P2SEL |= 0x30; // P2.4,5 = USART0 TXD/RXD
ME1 |= UTXE0 + URXE0; // Enable USART0 TXD/RXD

UCTL0 |= CHAR; // 8-bit character
UTCTL0 |= SSEL0; // UCLK = ACLK
UBR00 = 0x0D; // 32k/2400 - 13.65
UBR10 = 0x00;
UMCTL0 = 0x6B; // Modulation
UCTL0 &= ~SWRST; // Initialize USART state machine
IE1 |= URXIE0; // Enable USART0 RX interrupt

// Mainloop
for (;;)
{
_BIS_SR(LPM3_bits + GIE); // Enter LPM3 w/interrupt
while (!(IFG1 & UTXIFG0)); // USART0 TX buffer ready?
TXBUF0 = RXBUF0; // RXBUF0 to TXBUF0
}
}

// UART0 RX ISR will for exit from LPM3 in Mainloop
__interrupt void usart0_rx (void);
USART0RX_ISR(usart0_rx)
__interrupt void usart0_rx (void)
{
_BIC_SR_IRQ(LPM3_bits); // Clear LPM3 bits from 0(SR)
}

Взят из стандартных примеров Тексаса. Среда - Code Composer.
Контроллер находится в отадочной плате, т.е. питание и прочая разводка выполнена заводстким методом. Единственная добавленная деталь - кварц на 32 КГц с обвязкой из двух кондеров на 10 пФ. Сам микроконтролер рабочий - работоспосоност проверена с помощью тестовой программы с лапочкой. Сама микросхема MAX232 также рабочая. Соответсвенно возникает вопрос - где ошибка? huh.gif
Думается что скорее всего в коде. Он перед вами - надеемся на совет.
Халявы нам не надо, а нужна помощь или совет более опытных людей! rolleyes.gif
Go to the top of the page
 
+Quote Post
Bolg
сообщение Dec 13 2005, 03:58
Сообщение #7





Группа: Новичок
Сообщений: 8
Регистрация: 13-12-05
Из: Хабаровск
Пользователь №: 12 142



Можете стучать в асю 290-240-096
Go to the top of the page
 
+Quote Post
VAI
сообщение Dec 13 2005, 04:54
Сообщение #8


Профессионал
*****

Группа: Модераторы
Сообщений: 1 120
Регистрация: 17-06-04
Пользователь №: 37



лучше бы не MAX232, а MAX3232.
а
Цитата
32 КГц с обвязкой из двух кондеров на 10 пФ
соответствует даташиту?
Сделайте пока без всяких выпендриваний с приемом и засыпанием
Код
// Mainloop
  for (;; )
  { while ( !( IFG1 & UTXIFG0 ))
     ; // USART0 TX buffer ready?
      TXBUF0 = 0x55;
  }

должен передавать непрерывно 0х55 и смотрите осцилом, че у Вас получается.


--------------------
Если зайца бить, его можно и спички научить зажигать
Сколько дурака не бей - умнее не будет. Зато опытнее
Go to the top of the page
 
+Quote Post
Bolg
сообщение Dec 13 2005, 05:14
Сообщение #9





Группа: Новичок
Сообщений: 8
Регистрация: 13-12-05
Из: Хабаровск
Пользователь №: 12 142



Не вижу принципиальной разницы между MAX232 и MAX3232... Может объясните в чем она?
Что по поводу засыпания, то в принципе согласен, попробуем, хотя что-то похожее уже пытались делать.

Кондеры для кристала взяты в соответствии с опытом работы с AVR и по рекомендации мануала.
Go to the top of the page
 
+Quote Post
Fenriz
сообщение Dec 13 2005, 07:13
Сообщение #10


Участник
*

Группа: Новичок
Сообщений: 24
Регистрация: 12-12-05
Пользователь №: 12 106



Попробывал забить буфер передачи TXBUF0=0x55 - результат 0. Состояние буфера на дебагере - "пустой".
Go to the top of the page
 
+Quote Post
Bolg
сообщение Dec 13 2005, 07:34
Сообщение #11





Группа: Новичок
Сообщений: 8
Регистрация: 13-12-05
Из: Хабаровск
Пользователь №: 12 142



Цитата(Fenriz @ Dec 13 2005, 18:13) *
Попробывал забить буфер передачи TXBUF0=0x55 - результат 0. Состояние буфера на дебагере - "пустой".

А ты отключил переход в режим LPM3?
Если нет - отключи
Go to the top of the page
 
+Quote Post
VAI
сообщение Dec 13 2005, 08:08
Сообщение #12


Профессионал
*****

Группа: Модераторы
Сообщений: 1 120
Регистрация: 17-06-04
Пользователь №: 37



Цитата
Не вижу принципиальной разницы между MAX232 и MAX3232... Может объясните в чем она?

Я тоже не вижу, кроме того, что MAX3232 предназначена для 3-х Вольтового питания, а MAX232 для 5 и при 3В может не запустится. Во всяком случае это всегда можно проверить тем-же осцилографом.

Цитата
Кондеры для кристала взяты в соответствии с опытом работы с AVR и по рекомендации мануала.

А здесь надо руководствоваться мануалом на MSP :-)

Сообщение отредактировал VAI - Dec 13 2005, 08:13


--------------------
Если зайца бить, его можно и спички научить зажигать
Сколько дурака не бей - умнее не будет. Зато опытнее
Go to the top of the page
 
+Quote Post
rezident
сообщение Dec 13 2005, 22:34
Сообщение #13


Гуру
******

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



Bolg, если используете MAX232 вместо MAX3232, то запитайте ее от 5В, а на входе URXD0 MSP430 установите резисторный делитель, чтобы на нем не было превышения уровня сигнала выше питания.

Для MSP430F149 с кварцем 32786Гц для скорости 2400,8,n,1 процедура инициализации USART0 примерно такая.

Код
#define PIN_TXD0 0x10
#define PIN_RXD0 0x20

U0CTL=SWRST;
U0CTL|=CHAR;
U0TCTL=SSEL0;
U0BR1=0x00;
U0BR0=0x0D;
U0MCTL=0x6B;
ME1|=UTXE0+URXE0;
U0RCTL=URXEIE;
U0CTL&=~SWRST;
P3SEL|=PIN_TXD0+PIN_RXD0;
IFG1&=~(UTXIFG0+URXIFG0);
IE1|=UTXIE0+URXIE0;


Кстати, проверьте, что часовой кварц действительно генерит.
Go to the top of the page
 
+Quote Post
Fenriz
сообщение Dec 14 2005, 15:21
Сообщение #14


Участник
*

Группа: Новичок
Сообщений: 24
Регистрация: 12-12-05
Пользователь №: 12 106



MAX232 запитывается 5-ю вольтами: с физикой проблем нет всё работает как часы. UART запустил - эхо снял (Код ассемблеровый - texas-овские мануалы помогли) - с сишным кодом пока траблы.
Go to the top of the page
 
+Quote Post
Bolg
сообщение Dec 15 2005, 05:38
Сообщение #15





Группа: Новичок
Сообщений: 8
Регистрация: 13-12-05
Из: Хабаровск
Пользователь №: 12 142



Как уже заметил Fenriz, питание на MAX232 подавалось 5В. Впрочем это следовало оговорить сразу smile.gif
Вообщем-то проблема с одной стороны разрешилась (ассемблер работает), но с другой стороны возникает вопрос почему С++ не работает? Ведь авторы кода одни и те же - ТI!!!

To Rezident

Спасибо конечно за код, но не вижу принципиальных отличий от предложенного мной smile.gif Хочу лишь спросить - он проверен на реальном устройстве? Что касается кварца, то тут сомнений никаких - 32КГц, железно!
Go to the top of the page
 
+Quote Post

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

 


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


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