打印

KF32A单片ECCP5的pwm模式的用法(比较值装载问题)

[复制链接]
1149|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
liuqingtao|  楼主 | 2022-3-10 17:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
关于增强型CCP5,配置:请问是不是每次装载比较值都需要重新配置PWM设置。
void cfg_ECCP5()
{
        ECCP_PWM_Mode_Config(ECCP5_SFR,ECCP_PWM_FREE);                                                                        //PWM自由模式,

        ECCP_Channel_Output_Mode(ECCP5_SFR,ECCP_CHANNEL_1,ECCP_OUTPUT_COMPLEMENTARY);        //互补输出模式
        ECCP_Channel_Output_Mode(ECCP5_SFR,ECCP_CHANNEL_2,ECCP_OUTPUT_COMPLEMENTARY);        //互补输出模式
        ECCP_Channel_Output_Mode(ECCP5_SFR,ECCP_CHANNEL_3,ECCP_OUTPUT_INDEPENDENT);            //独立输出模式
        ECCP_Channel_Output_Mode(ECCP5_SFR,ECCP_CHANNEL_4,ECCP_OUTPUT_INDEPENDENT);                //独立输出模式

        ECCP_Channel_Shutdown_Signal(ECCP5_SFR,ECCP_CHANNEL_1,ECCP_CHANNEL_SHUTDOWN_FORBID);        //禁止自动关断
        ECCP_Channel_Shutdown_Signal(ECCP5_SFR,ECCP_CHANNEL_2,ECCP_CHANNEL_BKIN_INACTIVE);                //使能自动关断,ECCPx_BKIN引脚上的低电平
        ECCP_Channel_Shutdown_Signal(ECCP5_SFR,ECCP_CHANNEL_3,ECCP_CHANNEL_BKIN_INACTIVE);                //禁止自动关断
        ECCP_Channel_Shutdown_Signal(ECCP5_SFR,ECCP_CHANNEL_4,ECCP_CHANNEL_BKIN_INACTIVE);                //使能自动关断,ECCPx_BKIN引脚上的低电平

        ECCP_PWM_Restart_Enable(ECCP5_SFR,TRUE);        //使能自动重启

        ECCP_PWM_Move_Phase_Enable(ECCP5_SFR,TRUE);        //使能移相

        ECCP_Channel_Pin_Ctl(ECCP5_SFR,ECCP_CHANNEL_2,ECCP_PORT_LOW,PIN_INACTIVE);                                //关闭状态为低电平
        ECCP_Channel_Pin_Ctl(ECCP5_SFR,ECCP_CHANNEL_2,ECCP_PORT_HIGH,PIN_ACTIVE);                                //关闭状态为高电平

        ECCP_Channel_Pin_Ctl(ECCP5_SFR,ECCP_CHANNEL_3,ECCP_PORT_LOW,PIN_INACTIVE);                                //关闭状态为低电平
        ECCP_Channel_Pin_Ctl(ECCP5_SFR,ECCP_CHANNEL_3,ECCP_PORT_HIGH,PIN_ACTIVE);                                //关闭状态为高电平
        ECCP_Channel_Pin_Ctl(ECCP5_SFR,ECCP_CHANNEL_4,ECCP_PORT_LOW,PIN_INACTIVE);                                //关闭状态为低电平
        ECCP_Channel_Pin_Ctl(ECCP5_SFR,ECCP_CHANNEL_4,ECCP_PORT_HIGH,PIN_TRISTATE);                                //关闭状态为三态

        ECCP_Channel_Output_Control(ECCP5_SFR,ECCP_CHANNEL_1,ECCP_PORT_LOW,ECCP_CHANNEL_OUTPUT_PWM_ACTIVE);                        //强制输出高电平
        ECCP_Channel_Output_Control(ECCP5_SFR,ECCP_CHANNEL_1,ECCP_PORT_HIGH,ECCP_CHANNEL_OUTPUT_PWM_ACTIVE);                //PWM输出,高有效
        ECCP_Channel_Output_Control(ECCP5_SFR,ECCP_CHANNEL_2,ECCP_PORT_LOW,ECCP_CHANNEL_OUTPUT_PWM_ACTIVE);                        //PWM输出,高有效
        ECCP_Channel_Output_Control(ECCP5_SFR,ECCP_CHANNEL_2,ECCP_PORT_HIGH,ECCP_CHANNEL_OUTPUT_PWM_ACTIVE);                //PWM输出,高有效
        ECCP_Channel_Output_Control(ECCP5_SFR,ECCP_CHANNEL_3,ECCP_PORT_LOW,ECCP_CHANNEL_OUTPUT_PWM_ACTIVE);                        //PWM输出,高有效
        ECCP_Channel_Output_Control(ECCP5_SFR,ECCP_CHANNEL_3,ECCP_PORT_HIGH,ECCP_CHANNEL_OUTPUT_PWM_ACTIVE);                //PWM输出,高有效
        ECCP_Channel_Output_Control(ECCP5_SFR,ECCP_CHANNEL_4,ECCP_PORT_LOW,ECCP_CHANNEL_OUTPUT_PWM_ACTIVE);                        //PWM输出,高有效
        ECCP_Channel_Output_Control(ECCP5_SFR,ECCP_CHANNEL_4,ECCP_PORT_HIGH,ECCP_CHANNEL_OUTPUT_PWM_ACTIVE);                //PWM输出,高有效

        //ECCP_Dead_Time_Config(ECCP5_SFR,ECCP_CHANNEL_2,0x00);                        //通道死区延时时间123公用
        ECCP_Dead_Time_Config(ECCP5_SFR,ECCP_CHANNEL_1,0x80);                        //通道死区延时时间

                ECCP_Set_Compare_Result(ECCP5_SFR,ECCP_CHANNEL_1,0x2000);                //PWM占空比
                ECCP_Set_Compare_Result(ECCP5_SFR,ECCP_CHANNEL_2,0x4000);                //PWM占空比
                ECCP_Set_Compare_Result(ECCP5_SFR,ECCP_CHANNEL_3,0x6000);                //PWM占空比
                ECCP_Set_Compare_Result(ECCP5_SFR,ECCP_CHANNEL_4,0x800);                //PWM占空比
}

如果我将如下装载比较值单独放到main(),是没有PWM输出,pwm处于关闭状态(注:前面已经配置好PWM初始化)
ECCP_Set_Compare_Result(ECCP5_SFR,ECCP_CHANNEL_1,0x2000);                //PWM占空比
                ECCP_Set_Compare_Result(ECCP5_SFR,ECCP_CHANNEL_2,0x4000);                //PWM占空比
                ECCP_Set_Compare_Result(ECCP5_SFR,ECCP_CHANNEL_3,0x6000);                //PWM占空比
                ECCP_Set_Compare_Result(ECCP5_SFR,ECCP_CHANNEL_4,0x800);                //PWM占空比

如何可以单独装载比较值,不需要每次都要初始化PWM配置

使用特权

评论回复

相关帖子

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

本版积分规则

1

主题

2

帖子

1

粉丝