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

 
 
> странности в работе f5437a
shide_3
сообщение Dec 3 2013, 11:38
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 314
Регистрация: 27-04-10
Пользователь №: 56 923



Здравствуйте!прошу помочь советом или направить в нужное русло, потому как у самого идеи уже кончились. был проект на 149-м MSP, переделали его под msp430f5437a, соответственно ничего существенного в коде программы не меняли, только ноги и некоторые названия регистров, и само собой, настройка PMM. проблема такова- есть прерывания по uart rx и tx, при срабатывании RX (прием кадра modbus ascii) кадр принимается нормально (несколько символов), затем по программе должен формироваться кадр ответа, но программа не доходит до нужной подпрограммы, она просто зависает каждый раз в разных местах, но чаще всего на обработке TX (даже когда прерывание TX я специально отключаю!). повторюсь-в коде ничего существенно не меняли. работал с отладчиком TI USB-FET. скорость uart 115200, пробовал и 9600. (но похоже он тут ни при чем)
короче, в итоге устройство абсолютно нерабочее! прошу, подскажите пож. может кто-то испытывал подобные трудности.
кристалл работал вначале от внешнего резонатора 25 Мгц, после проявления вышеописанных проблем я перевел его на DCO (2 мгц), стало лучше, но выполнение программы заканчивается все равно раньше конца подпрограммы (я смотрел пошагово отладчиком).
может у кого были похожие симптомы? незнаю уже на кого грешить.
спасибо всем

Сообщение отредактировал shide_3 - Dec 3 2013, 11:39
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
shide_3
сообщение Dec 3 2013, 15:28
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 314
Регистрация: 27-04-10
Пользователь №: 56 923



void UART_Init(unsigned long BaudRate,unsigned char MbMode)
{

UCA0CTL1 |= UCSWRST; // **Put state machine in reset**
UCA0CTL0 |= UCSPB + UC7BIT;//UCPEN + UCPAR ;//+
UCA0CTL1 |= UCSSEL_2; // SMCLK
UCA0BR0 = 109;//0xD9;//109;//;//27 // 25MHz 115200 (see User's Guide)
UCA0BR1 = 0;//0; // 25MHz 115200
UCA0MCTL |= UCBRS_2;//|= UCBRS_2;
// UCA0MCTL |= UCBRS_4 + UCBRF_1 + UCOS16; // Modulation UCBRSx=1, UCBRFx=0
UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
UCA0IE |= UCRXIE ;//+ UCTXIE; // Enable USCI_A0 RX interrupt

// __bis_SR_register(LPM0_bits + GIE); // Enter LPM0, interrupts enabled
// __no_operation(); // For debugger

}//сейчас скорость 9600 от DCO 1048576 hz.

А,кстати, интеррапт флаги usci автоматически сбрасываются. это видно в отладке




вот инициализация остального:

void Peripheral_Setup(void)
{
unsigned int i;

WDTCTL = WDTPW + WDTHOLD; // Stop WDT
//==============================================================================
// Perepherial setup //
//==============================================================================
P1SEL = 0x00; // no alt. functions
P1OUT = 0x00;
P1DIR = 0xFF;

P2SEL = 0x00; // no alt. functions
P2DIR = 0x00; // input direction

P3SEL = 0x00; // no alt. functions
P3DIR = 0x00;
P3SEL = bmTxD | bmRxD; // USART0 TXD/RXD alt. functions
P3DIR = bmTxD; //TxD - out; RxD - in

///////////////////////////////////////////////////////////////

//SetVcore (0x03);
// UCSCTL6 &= ~XT2OFF; // Enable XT2
UCSCTL3 |= SELREF_2; // FLLref = REFO
// Since LFXT1 is not used,
// sourcing FLL with LFXT1 can cause
// XT1OFFG flag to set
UCSCTL4 |= SELA_2 + SELS_3 + SELM_3; // ACLK=REFO,SMCLK=DCO,MCLK=DCO
UCSCTL6 &= ~XT2DRIVE_3; // Clear XT2drive field
// Loop until XT1,XT2 & DCO stabilizes - in this case loop until XT2 settles
/* do
{
UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG_L + DCOFFG);
// Clear XT2,XT1,DCO fault flags
SFRIFG1 &= ~OFIFG; // Clear fault flags
} while (SFRIFG1 & OFIFG); */ // Test oscillator fault flag

// UCSCTL6 &= ~XT2DRIVE0; // Decrease XT2 Drive according to
// expected frequency
// UCSCTL6 |= XTS; //
// UCSCTL6 |= XT2DRIVE_3; // Set requested value
// UCSCTL4 = SELS_5 + SELM_5;

}

