本帖最后由 zzgezi 于 2016-3-28 08:51 编辑
大家好,请教大家一个问题。最近用LPC11C14做一个项目,有一部分功能是
:用AD采集0—2.5V电压,转换为200—1000Hz频率输出。频率输出我用32位定时器0,在定时器中断里反转I/O口实现。
AD使用AD中断采样10次,求平均值后,根据电压与频率的对应关系,修改定时器的MR0寄存器,实现改变频率周期。
下图为TIM32B0初始化函数。
TIM32B0定时器中断,作用反转I/O口。
AD采样中断,每采集10次求平均值后,修改
TIM32B0的MR0寄存器,实现改变频率的作用。
注:可能有网友说不能在中断里处理,其实,频率输出异常和这个没有关系,我处理完之后再重新启动AD采样的。
现在的现场是,如果我输入的0-2.5V电压值不变,则频率输出稳定,但是电压值一发生变动,则不再输出频率,要么是高电平要么是低电平,且,在电压又稳定的情况下,频率过一段时间又出来了。
在DEBUG模式下,发现,频率输出异常时,
TIM32B0的TC值跑飞了,远大于MR0寄存器的值,导致不会进定时器中断。
请问大家,这是什么情况,我哪里设置的不对吗?我也用了
TIM32B0的PWM输出频率,现象差不多一样。
AD采样_频率输出.rar
(178.25 KB, 下载次数: 12)
2016-3-28 08:46 上传
点击文件名下载附件
此帖出自
小平头技术问答
是不是修改MR0时,一改下去MR0<TC(改小MR0,这应该很有可能),然后就。。。
有可能是,我在修改MR0之前将TC值写0,则不会出现上述情况,但是占空比会改变,不是50%了。请问,你是如何处理这种问题的呢?
可以先试试定时器跑完一个完整周期再修改。MR0不会太小。
你的意思是,在定时器中断里修改MR0,进定时器中断,TC肯定复位了,在修改MR0保证,MR0不会小于TC。这个可以试试。太感谢了,给了我很大的启发。
一周热门 更多>