社区闲人 发表于 2024-3-15 17:36:18

这样就简单了。我整理一下思路,晚上或者明天回复。

so easy!

梁工 发表于 2024-3-15 18:55:56

社区闲人 发表于 2024-3-15 16:29
40kHz左右的PWM输出频率会变化吗?
如果频率不变,180度相位差不变,只改变占空比,那就好办了。 ...

/*************        功能说明        **************
先别修改程序, 直接下载"Objects"里的"pwm.hex"测试, 下载时选择主频24MHz.
MCU主频24MHz, PWM时钟6分频=24/6=4MHz.

PWM1通道工作于PWM模式1, PWM2工作于匹配输出模式. 输出PWM周期1ms.

通道1输出: P2.0, PWMA1P输出, P2.1, PWMA1N输出
通道2输出: P2.2, PWMA2P输出, P2.3, PWMA2N输出,PWMA2相对PWMA1滞后180度相位.
如有需要, 用户自行修改成别的IO输出.


特别提醒:由于需要中断介入处理,所以最小、最大占空比受限制,本例PWM频率40KHz,占空比在10%~40%可以正常工作。

输出有相位差的多路PWM使用STC8H2K08U或STC8G2K64S4或STC8A8K64D4这些型号更方便,纯硬件输出,占空比无限制,不占CPU时间。






社区闲人 发表于 2024-3-15 19:39:09

梁工 发表于 2024-3-15 18:55
/*************        功能说明        **************
先别修改程序, 直接下载"Objects"里的"pwm.hex"测试, 下载时选 ...

OK, 就是这样。
有梁工的代码,我就省事了。

010442c 发表于 2024-3-16 07:49:54

梁工 发表于 2024-3-15 18:55
/*************        功能说明        **************
先别修改程序, 直接下载"Objects"里的"pwm.hex"测试, 下载时选 ...

好的,谢谢。

010442c 发表于 2024-3-16 07:50:18

社区闲人 发表于 2024-3-15 19:39
OK, 就是这样。
有梁工的代码,我就省事了。

010442c 发表于 2024-4-25 09:58:01

梁工 发表于 2024-3-15 18:55
/*************        功能说明        **************
先别修改程序, 直接下载"Objects"里的"pwm.hex"测试, 下载时选 ...

梁工你好
我现在在使用STC8H2K12来实现两路相位相差180度的PWM,之前看资料上写的这个芯片的硬件移相只有P1.3P1.5两个管脚,线路板已经画好,我想知道怎么实现,有参考的例程吗,之前在论坛上的例程好像和我的要求不一样。

梁工 发表于 2024-4-25 11:08:05

010442c 发表于 2024-4-25 09:58
梁工你好
我现在在使用STC8H2K12来实现两路相位相差180度的PWM,之前看资料上写的这个芯片的硬件移相只 ...

参考14B,自己改下IO。

STC8H系列-高级PWM范例程序下载,2024/1/3 更新
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=1779

神农鼎 发表于 2024-4-25 11:42:25



PWM硬件移相测试卡教程(四)组合PWM补充(1个pwm实现180度移相输出+互补50%) - 工控板,PLC,STC8/STC32实现 - 国芯技术交流网站-STC全球32位8051爱好者互助交流社区 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)




工控板,PLC,STC8/STC32实现 - 国芯技术交流网站-STC全球32位8051爱好者互助交流社区 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)

dong97512 发表于 2024-8-18 19:24:35

本帖最后由 dong97512 于 2024-8-18 19:25 编辑

梁工,你好!
      一个车载信号线,我用如下一段测试语句测试波形的频率和占空比可以运行 ,请问,信号无波形的时候,占空比如何得到0%?
      P_SW2 |= 0x80;                //SFR enable   

    PWMA_SR1   &= 0xF9;      
      PWMA_SR2   &= 0xFD;      
      PWMA_CCER1 |= 0x11;      //捕获功能使能CC1E=1CC2E=1
      while(( PWMA_SR1 &0x02)==0);
      while(( PWMA_SR1 &0x04)==0);
      
      A_num= (u16) PWMA_CCR2H<<8;
      A_num |= PWMA_CCR2L;
                while(( PWMA_SR2&0x02)==0);
      
      B_num= (u16) PWMA_CCR1H<<8;
      B_num |= PWMA_CCR1L;
                PWMA_CCER1 &= 0xEE;   ////捕获功能禁止CC1E=0CC2E=0
      P_SW2 &= 0x7F;                //SFR enable   
         F_num=SYSCLK/B_num;   //频率
      Duty= ( A_num*100/ B_num   );//占空比
页: 1 2 3 4 [5]
查看完整版本: 产生2路带死区同相的相位相差180的频率占空比可调的PWM