Inver1688 发表于 2023-7-28 13:08:04

STC8G2K64S4的增强型PWM中断疑问

官方手册 19.1.3PWM中断标志寄存器(PWMnIF)


CiIF: PWMn 的第 i通道中断标志位。(n=0~5: =0~7)
可设置在各路 PWM 的 T1 和 T2。当所设置的点发生匹配事件时,硬件自动将此位置 1,并向 CPU提出中断请求,此标志位需要软件清零。

这种PWM中断发生处能否设置在周期值得固定处 而非T1,T2有关?
谢谢!

梁工 发表于 2023-7-28 13:59:48

你具体说说想在哪里中断?
PWM除了T1与T2匹配中断,就是周期中断,没别的了。

Inver1688 发表于 2023-7-29 08:13:31

梁工 发表于 2023-7-28 13:59
你具体说说想在哪里中断?
PWM除了T1与T2匹配中断,就是周期中断,没别的了。 ...

我是想在周期一半发生中断

梁工 发表于 2023-7-29 09:25:57

Inver1688 发表于 2023-7-29 08:13
我是想在周期一半发生中断

如果PWM还有剩余,启动一路PWM,不输出,占空比50%,周期中间的跳变允许中断,就是对应周期的一半。

Inver1688 发表于 2023-7-31 16:56:07

梁工 发表于 2023-7-29 09:25
如果PWM还有剩余,启动一路PWM,不输出,占空比50%,周期中间的跳变允许中断,就是对应周期的一半。 ...

好的 谢谢您的解答

Inver1688 发表于 2023-7-31 18:48:42

本帖最后由 Inver1688 于 2023-8-1 10:35 编辑

梁工 发表于 2023-7-29 09:25
如果PWM还有剩余,启动一路PWM,不输出,占空比50%,周期中间的跳变允许中断,就是对应周期的一半。 ...
您好!还有个问题 在官方手册19.2.3 PWM实现渐变灯(呼吸灯)这个代码
void PWM0_Isr() interrupt 22
{
    static bit dir = 1;
    static int val = 0;

    if (PWMCFG01 & 0x08)
    {
      PWMCFG01 &= ~0x08;                      //清中断标志
      if (dir)
      {
            val++;
            if (val >= CYCLE) dir = 0;
      }
      else
      {
            val--;
            if (val <= 1) dir = 1;
      }
      _push_(P_SW2);
      P_SW2 |= 0x80;
      PWM00T2 = val;
      _pop_(P_SW2);
    }
}

是不是在中断中改变XFR寄存器的值都要先对P_SW2做入栈 赋值操作后再出栈?


如果在主程序的main函数开头P_SW2 |= 0x80; 整个代码并没有清零P_SW2 那么此时PWM0中断对P_SW2做入栈和出栈操作不?
谢谢!

梁工 发表于 2023-7-31 23:52:52

Inver1688 发表于 2023-7-31 18:48
您好!还有个问题 在官方手册19.2.3 PWM实现渐变灯(呼吸灯)这个代码
void PWM0_Isr() interrupt 22
{


P_SW2 |= 0x80;之后不用清零,中断不需要对P_SW2操作。

Inver1688 发表于 2023-8-1 10:33:55

梁工 发表于 2023-7-31 23:52
P_SW2 |= 0x80;之后不用清零,中断不需要对P_SW2操作。

但我看到官方例子中却对P_SW2做了,出入栈操作,请问什么情况下要对P_SW2做出入栈操作?谢谢!

梁工 发表于 2023-8-1 14:28:02

Inver1688 发表于 2023-8-1 10:33
但我看到官方例子中却对P_SW2做了,出入栈操作,请问什么情况下要对P_SW2做出入栈操作?谢谢! ...

最早是STC15W4K系列的6通道15位增强型PWM开始用XDATA区的SFR,刚开始要求入栈保护一下,后来到了STC8系列,就不需要了。一些例子是由于直接使用STC15系列的例子,所以没有更改。如果是新写的例子,就不会再入栈的。

Inver1688 发表于 2023-8-2 08:01:02

梁工 发表于 2023-8-1 14:28
最早是STC15W4K系列的6通道15位增强型PWM开始用XDATA区的SFR,刚开始要求入栈保护一下,后来到了STC8系列 ...

好的 谢谢梁工
页: [1] 2
查看完整版本: STC8G2K64S4的增强型PWM中断疑问