首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态PWM占空比

动态PWM占空比
EN

Stack Overflow用户
提问于 2020-01-14 15:37:15
回答 1查看 278关注 0票数 0

我不能动态改变PWM的占空比。我在数据表中发现了这一点,我可能误解了这一点:

CCPR1L和CCP1CON<5:4>可以随时写入,但在PR2和TMR2之间发生匹配(即周期完成)之前,不能将占空比值复制到CCPR1H中。在脉宽调制模式下,CCPR1H是一个只读寄存器.

使用PIC18F1220,XC8 v1.34,MPLABv5.30

代码语言:javascript
复制
PR2=99; //calculation
CCPR1L = 50; //calculation*duty cycle

T2CONbits.TMR2ON = 1; //start timer

        while(1)
    {
        ADC_Result[0] = ADC_Read(0);
        ADC_Result[1] = ADC_Read(1);

        if(ADC_Result[0] > 900) 
        {
            T2CONbits.TMR2ON = 0;
            CCPR1L = 0;
            T2CONbits.TMR2ON = 1;
        }
        else
        {
            T2CONbits.TMR2ON = 0;
            CCPR1L = 50;
            T2CONbits.TMR2ON = 1;
        }

        PIR1bits.CCP1IF=0;
        while(PIR1bits.CCP1IF==0);
    }

难道不应该让计时器重新启动这个时间段吗?

附带注意:我知道PWM工作得很好。在模拟器上,我可以让两种情况都发生,只需要重新启动。我也试过,不关机,按定时器,但没有成功。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-15 01:53:31

问题,以及为什么需要重置是最后一个while循环。在第75页的数据表中,显示CCP1F位在脉宽调制操作中是未使用的。如果要等待期间过期才运行ADC,请使用tmr2if位。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59737090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档