LaunchPad的DTS模式下,ADC得到的数据总是最大值
[复制链接]
本人菜鸟,从零起步,如犯了些低级错误,还望大家多多谅解
最近想DIY一下移动电源,主控选用2231,先用LaunchPad+面包板进行程序实验
大致流程如下(尽我所能把程序描述清楚,如果大家对步骤还有哪里不知道,我愿与大家及时交流): main函数开始时各个模块初始化,之后进入低功耗模式 待启动键按下(ProPower.h中的ONOFF_BTM定义) 进入中断,启动电源(对应ONOFF_CTL管脚,控制MOS管),启动定时器,关闭低功耗 此时跳转至main函数中的ADC部分
ADC用于检测输出电流与锂电池电压,DTS模式,P1.0 P1.1输入 当输出电流过大(curval变量)时关闭输出 电池电量过低(batval变量)时…………暂时未定义 保护功能在PowProtect()函数中实现
定时器仍未开发多少,因此只用做状态机,实现短按开机长按关机的功能
目前的问题是: 不论把PowProtect()函数放在while死循环中,或是定时器中,或是ADC中断函数中 全速运行时,curval = adcval[0],这个变量,读取的数值全部为最大(有时batval = adcval[1];)也会出现类似情况 采样值用IAR软件Debug模式下的Watch窗口
如果一步一步地运行程序,则大约有一半的情况,curval的采样值是正确的 对此有些不理解 PS:电位器的电压输出值用万用表量过,电压是正确的
个人猜测会不会是采样的时间不足,或是初始化变量不对 网大家帮我看看这个问题 谢谢啦
附上实验环境的照片和源代码
|