问题描述
|
我正在尝试使用TI的MSP430测量功率设备的电压。电压源连接到目标板上的A1(即P4)和接地(即P1)。
以下是相关代码:
ADC10CTL1 = INCH_1 + CONSEQ_0; //A1,single measurement
ADC10CTL0 = SREF_1 + ADC10SHT_3 + REFON + ADC10ON + ADC10IE + ADC10SR; //same as sample temperature sensor code
ADC10CTL1 &= ~ADC10DF; //setting binary format for ADC10MEM
ADC10CTL0 |= ENC + ADC10SC; //Sampling and conversion start
__bis_SR_register(cpuOFF + GIE); // LPM0 with interrupts enabled
//read result
我遇到以下问题:
我在AP上打印ADC10MEM的内容,并且看到ADC10MEM的前6位全为1,而不是0。我无法得到相同的原因。
如果仅考虑ADC10MEM的最后10位,则可以看到该值随电压的上升和下降而增加和减少,但是如果我使用以下公式获得Vin:
N = 1023 *((Vin-VR-)/(VR +-VR-)),我没有得到正确的值。 (当电池为目标板供电时,VR + = 1.5V,VR- = 0V)
N:ADC10MEM中的值,十进制
我找不到我要去哪里了。我是否必须启用模拟输入(ADC10AE0 | = 0x10)的引脚,并设置方向(P4DIR | = 0x01)?
谢谢!
解决方法
TI为这些MSP430提供了不错的示例代码:
http://www.ti.com/litv/zip/slac123d
其中之一还读取电压,您应该使用它与您所做的进行比较。我不记得ADC10DF,但这似乎是可疑的事情(因为您的错误与数据输出有关)。
另外,您说您阅读了结果。如果等待时间不足,则结果无效。您没有显示任何中断例程,因此可能正在发生某些事情。