本帖最后由 Ben讨厌苦咖啡 于 2015-3-23 15:15 编辑
这个程序的功能就是从一个AD的口输入一个电压值,然后经过AD转换后由串口输出,本来是F149上面的程序,已经成功运行并且功能已经实现了,我现在有个F5529的板,移植过来也改了好些地方,应该是没什么问题了,编译也没有问题,可是总是实现不了功能 求助大神!!!
我把程序的详细部分贴上来 大家帮忙看看!谢谢了!
转换程序2.zip
(406.13 KB, 下载次数: 19)
2015-3-23 15:15 上传
点击文件名下载附件
首先是主程序,while(1)里面是个输出的循环,输出到串口是一个数字的值和一个真实的模拟电压输入值。
接下来是AD中断函数,将采到的4次的值分别存入到result【】数组里面 然后用average做平均,最后将average输出到while(1)里面的两个计算的函数。
下面是我AD模块的设置,还有两个做转换的函数
好吧,那么问题来了,现在我用5529的板子仿真,可以进到AD中断,并且读取ADC12MEM6,可以看到采了值,但是,average却算不出来。没有值
而且用来存储采到数据的两个数组buffer1和buffer2都不对。。。。。。
这些函数的功能应改没问题,因为在149的板子上完全都实现了。可是不知道为什么在5529的板子上却不对,求大神帮忙啊!
此帖出自
小平头技术问答
那么单步调试一下,看看哪一步偏离了预期不就得了?我看你断点也设置好了,已经开始跟踪调试了吧?
感觉是tcnt这个变量出问题了。因为你那要求tcnt==1的时候执行LPM1_EXIT语句,而在此之前执行了tcnt++。所以如果tcnt偏离了0或者1,那么很有可能将一直无法退出LPM1模式。
另外,ADC12属于高速外设,会不会是因为中断频率太高了?考虑在完成一轮采样转换之后暂停采样,直到数据处理完毕再重新采样。
还有,关于Hex2Dec函数,给出下面的优化算法:
- ptr[0]=Hex_Val/1000%10;
- ptr[1]=Hex_Val/100%10;
- ptr[2]=Hex_Val/10%10;
- ptr[3]=Hex_Val%10;
复制代码一周热门 更多>