[an error occurred while processing this directive]
|
Здравствуйте!
Никак не могу разобраться в следующией проблеме. Имеет кусок кода, обеспечивающий передчу данных через UART со скоростью 115200, но при попытке вызвать ф-цию TransmitData(данные) в каком-либо обработчике прерывания вся программа виснит, хотя при вызове этойже ф-ции в ф-ции main() все работает превосходно.
Использую MSP430F413 (на стенде MSP430F413 STK2) и IAR Embedded Workbench Evaluation for MSP430 V3
#define BITTIME 0x045
#define BIT_CNT 0xA
unsigned Data;
unsigned BitCnt;
bool isTransmit = false;
unsigned *FlashPtr = (unsigned *)0x1000;
//пересылка данных (_data) по UART 115200 baud
void TransmitData(unsigned _data)
{
BitCnt = BIT_CNT;
Data = _data;
CCR0 = TAR;
CCR0 += BITTIME;
Data |= 0x100;
Data = Data << 1;
CCTL0 = OUTMOD0 + CCIE;
while (CCTL0 & CCIE);
}
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A(void)
{
//пересылка данных
CCR0 += BITTIME;
if (BitCnt == 0)
CCTL0 &= ~CCIE;
else
{
CCTL0 |= OUTMOD2;
if (Data & 0x01)
CCTL0 &= ~ OUTMOD2;
Data = Data >> 1;
BitCnt--;
}
}
Буду признателен за любую помощь.