找回密码
 立即注册
查看: 38|回复: 5

求助,8h8k64u的PWMA、B两相能否做一路输出一路输入检查

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2025-08-01 04:36:15

3

主题

17

回帖

109

积分

注册会员

积分
109
发表于 3 天前 | 显示全部楼层 |阅读模式
如题,当前状况是使用PWMB_6输出了一路可配置频率及占空比的PWM信号,能否使用PWMA_1p+2p用作编码器输入检测,虽然在低频率的机械编码器上如EC11,使用普通的中断检测会更方便,但PWM有滤波和抖动处理,在使用更高线数的编码器时对时序的影响更小。

我遇到的问题是先行配置了PWMB输出了一路方波信号,但无法完成对PWMA的配置,当我取消PWMB的配置语句时   编码器可以正常使用。
相关代码稍后上传
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2025-08-01 04:36:15

3

主题

17

回帖

109

积分

注册会员

积分
109
发表于 3 天前 | 显示全部楼层
************************************EC11初始化**************************************
void EC11_init(void)
{
        P1M0 &= ~0x05; P1M1 &= ~0x05;
        P5M0 &= ~0x10; P5M1 &= ~0x10;
       
        //当前初始化使用P1.0为A端口,P5.4为B端口
        PWMA_PSCR = 0;
        PWMA_ARR = 0xffff;
        PWMA_CNTR = 0;
        PWMA_ENO = 0;
        //PWMA_CCER1 = 0x00; //关闭通道以配置
       
        PWMA_CCMR1 = 0xA1;                                         // 通道模式配置为输入,接编码器 , 滤波器 80 时钟
        PWMA_CCMR2 = 0xA1;                                         // 通道模式配置为输入,接编码器 , 滤波器 80 时钟
        PWMA_CCER1 |= 0x55;                                        // 使能捕获/比较通道1、通道2
       
        //        PWMA_SMCR = 0x01;                                 // 编码器模式 1
        //        PWMA_SMCR = 0x02;                                 // 编码器模式 2       
        PWMA_SMCR = 0x03;                                         // 编码器模式 3
       
        PWMA_PS = 0;
        PWMA_IER = 0x02;                                                 // 使能中断
        PWMA_CR1 |= 0x01;                                         // 使能计数器
        EA = 1;

}
************************************中断26**************************************
void PWMA_ISR() interrupt 26
{
        if (PWMA_SR1 & 0X02)                                // 当捕获中断标志置1
        {
                //cnt_H = PWMA_CCR1H;                                // 读取计数值高8位
                cnt_L = PWMA_CCR1L;                                // 读取计数值低8位
                PWMA_SR1 &= ~0x02;                                // 清零捕获中断标志
                EC11_Handle();                                                        // 处理EC11数据
                P21=~P21;
        }
}
***********************************PWM输出初始化***************************************
void pwm_init(void)
{
        PWMB_CCER1 = 0x00;        //非捕获/比较输出,清零CCER1捕获比较寄存器
        PWMB_CCMR2 = 0x60;        //配置PWM6通道CCMR寄存器
        PWMB_CCER1 |= 0x30;        //使能cc6e cc6p输出通道
       
        PWMB_ARRH = (u8)(PWM_Period >> 8);
  PWMB_ARRL = (u8)PWM_Period;
       
        PWMB_ENO = 0x00;        //清空PWMB输出使能
        PWMB_ENO |= 0x06;        //使能PWMB6输出
       
        PWMB_PS = 0x00;  //高级 PWM 通道输出脚选择位
  PWMB_PS |= Pwm_IO; //选择 PWMB输出通道
       
        //PWMB_BKR = 0x80;        //PWMB通道输出使能
        PWMB_CR1 |= 0x01; //开始计时
}
***********************************PWM输出设置***************************************
void Pwm_set(u16 cc)
{
        if(cc){
                PWMB_BKR = 0x80;
                lighth*=70;        //100均分周期Pwm_period     Pwm_period = 6999;
                PWMB_CCR6H = (u8)(cc >> 8); //设置占空比时间
                PWMB_CCR6L = (u8)(cc);
        }else PWMB_BKR = 0x00;  //关闭PWMB输出使能
}

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:516
  • 最近打卡:2025-08-03 00:25:41
已绑定手机

87

主题

5805

回帖

1万

积分

超级版主

DebugLab

积分
10432
发表于 3 天前 | 显示全部楼层
PWMA和PWMB是相互独立的,互不影响,唯一的区别是PWMA支持互补输出,PWMB不支持
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:146
  • 最近打卡:2025-08-02 09:18:38

763

主题

1万

回帖

1万

积分

管理员

积分
18359
发表于 3 天前 | 显示全部楼层
可以
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2025-08-01 04:36:15

3

主题

17

回帖

109

积分

注册会员

积分
109
发表于 3 天前 | 显示全部楼层
那我的代码应该怎么修改呢,我现在还不清楚是哪里出了问题

点评

能否给出完整的工程? https://www.stcaimcu.com/forum.php?mod=viewthread&tid=1779&highlight=pwm%20%E7%A8%8B%E5%BA%8F&page=1&extra=#pid11526 或者参考这部分生成方波的程序进行移植,按道理讲PWMA和PWMB的寄存  详情 回复 发表于 昨天 10:57
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:533
  • 最近打卡:2025-08-02 10:48:16
已绑定手机
已实名认证

116

主题

2669

回帖

6630

积分

版主

积分
6630
发表于 昨天 10:57 | 显示全部楼层
Alb*** 发表于 2025-7-31 23:53
那我的代码应该怎么修改呢,我现在还不清楚是哪里出了问题

能否给出完整的工程?
https://www.stcaimcu.com/forum.p ... amp;extra=#pid11526
或者参考这部分生成方波的程序进行移植,按道理讲PWMA和PWMB的寄存器都是分开的,不会相互影响。
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-8-3 07:26 , Processed in 0.122226 second(s), 72 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表