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

 
 
> Снова UART
!Roma!
сообщение Jan 25 2007, 18:09
Сообщение #1





Группа: Новичок
Сообщений: 14
Регистрация: 17-01-07
Пользователь №: 24 520



Здравствуйте, недавно начал осваивать программирование микроконтроллеров, в частности msp430F169, столкнулся с проблемой передачи данных с него на компьютер.
При передаче странно работает флаг UTXIFG0, т.е. он абсолютно не реагирует на помещение данных в U0TXBUF(хотя судя по руководству, должен сбрасываться), сбрасываеися лишь после вызова обработчика прерываний, и потом так и остается в нуле до PUC или SWRST=1.

Научите уму-разуму)), подскажите где ошибка. Спасибо.

Источник тактирования DCO (800kHz)

#include "msp430x16x.h"

int TransmitPacket(char *pData, int nDataSize);

int main()
{
// Остановить WatchDog timer
WDTCTL = WDTPW + WDTHOLD;

/**
Сбросить модуль USART (SWRST=1),
Настроить порт:
8 бит в пакете,
без контроля четности,
1 стоп-бит
*/
U0CTL = SWRST;

// Установить длину данных - 8 бит
U0CTL |= CHAR;

// Источник тактирования - SMCLK
U0TCTL |= SSEL1;

// Установить скорость работы порта 9600 бод
U0BR0 = 0x53;

U0BR1 = 0x00;

U0MCTL = 0x03;

// Включить модуль USART через SFR (прием и передача)
ME1 |= UTXE0 | URXE0;

// Разрешить прерывания по приему
IE1 |= URXIE0;

// Очищаем SWRST бит
U0CTL &= ~SWRST;

/*____________________Проверка_отправки_данных_на_компьютер______________________
_____*/

char aCheckData[] = {0x31,0x32,0x33};

int nCheckDataLen = 3;

for (;;)
{
TransmitPacket(aCheckData,nCheckDataLen);
}

}//main

/**
\fn int TransmitPacket(char *pData, int nDataSize)
\param pData - указатель на передаваемый буфер
nDataSize - размер передаваемых данных
\brief Отправить данные в порт
*/

int TransmitPacket(char *pData, int nDataSize)
{
// Разрешить прерывания по приему
IE1 |= UTXIE0;

// Переменная для хранения очередного байта данных (для ускорения операции доступа к данным массива)
char *pTmpData = pData;

// Цикл передачи данных
for (int nCount=nDataSize; nCount>0; nCount--)
{
// Разрешить маскированные прерывания (прерывания от периферийных модулей)
_EINT();

// Дождаться готовности передатчика к приему новых данных
while ( !(IFG1 & UTXIFG0) );

// Буфер готов к приему, записать очередной байт данных
U0TXBUF = *pTmpData++;

// Дождаться завершения предыдущей операции записи
while ( !(U0TCTL & TXEPT) );
}

// Передача завершена, прекратить вызов обработчика прерываний
IE1 ^= UTXIE0;

return 0;

}// end of TransmitPacket()

#pragma vector = UART0TX_VECTOR

/**
\fn void Uart0_TX (void)
\brief Функция-обработчик прерываний от UART0 (при передаче)
*/
__interrupt void Uart0_TX (void)
{
// Прерывание обработано, сбросить GIE-бит
_BIC_SR_IRQ(GIE);
}
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- !Roma!   Снова UART   Jan 25 2007, 18:09
- - rezident   Во-первых, в опциях создания сообщения есть тэги ц...   Jan 25 2007, 22:13
- - Lucky:)   // Разрешить прерывания по приему IE1 |= UTXIE0; э...   Jan 25 2007, 22:26
- - !Roma!   Спасибо за дельные замечания, постараюсь учесть на...   Jan 26 2007, 12:09
|- - rezident   Цитата(!Roma! @ Jan 26 2007, 14:0...   Jan 26 2007, 15:28
- - !Roma!   Подрихтовал исходники )), проблемма все таже: флаг...   Jan 29 2007, 21:11
- - rezident   Так и будете в час, точнее в день по чайной ложке ...   Jan 30 2007, 04:09
- - jorikdima   я от МСП430 и в виндовозном терминале все прекрано...   Jan 30 2007, 09:35
- - !Roma!   Ну на счет manual могу чесно сказать, что прочитал...   Jan 30 2007, 20:47
|- - rezident   Цитата(!Roma! @ Jan 30 2007, 22:4...   Jan 30 2007, 21:31
|- - Lucky:)   Цитата(rezident @ Jan 30 2007, 21:31) Как...   Jan 30 2007, 21:41
|- - rezident   Цитата(Lucky:) @ Jan 30 2007, 23...   Jan 30 2007, 22:09
|- - Lucky:)   Цитата(rezident @ Jan 30 2007, 22:09) Не ...   Jan 30 2007, 22:40
- - !Roma!   ЦитатаДа не игнорировал он его Что ж на это мне от...   Feb 3 2007, 11:55
|- - Lucky:)   Цитата(!Roma! @ Feb 3 2007, 11:55...   Feb 3 2007, 19:41
|- - Dog Pawlowa   Цитата(!Roma! @ Feb 3 2007, 12:55...   Feb 3 2007, 20:58
|- - Сергей Борщ   Цитата(!Roma! @ Feb 3 2007, 12:55...   Feb 3 2007, 23:29
|- - Dog Pawlowa   >>>>>>Хм. Но с прерываниями по п...   Feb 4 2007, 16:43
|- - rezident   Цитата(!Roma! @ Feb 3 2007, 13:55...   Feb 4 2007, 20:05
|- - Dog Pawlowa   Цитата(rezident @ Feb 4 2007, 21:05) Цита...   Feb 5 2007, 17:10
|- - IgorKossak   Цитата(Dog Pawlowa @ Feb 5 2007, 16:10) 1...   Feb 5 2007, 20:39
|- - rezident   Цитата(Dog Pawlowa @ Feb 5 2007, 19:10) Н...   Feb 6 2007, 01:10
|- - Dog Pawlowa   Цитата(rezident @ Feb 6 2007, 02:10) ... ...   Feb 7 2007, 17:39
- - AlHakim   [quote name='!Roma!' date='Feb...   Feb 3 2007, 16:10


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

 


RSS Текстовая версия Сейчас: 21st June 2025 - 03:14
Рейтинг@Mail.ru


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