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

 
 
> MSP430F2254 проблеммы с UART, В отладчике всё работает, стоит его отключить ни uart ни adc не работ
0x0D_0x0A_0x0D
сообщение Aug 8 2012, 10:49
Сообщение #1





Группа: Новичок
Сообщений: 6
Регистрация: 8-08-12
Пользователь №: 73 061



Всем привет, у меня такая проблема написал программу на IAR в отладчике работает правельно, выключаю IAR ВСЁЁЁЁ ни ацп ни уарт не работают

Написал отдельно передачу по UART таже фигня.... Вот код полностью

#include "io430.h"
unsigned int i;
unsigned int j;

unsigned char txbuffer[16]= {0x0D, 0x0A, 0x09, 0x09,
0x09, 0x09, 0x09, 0x09,
0x09, 0x09, 0x09, 0x09,
0x0A, 0x0D, 0xFF, 0xFF};

unsigned char rxbuffer[16];

int main( void ) {

WDTCTL = WDTPW + WDTHOLD;
P2DIR |= BIT1;
P2OUT = BIT1; // P1.0/1 setup for LED output
P3SEL = 0x30;
IFG2 |= UCA0TXIFG + UCA0RXIFG;
UCA0CTL1 |= UCSSEL_1; // CLK = ACLK
UCA0BR0 = 0x03; // 32kHz/9600 = 3.41
UCA0BR1 = 0x00;
UCA0MCTL = UCBRS1 + UCBRS0; // Modulation UCBRSx = 3
UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
IE2 |= UCA0RXIE + UCA0TXIE; // Enable USCI_A0 TX/RX interrupt

__bis_SR_register(LPM3_bits + GIE); // Enter LPM3 w/ interrupts enabled

}



// USCI A0/B0 Transmit ISR
#pragma vector=USCIAB0TX_VECTOR
__interrupt void USCI0TX_ISR(void)
{
P2OUT |= BIT1; // P1.0/1 setup for LED output
i = 405; // Delay
do (i--);
while (i != 0);
P2OUT &= ~BIT1; // P1.0/1 setup for LED output
i = 450; // Delay
do (i--);
while (i != 0);

UCA0TXBUF = txbuffer[0]; // Read, justify, and transmit
}

Для нагляднасти отправляю 0 и 1 на Р2.1
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
KARLSON
сообщение Aug 10 2012, 05:22
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 604
Регистрация: 5-05-06
Из: Нижегородская обл.
Пользователь №: 16 819



По первому сообщению. Вы уверенны что дефолтные значения в модуле DC0 (система тактирования) застявят работать кварц 32 кГц на линию ACLK?
По поводу последнего: без строчки __bis_SR_register(LPM3_bits + GIE);, а лучше в место неё _EINT(); while(1); всё равно не работает?

А ватчдок таймер случайно не от MCLK тактируется? Так если с помощью режимов вы отключаете MCLK как таймер считать будет?

И ещё. уберите #include "io430.h"
напишите конкретно #include "msp430f2254.h" или #include "msp430x22x4.h", это ещё завист от версии компилятора.
вот пример от техаса:
Код
#include "msp430x22x4.h"

void main(void)
{
  WDTCTL = WDT_MDLY_32;                     // Set Watchdog interval to ~27ms
  IE1 |= WDTIE;                             // Enable WDT interrupt
  P1DIR |= 0x01;                            // Set P1.0 to output direction

  __bis_SR_register(LPM0_bits + GIE);       // Enter LPM0 w/ interrupt
}

// Watchdog Timer interrupt service routine
__interrupt void watchdog_timer (void);
WDT_ISR(watchdog_timer)
__interrupt void watchdog_timer (void)
{
  P1OUT ^= 0x01;                            // Toggle P1.0 using exclusive-OR
}


--------------------
Кризис - это не отсутствие денег, а отсутствие идей! Учитесь и никаких кризисов не будет.
Go to the top of the page
 
+Quote Post



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

 


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


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