使用427A芯片学习做一个电子称系统,包括AD转换、键盘输入和12864显示,硬件焊接完成后键盘和显示调试成功。SD16AD转换使用外部参考电压1.4V,单步进行到SD16CCTL0 |= SD16SC; SD16控制寄存器值全部=0,转换无结果,改用内部1.2V参考电压时发现VREF脚电压为0V,单步到SD16CCTL0 |= SD16SC; SD16控制寄存器值全部=0,转换仍无结果,请各位老师赐教!不会是单片机有问题吧!程序如下:
#include <msp430x42x.h>
//void init_SD16();
int i;
//unsigned int results;
#define Num_of_Results 8
static unsigned int results[Num_of_Results];
void main(void)
{
WDTCTL=WDTPW+WDTHOLD;
IE2 |=BTIE;
FLL_CTL0 |=XCAP14PF;
BTCTL=BTDIV+BTIP2+BTIP1;
_EINT();
for(;;)
{
_BIS_SR(LPM3_bits+GIE);
_NOP();
}
}
#pragma vector =BASICTIMER_VECTOR
__interrupt void basic_timer(void)
{
_BIC_SR_IRQ(LPM3_bits);
for(i=0;i<10000;i++);
SD16CTL=SD16SSEL0;
SD16CCTL0 |= SD16IE ; // 使能中断
SD16CCTL2 |= SD16SNGL; // Single conv dl
for (i = 0; i < 0x3600; i++); // Delay for 1.2V ref startup
SD16CCTL0 |= SD16SC; // Set bit to start conversion
_NOP();
}
#pragma vector=SD16_VECTOR
__interrupt void SD16ISR(void)
{
static unsigned int index = 0;
switch (SD16IV)
{
case 2: // SD16MEM Overflow
break;
case 4: // SD16MEM0 IFG
results[index] = SD16MEM0; // Save CH2 results (clears IFG)
if (++index == Num_of_Results)
{
index = 0; // SET BREAKPOINT HERE dl
}
break;
case 6: // SD16MEM1 IFG
break;
case 8: // SD16MEM2 IFG
break;
}
//_BIC_SR_IRQ(LPM3_bits); // Exit LPM0
}