求助!改了一个基于F5529launchpad的 采一个口输入电压做AD转换的程序,可是总有问...

2019-03-24 10:21发布

本帖最后由 Ben讨厌苦咖啡 于 2015-3-23 15:15 编辑

这个程序的功能就是从一个AD的口输入一个电压值,然后经过AD转换后由串口输出,本来是F149上面的程序,已经成功运行并且功能已经实现了,我现在有个F5529的板,移植过来也改了好些地方,应该是没什么问题了,编译也没有问题,可是总是实现不了功能 求助大神!!!


我把程序的详细部分贴上来 大家帮忙看看!谢谢了! 转换程序2.zip (406.13 KB, 下载次数: 19) 2015-3-23 15:15 上传 点击文件名下载附件

首先是主程序,while(1)里面是个输出的循环,输出到串口是一个数字的值和一个真实的模拟电压输入值。

1.png



接下来是AD中断函数,将采到的4次的值分别存入到result【】数组里面 然后用average做平均,最后将average输出到while(1)里面的两个计算的函数。

2.png



下面是我AD模块的设置,还有两个做转换的函数

3.png



好吧,那么问题来了,现在我用5529的板子仿真,可以进到AD中断,并且读取ADC12MEM6,可以看到采了值,但是,average却算不出来。没有值

而且用来存储采到数据的两个数组buffer1和buffer2都不对。。。。。。



这些函数的功能应改没问题,因为在149的板子上完全都实现了。可是不知道为什么在5529的板子上却不对,求大神帮忙啊!




此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
19条回答
qiushenghua
2019-03-25 07:54
你不是已经读出ADC的数据了吗?还说没有读错。
那么单步调试一下,看看哪一步偏离了预期不就得了?我看你断点也设置好了,已经开始跟踪调试了吧?
感觉是tcnt这个变量出问题了。因为你那要求tcnt==1的时候执行LPM1_EXIT语句,而在此之前执行了tcnt++。所以如果tcnt偏离了0或者1,那么很有可能将一直无法退出LPM1模式。

另外,ADC12属于高速外设,会不会是因为中断频率太高了?考虑在完成一轮采样转换之后暂停采样,直到数据处理完毕再重新采样。

还有,关于Hex2Dec函数,给出下面的优化算法:
  1. ptr[0]=Hex_Val/1000%10;
  2. ptr[1]=Hex_Val/100%10;
  3. ptr[2]=Hex_Val/10%10;
  4. ptr[3]=Hex_Val%10;
复制代码

一周热门 更多>

相关问题

    相关文章