找回密码
 立即注册
查看: 403|回复: 21

求助:8H1K08 SOP16接编码器读不到脉冲数字 [已解决]

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2023-12-23 08:55:32

3

主题

36

回帖

163

积分

注册会员

积分
163
发表于 2025-2-21 12:36:33 | 显示全部楼层 |阅读模式
请教各位前辈:我用8H1K08 SOP16接一个编码器,按照手册上范例程序“23.10.22使用高级PWM实现编码器”,编码器A相接P1.0,编码器B相应该接P1.2,但是这个MCU没有P1.2,根据手册描述P1.2在P5.4口上,编码器B相接到P5.4,但是始终读取不到脉冲数字,模拟数码管显示一直是0,后来把编码器B相改接到P1.6,脉冲数字还是0,不知何故,还望各位前辈帮忙指正,谢谢!
串口通讯正常,因为我把pulse改成数值888后模拟数码管显示数值888正常,所以怀疑是PWM配置部分有问题。
中断是正常的,能进中断,能串口发送数据,只是pulse = PWMA_CNTR一直是0
想知道STC8H1K08 SOP16的P1.2是不是在P5.4?如果这个MCU没有P1.2、P5.4也不能用的话,用P1.6是否可以?我尝试B相接P5.4、P1.6,都不行,脉冲数值都是0

void PWMA_config(void)
{
        PWMA_PSCR = 0;// 预分频寄存器, 分频 Fck_cnt = Fck_psc/(PSCR[15:0}+1)
        PWMA_ARR  = 0xffff;// 自动重装载寄存器,  控制PWM周期
        PWMA_CNTR         = 0;//清零编码器计数器值
        PWMA_ENO    = 0;        // IO输出禁止
        PWMA_CCMR1  = 0x01+(10<<4);        // 通道1模式配置, 配置成输入通道, 0~15对应输入滤波时钟数: 1 2 4 8 12 16 24 32 48 64 80 96 128 160 192 256
        PWMA_CCMR2  = 0x01+(10<<4);        // 通道2模式配置, 配置成输入通道, 0~15对应输入滤波时钟数: 1 2 4 8 12 16 24 32 48 64 80 96 128 160 192 256
        PWMA_SMCR   = 2;                        // 编码器模式, 模式1或模式2: 每个脉冲两个边沿加减2.   模式3: 每个脉冲四个边沿加减4.
        PWMA_CCER1  = 0x55;                        // 配置通道输入使能和极性, 允许输入, 下降沿
        PWMA_CCER2  = 0x55;                        // 配置通道输入使能和极性, 允许输入, 下降沿        
        PWMA_PS     = 0;                        // 选择IO,0:选择P1.0 P1.2
        PWMA_IER    = 0x02;        //设置允许通道1~4中断处理
        PWMA_CR1    = 0x01;                        // 使能计数器, 允许自动重装载寄存器缓冲, 边沿对齐模式, 向上计数,  bit7=1:写自动重装载寄存器缓冲(本周期不会被打扰), =0:直接写自动重装载寄存器本(周期可能会乱掉)
}

void PWMA_ISR(void) interrupt 26
{
        if(PWMA_SR1 & 0x02)        //通道1 编码器中断
        {
                pulse = PWMA_CNTR;
                B_Change = 1;                //标志已有捕捉值
        }
        PWMA_SR1 =0;
}

管脚.png

脚切换.png

2.png

编码器接线是按照梁老师的这个图接线的

777.png

正转或者反转编码器旋钮,串口都能看到有数据发送过来,模拟数码管显示的数值是0

999.png

000.png

888.png




回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2023-12-23 08:55:32

3

主题

36

回帖

163

积分

注册会员

积分
163
发表于 2025-2-21 12:45:31 | 显示全部楼层
还望各位前辈不吝赐教,谢谢!
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:213
  • 最近打卡:2025-04-23 20:59:03
已绑定手机

36

主题

560

回帖

1885

积分

荣誉版主

积分
1885
发表于 2025-2-21 13:22:22 | 显示全部楼层
官方有出专门的PWM使用例程的,你可以参考。
我的实测你也可以参考下:
0001.PNG
0002.PNG
0003.jpg
0004.jpg

官方例程中每次+=2,我选择了一个讨巧的办法实现+=1,实现从0-180控制舵机的demo,希望对你有用。
视频为实测结果:


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:213
  • 最近打卡:2025-04-23 20:59:03
已绑定手机

36

主题

560

回帖

1885

积分

荣誉版主

积分
1885
发表于 2025-2-21 13:31:20 | 显示全部楼层
配置上你对照看一下,但是进中断后,你得在检测到中断后清中断啊
void PWMB_ISR(void) interrupt PWMB_VECTOR
{
        if(PWMB_SR1 & 0x02)        //编码器中断
        {
                PWMB_SR1 &= ~0x02;
                pulse = PWMB_CNTR;        //读取当前编码器计数值
                B_Change = 1;                //标志已有捕捉值
        }
}
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2023-12-23 08:55:32

3

主题

36

回帖

163

积分

注册会员

积分
163
发表于 2025-2-21 15:42:39 | 显示全部楼层
有清中断的,估计是配置不对,读不到脉冲数值,我没有STC32的MCU,我用的是STC8H1K08 SOP16,估计是PWM配置不对,但是我是按照手册上照抄的啊

点评

我这个也是8h系列,不是stc32.  详情 回复 发表于 2025-2-22 00:46
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2023-12-23 08:55:32

3

主题

36

回帖

163

积分

注册会员

积分
163
发表于 2025-2-21 15:47:43 | 显示全部楼层
STC8H系列的应该都支持编码器的吧,我看手册上没明确说明哪些型号有这个功能、哪些型号没这个功能
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2023-12-23 08:55:32

3

主题

36

回帖

163

积分

注册会员

积分
163
发表于 2025-2-21 16:19:02 | 显示全部楼层
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2023-12-23 08:55:32

3

主题

36

回帖

163

积分

注册会员

积分
163
发表于 2025-2-21 16:26:35 | 显示全部楼层
中断是正常的,能进中断,能串口发送数据,只是pulse = PWMA_CNTR一直是0
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2023-12-23 08:55:32

3

主题

36

回帖

163

积分

注册会员

积分
163
发表于 2025-2-21 16:29:50 | 显示全部楼层
想知道STC8H1K08 SOP16的P1.2是不是在P5.4?如果这个MCU没有P1.2、P5.4也不能用的话,用P1.6是否可以?我尝试B相接P5.4、P1.6,都不行,脉冲数值都是0
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2023-12-23 08:55:32

3

主题

36

回帖

163

积分

注册会员

积分
163
发表于 2025-2-21 16:46:18 | 显示全部楼层
还望各位前辈不吝赐教,谢谢!
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 00:13 , Processed in 0.568010 second(s), 108 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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