求助!改了一个基于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
1楼-- · 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;
复制代码
Ben讨厌苦咖啡
2楼-- · 2019-03-25 08:27
qiushenghua 发表于 2015-3-23 14:51
你不是已经读出ADC的数据了吗?还说没有读错。
那么单步调试一下,看看哪一步偏离了预期不就得了?我看你断点也设置好了,已经开始跟踪调试了吧?
感觉是tcnt这个变量出问题了。因为你那要求tcnt==1的时候执行LPM1_EXIT语句,而在此之前执行了tcnt++。所以如果tcnt偏离了0或者1,那么很有可能将一直无法退出LPM1模式。

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

还有,关于Hex2Dec函数,给出下面的优化算法:



感谢您的帮助,我按您说的再改一下程序试试~~
Ben讨厌苦咖啡
3楼-- · 2019-03-25 10:25
 精彩回答 2  元偷偷看……
Ben讨厌苦咖啡
4楼-- · 2019-03-25 14:30
qiushenghua 发表于 2015-3-23 14:51
你不是已经读出ADC的数据了吗?还说没有读错。
那么单步调试一下,看看哪一步偏离了预期不就得了?我看你断点也设置好了,已经开始跟踪调试了吧?
感觉是tcnt这个变量出问题了。因为你那要求tcnt==1的时候执行LPM1_EXIT语句,而在此之前执行了tcnt++。所以如果tcnt偏离了0或者1,那么很有可能将一直无法退出LPM1模式。

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

还有,关于Hex2Dec函数,给出下面的优化算法:

貌似程序就跑飞了 执行到断点处的时候第一次会执行完中断 会停下来 然后再单步运行的话就跑飞了。。。。。。



可是这个程序是从F149的一个AD的程序改过来的~~~之前在149的板子上面都已经完全没问题~~采到的数据和程序都没问题 能跑~~~来这个板子上就不行了。。。。。。
qiushenghua
5楼-- · 2019-03-25 18:19
你确定你的ADC配置对了?开启的是连续采样模式?
然后再运行就错误了——分析判断很有可能中断结束之后系统未退出低功耗模式,但是ADC采样已经停止了,没有第二次进入中断服务。故仿真器直接报错。
Ben讨厌苦咖啡
6楼-- · 2019-03-25 18:39
 精彩回答 2  元偷偷看……

一周热门 更多>

相关问题

    相关文章