打印

计数器改变频率上限

[复制链接]
551|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hanwe|  楼主 | 2020-1-18 09:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

51单片机,输出5路占空比为50%频率可变的PWM。
定时器只输出固定频率的PWM,再通过设计计数器改变频率上限。请问大家有什么好的思路。

使用特权

评论回复
沙发
yufe| | 2020-1-18 09:18 | 只看该作者
一般是频率固定,脉宽可调

使用特权

评论回复
板凳
hanwe|  楼主 | 2020-1-18 09:20 | 只看该作者
有程序参考吗

使用特权

评论回复
地板
llia| | 2020-1-18 09:22 | 只看该作者

typedef unsigned char        U8;
typedef unsigned char        bool;

typedef struct{
        U8 set;
        U8 run;
        bool out;
}t_PWM;

t_PWM pwm[5];


void pwm_set(U8 index, U8 set)
{
        if(index >= 5){
                return;
        }

        pwm[index].set = set;
}

void isr_t0(void) interrupt 1
{
        U8 i;

        reload_1ms();        // 100uS,250us,500us....

        for(i=0; i<5; i++){
                if(++pwm[i].run >= pwm[i].set){
                        pwm[i].run = 0;
                        pwm[i].out ^= 1;
                }
        }

        P0_0 = pwm[0].out;

}

void main(void)
{
        U8 set = 1;

        init();

        while(1)
        {
                delay(3SECOND);

                pwm_set(0, set);
                set++;
        }
}

使用特权

评论回复
5
yufe| | 2020-1-18 09:25 | 只看该作者
不明白“定时器只输出固定频率的PWM,再通过设计计数器改变频率上限”这是什么意思。

使用特权

评论回复
6
yufe| | 2020-1-18 09:31 | 只看该作者
对啊,50%的PWM。不就是波嘛。你要求的最高输出频率、频率步进分别多少?

使用特权

评论回复
7
wangpe| | 2020-1-18 09:34 | 只看该作者
嗯,最高频率不高的话,可以考虑模拟DDS的方式。

使用特权

评论回复
8
hanwe|  楼主 | 2020-1-18 09:37 | 只看该作者
输出5路互不干扰,频率可调的方波。1Khz-4Khz

使用特权

评论回复
9
hanwe|  楼主 | 2020-1-18 09:39 | 只看该作者
输出5路互不干扰,频率可调的方波。1Khz-4Khz

使用特权

评论回复
10
zhuww| | 2020-1-18 09:45 | 只看该作者
可以找 集成5路以上PCA的51核MCU实现,最高4KHz 50% 占空比,则最小时间125uS,用汇编还是比较容易做五路的。用C做有一定难度(也可以做出来就是)

使用特权

评论回复
11
yufe| | 2020-1-18 09:47 | 只看该作者

可以用任何MCU,产生65536HZ定时器中断,然后模拟DDS输出5路方波,累加字长16位,频率字长16位,步进1HZ,会有一点点抖动,最大抖动时间为1个中断时间(大约15us)。当输出频率比较高时会明显一些,如输出4KHZ时,周期为250us,但是会有15us的抖动。

如果你的MCU速度够快,你同时产生几十路相互独立的频率都可以。

使用特权

评论回复
12
yufe| | 2020-1-18 09:50 | 只看该作者
还有,如果要求抖动小,则可以输出经过RC滤波后接74HC14整形,就可以得到非常稳定的方波了。

使用特权

评论回复
13
hanwe|  楼主 | 2020-1-18 09:53 | 只看该作者
嗯,预料中的结果,先结贴吧,多谢大家啦

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

979

主题

8749

帖子

4

粉丝