完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
采样程序部分如下,
if(8<=RESULT_temp<=80) { AD_OUT = RESULT_temp* 10; AD_OUT = AD_OUT/80; AD_OUT = AD_OUT+2; AL_AD_OUT = RESULT_temp; } 在用keil软件编译时,程序全速运行时,假如RESULT_temp值为74时,串口输出的AD_OUT的值却为6,这显然是不正确的,还有不论有没有AD_OUT = AD_OUT+2; 这条程序,AD_OUT 的值一直是6,即AD_OUT = AD_OUT+2 这条指令根本没起作用。但是当我单步调试此段程序时,AD_OUT依次得到的数值为740,9,11; 单步调试的结果都正确,全速运行得到的却是错误结果,我的AD采样程序是放在中断函数中每隔3ms采样一次,本来觉得是采样中断与主程序的定时中断冲突了,就把AD采样程序从中断函数中拿出来直接放在主程序中,但是这样得到的结果还是原来的值。 烦请各位帮忙分析下是什么原因 |
|
相关推荐
5个回答
|
|
本帖最后由 bigbigmule 于 2014-5-21 17:35 编辑
你的AD采集的应该是传感器的输出值吧??试着在调用AD采集程序之前,做些简单的延时(延时自己把握一下),看看结果有何不同!如果成功了,麻烦说句谢谢,不成功乐意继续帮助!! |
|
|
|
断点运行试试,可能是AD转换时间不足,或者串口有问题,都有可能。
|
|
|
|
串口输出没有问题,因为我发现有几次输出值是正确的,但之后就一直错误 AD采样部分我也是有加过输出部分也有加过延时处理,也不起作用 |
|
|
|
AD采集的是电位器的值 AD采样函数调用时的延时处理也有做过,但是不起作用 |
|
|
|
应该是AD采集时间的问题,首先在单步运行时可以采集到数值,那么就说明了AD采集程序是正确的,全速运行结果不对。单步调试与全速运行的区别主要就是时间上。由于并没有详细见到你的程序,你试试全速运行只在你所贴的代码中设置一个断点,观察是否进入了这个判断。还有一个就是采集的数据最好进行一下软件滤波再进入这个判断 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
《DNESP32S3使用指南-IDF版_V1.6》 第十六章 WATCH_DOG实验
460 浏览 0 评论
【敏矽微ME32G070开发板免费体验】+ADC测试与LED点亮
418 浏览 0 评论
飞凌嵌入式-ELFBOARD ELF 2的硬件知识分享--核心板
352 浏览 0 评论
【敏矽微ME32G070开发板免费体验】\\+Lora通信终端产品开发项目
514 浏览 0 评论
1576 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11971 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-19 00:54 , Processed in 0.703052 second(s), Total 79, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号