在用CCS6.1仿真MSP430F6733的SD24_B的功能时,总是出现No source available for "0x4" 的错误,然后仿真就跑不了了。
在出现错误之前,24bit AD转换出来的结果都是对的。
无论是用我自己的程序还是TI给的例程,都有这种错误出现。
请问是什么原因呢?是软件,还是CCS仿真设置,还是硬件上的问题啊?
下面贴上我的SD24_B的代码
void initSD24_B(void)
{
SD24BCTL0 = SD24DIV0 | SD24PDIV1 | SD24SSEL_1; // Select external REF, SMCLK as SD24_B Clock Source
SD24BCCTL0 = SD24ALGN | SD24SCS_4; // Continue Conversion, Left-aligned, Group 0
SD24BCCTL1 = SD24ALGN | SD24SCS_4; // Continue Conversion, Left-aligned, Group 0
SD24BCCTL2 = SD24ALGN | SD24SCS_4; // Continue Conversion, Left-aligned, Group 0
SD24BIE = SD24IE2; // Enable channel 2 interrupt
START_SD24_B // Set bit to start conversion
}
unsigned int g_SD24_B0Results[SD24_B_SIZE];
unsigned int g_SD24_B1Results[SD24_B_SIZE];
unsigned int g_SD24_B2Results[SD24_B_SIZE];
unsigned int g_SD24_BIndex = 0;
volatile int g_SD24_BFlag;
int getSD24_BFlag(void) { return g_SD24_BFlag; }
void setSD24_BFlag(int flag) { g_SD24_BFlag = flag; }
unsigned int * getSD24_B0Result(void) { return &g_SD24_B0Results[0]; }
unsigned int * getSD24_B1Result(void) { return &g_SD24_B1Results[0]; }
unsigned int * getSD24_B2Result(void) { return &g_SD24_B2Results[0]; }
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
#pragma vector=SD24B_VECTOR
__interrupt void SD24BISR(void)
#elif defined(__GNUC__)
void __attribute__ ((interrupt(SD24B_VECTOR))) SD24BISR (void)
#else
#error Compiler not supported!
#endif
{
unsigned int result;
switch (SD24BIV)
{
case SD24BIV_SD24OVIFG: // SD24MEM Overflow
break;
case SD24BIV_SD24TRGIFG: // SD24 Trigger IFG
break;
case SD24BIV_SD24IFG0: // SD24MEM0 IFG
break;
case SD24BIV_SD24IFG1: // SD24MEM1 IFG
break;
case SD24BIV_SD24IFG2: // SD24MEM2 IFG
if((g_SD24_BIndex) >= SD24_B_SIZE)
{
g_SD24_BIndex = 0;
g_SD24_BFlag = SD24_B_FLAG_FINISH;
__bic_SR_register_on_exit(LPM0_bits | GIE);
}
if(g_SD24_BFlag == SD24_B_FLAG_EXCUTE)
{
g_SD24_B0Results[g_SD24_BIndex] = SD24BMEMH0; // Save CH0 results (clears IFG)
g_SD24_B1Results[g_SD24_BIndex] = SD24BMEMH1; // Save CH1 results (clears IFG)
g_SD24_B2Results[g_SD24_BIndex] = SD24BMEMH2; // Save CH2 results (clears IFG)
g_SD24_BIndex++;
}
else
{
result = SD24BMEMH0;
result = SD24BMEMH0;
result = SD24BMEMH0;
}
break;
}
SD24BIFG = 0;
}