工具/软件:Code Composer Studio
您好!
我无法理解我的代码中的问题、因此我无法获得正确的 ADC 计数。
硬件配置:
- MCU MSP430G2553以1MHz 运行。
- A1、A2、A3是 ADC 输入(P1.1、P1.2、P1.3)
- 在 A1引脚上施加2.4VDC。
- ADC 基准电压与电源电压相同。
代码:
#include #include "main.h"#include unsigned int adc [10]; int main (void) { //时钟--------------- WDTCTL = WDTPW + WDTHOLD; //如果 (CALBC1_1MHz=0xFF)则停止 WDT//如果校准常数被擦除 { while (1); //不加载,陷阱 CPU!! } DCOCTL = 0; BCSCTL1 = CALBC1_1MHZ;//设置范围 DCOCTL = CALDCO_1MHZ; BCSCTL2 &=~(DIVS_3);// SMCLK = DCO = 1MHZ // ADC ------ ADC10CTL1 =INCH_3+CONSEQ_1 +ADC10SSEL_3; ADC10CTL0 =SREF_0 + ADC10SHT_0 + MSC+ ADC10ON + ADC10IE; ADC10AE0 |= 0x0E; ADC10DTC1 = 3;//三次转换。 ADC10SA = ADC; // ADC10数据传输起始地址。 while (ADC10CTL1 & ADC10BUSY);//等待 ADC10内核被激活 ADC10CTL0 |=ENC + ADC10SC;//在 (1)期间开始对话; } // ADC10中断服务例程 #pragma vector=ADC10_vector __interrupt void ADC10_ISR (void) { ADC10CTL0 &=~ADC10IFG;//清除中断标志 ADC10SA = ADC;// ADC10数据传输起始地址。 ADC10CTL0 |=ENC + ADC10SC; //开始对话 }
结果:
ADC[0]= 34
ADC[1]=35
ADC[2]=167
问题:
1.如果我施加2.4伏电压,那么为什么我没有得到相等的2.4×1023/3 = 818? 我的配置中缺少什么? 请提供指导。
2.该 ADC 阵列是否会按顺序存储所用通道的值、仅像 ADC[0]= A1通道的计数、ADC[1]= A2通道的计数等? 还是始终从 A0开始(即使我没有使用)?
请提供指导。
谢谢。