alexzhou88 发表于 2024-9-6 09:02:07

STC8H....PWM捕获脉宽问题 | 已解决

      P_SW2 |= 0x80;
               
      PWMA_CCER1= 0;
      PWMA_CCER2= 0;
      PWMA_SR1    = 0;
      PWMA_SR2    = 0;
      PWMA_ENO    = 0;               
      PWMA_PS   = 0;
      PWMA_IER    = 0;

      PWMA_PSCR = 11;
      
      PWMA_CCMR3= 0x01;
      PWMA_CCER2 |= 0x01;
      PWMA_CCMR4   = 0x02;
      PWMA_CCER2 |= 0x30;
      PWMA_PS |= (1<<4);
      PWMA_ISR_En |= 0x08;
      PWMA_ISR_En |= 0x10;

这设置是根据论坛的DEMO来设置的,MCU主频12MHz, PWM时钟12分频, 所以捕捉时间的分辨率为1us, 最大65535us。
想请问,如需要捕获的周期是> 65535us,那如何设置参数呢?

alexzhou88 发表于 2024-9-6 09:07:04

wnagming 发表于 2024-9-6 09:05
这么大的时间,要不考虑写个定时器手动捕获?

请教老大,有没有参考的资料呢?

alexzhou88 发表于 2024-9-6 09:14:15

wnagming 发表于 2024-9-6 09:09
写个定时器,定时1ms,在中断函数中判断IO电平,如果上次是高电平这次是低电平,就是下降沿,反之亦然, ...

请教老大,按照老大的方法,如果我的PWM是500us低电平,500us高电平。这1M的定时器有影响吗?

DebugLab 发表于 2024-9-6 09:30:22


修改PWMA_PSCR,最大65536分频

梁工 发表于 2024-9-6 09:37:44

可以设置120分频,则可以捕获最大655.35ms(分辨率10us)。
可以设置1200分频,则可以捕获最大6.5535s(分辨率100us)。
对于大部分测控系统,16位的读数已经足够准确。

alexzhou88 发表于 2024-9-6 09:47:27

梁工 发表于 2024-9-6 09:37
可以设置120分频,则可以捕获最大655.35ms(分辨率10us)。
可以设置1200分频,则可以捕获最大6.5535s(分辨率 ...

你好,梁工~意思是把分频寄存器PWMA_PSCR设置一下就好了?

社区闲人 发表于 2024-9-6 10:03:25

在pwm中断里增加溢出中断,并增加溢出中断次数。

梁工 发表于 2024-9-6 10:55:40

alexzhou88 发表于 2024-9-6 09:47
你好,梁工~意思是把分频寄存器PWMA_PSCR设置一下就好了?

是的,16位的分频器。

alexzhou88 发表于 2024-9-6 11:13:28

梁工 发表于 2024-9-6 10:55
是的,16位的分频器。

已经解决到问题了,谢谢梁工。{:handshake:}
页: [1]
查看完整版本: STC8H....PWM捕获脉宽问题 | 已解决