void SetVcore (unsigned int level)
{
//#ifdef MSP
// Open PMM registers for write
PMMCTL0_H = PMMPW_H;
// Set SVS/SVM high side new level SVMHE = 1, SVSMHRRL
SVSMHCTL = SVSHE + SVSHRVL0 * level + SVMHE + SVSMHRRL0 * level;
// Set SVM low side to new level
SVSMLCTL = SVSLE + SVMLE + SVSMLRRL0 * level;
// Wait till SVM is settled
while ((PMMIFG & SVSMLDLYIFG) == 0);
// Clear already set flags
PMMIFG &= ~(SVMLVLRIFG + SVMLIFG);
// Set VCore to new level
PMMCTL0_L = PMMCOREV0 * level;
// Wait till new level reached
if ((PMMIFG & SVMLIFG))
while ((PMMIFG & SVMLVLRIFG) == 0);
// Set SVS/SVM low side to new level
SVSMLCTL = SVSLE + SVSLRVL0 * level + SVMLE + SVSMLRRL0 * level;
// Lock PMM registers for write access
PMMCTL0_H = 0x00;
//#endif
}

cейчас половина закомментирована, т.к. тактируемся от DCO

Сообщение отредактировал shide_3 - Dec 3 2013, 15:39
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- shide_3   странности в работе f5437a   Dec 3 2013, 11:38
- - rezident   Цитата(shide_3 @ Dec 3 2013, 16:38) был п...   Dec 3 2013, 15:20
- - shide_3   может, 25 мгц виноваты- всетаки это предельная час...   Dec 4 2013, 09:06
- - rezident   Кварц 25МГц ни при чем. Генераторы и на бОльшей ча...   Dec 4 2013, 09:34
|- - shide_3   Цитата(rezident @ Dec 4 2013, 12:34) 2. З...   Dec 4 2013, 11:32
|- - rezident   Цитата(shide_3 @ Dec 4 2013, 16:32) как р...   Dec 5 2013, 19:58
|- - shide_3   Цитата(rezident @ Dec 5 2013, 22:58) Либо...   Dec 6 2013, 08:42
- - shide_3   эх. было бы наверное интересно и полезно опробоват...   Dec 4 2013, 14:54
- - shide_3   интересно, неужели у всех кто юзал эти мспшники, б...   Dec 10 2013, 14:26
|- - rezident   Цитата(shide_3 @ Dec 10 2013, 19:26) инте...   Dec 10 2013, 15:06
|- - shide_3   Цитата(rezident @ Dec 10 2013, 18:06) В к...   Dec 10 2013, 15:48
|- - rezident   Цитата(shide_3 @ Dec 10 2013, 20:48) може...   Dec 14 2013, 16:35
|- - shide_3   Цитата(rezident @ Dec 14 2013, 19:35) Вме...   Dec 14 2013, 20:24
|- - rezident   Цитата(shide_3 @ Dec 15 2013, 01:24) у ме...   Dec 14 2013, 21:02
|- - shide_3   Цитата(rezident @ Dec 15 2013, 00:02) Пок...   Dec 16 2013, 18:38
|- - rezident   Цитата(shide_3 @ Dec 16 2013, 23:38) а об...   Dec 16 2013, 19:00
- - shide_3   теперь ясно,спасибо! не догадался что можно фр...   Dec 17 2013, 06:16


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

 


RSS Текстовая версия Сейчас: 22nd August 2025 - 11:43
Рейтинг@Mail.ru


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