如何用单片机实现非整数倍倍频,将512变成150
答案:2 悬赏:80 手机版
解决时间 2021-03-15 12:53
- 提问者网友:留有余香
- 2021-03-15 07:37
如何用单片机实现非整数倍倍频,将512变成150
最佳答案
- 五星知识达人网友:风格不统一
- 2021-03-15 09:07
512与150单位是什么?如果是Hz,那就是分频而不是倍频。。。追问将输出的512个脉冲,变成150个脉冲输出,脉冲输出形式是方波追答稍有麻烦,要做问题不大。
以512个输入脉冲为单位,先计算150个脉冲与512脉冲对应关系。比如说,输出第511个脉冲的上升沿,对应输入512脉冲的1/3位置,即第(170+2/3)个输入脉冲。
在计数输入脉冲时,数到第170个的时候,测量上次输入周期为T个计时脉冲(定时器的时钟),并控制定时器的OC在T*2/3处输出上升沿。其它以此类推,需要计算150个偏差值。
可以分2个数组,一个存放150个对应的输入脉冲数,一个存放150个延时值,这对应了所有的上升沿,下降沿可以用同样2个数组,也可以在输出上升沿时计算。
这是运算最快的方法,当然也可以在计数脉冲的同时,计算这几张表,就不用占存放空间了,算法是一样的。这个方法对于任意变化频率的连续512脉冲都有效,而且每512个脉冲会自动同步一次,如果是其它配比,改系数即可。
以512个输入脉冲为单位,先计算150个脉冲与512脉冲对应关系。比如说,输出第511个脉冲的上升沿,对应输入512脉冲的1/3位置,即第(170+2/3)个输入脉冲。
在计数输入脉冲时,数到第170个的时候,测量上次输入周期为T个计时脉冲(定时器的时钟),并控制定时器的OC在T*2/3处输出上升沿。其它以此类推,需要计算150个偏差值。
可以分2个数组,一个存放150个对应的输入脉冲数,一个存放150个延时值,这对应了所有的上升沿,下降沿可以用同样2个数组,也可以在输出上升沿时计算。
这是运算最快的方法,当然也可以在计数脉冲的同时,计算这几张表,就不用占存放空间了,算法是一样的。这个方法对于任意变化频率的连续512脉冲都有效,而且每512个脉冲会自动同步一次,如果是其它配比,改系数即可。
全部回答
- 1楼网友:执傲
- 2021-03-15 09:57
我的想法是,计时512总时间,在下一个512来临的同时,计时并输出150脉冲。没想到特别的好办法追问是利用定时器吗,谢谢,我想想追答比较麻烦。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