主题中讨论的其他部件: MSP430G2253
工具/软件:Code Composer Studio
你(们)好
我正在为项目使用MSP430G2553。 我需要从加速器的三个轴测量ADC值,因此我使用以下代码:
/*
* MSP430G2253 ADC_3GPIO v1.c
*
* 创建日期:2013年09月20日
* 作者:Ant Scanney
*/
#include <MSP4S.h>
//全局变量
无符号int ADC[3]={0}; //这将保存x,y和z轴值
无符号int X_Axis =0;
无符号int Y_Axis =0;
无符号int Z_Axis =0;
//函数原型
void Setup_HW(void); //设置监视程序计时器,时钟,ADC端口
void read_Acc (void); //此函数读取ADC并存储x,y和z值
内部主(无效)
{
Setup_HW();
同时(1)
{
READ_ACC();//此函数读取ADC并存储x,y和z值
}
}
// ADC10中断服务例程
#pragma vector=ADC10_vector
__interrupt void ADC10_ISR(void)
{
__BIC_SR_REGISTER_ON_EXIT (CPUOFF); //从0 (SR)清除CPUOFF位
}
作废Setup_HW (void)
{
WDTCTL = WDTPW + WDTHOLD; //停止WDT
ADC10CTL1 = inch_5 + CONSEQ_1; // A2/A1/A0,单序列
ADC10CTL0 = ADC10SHT_2 + MSC + ADC10ON + ADC10IE;
ADC10DTC1 = 0x03; // 3个转换
ADC10AE0 |= BIT0 + BIT3 + BIT5; //禁用WFP 1.0 到WFP 1.2 的数字I/O
}
作废Read_Acc (void)
{
ADC10CTL0 &=~ENC;
当(ADC10CTL1 & BUSY); //如果ADC10内核处于活动状态,请等待
ADC10SA =(无符号int) ADC; //将ADC10SA中的数据复制到无符号int ADC阵列
ADC10CTL0 |= ENC + ADC10SC; //开始采样和转换
X_Axis = ADC[0]; // ADC数组0已复制到变量X_Axis
Y_Axis = ADC[1]; // ADC数组1已复制到变量Y_Axis
Z_Axis = ADC[2]; // ADC数组2已复制到变量Z_Axis
__bis_sr_register (CPUOFF + GIE); // LPM0,ADC10_ISR将强制退出
}
当我使用针A0,A3和A5时,我获得ADC的一致值,从300到600,但在其他针(A1,A2,A4)中,我获得的值直到900。 我使用Vcc作为参考电压,它与我连接加速计的电压相同。 我在不同的MSP430G2553微控制器中尝试了不同的引脚,但遇到了相同的问题。
我是否有误解?
提前感谢!
Tatiana。