找回密码
 立即注册
查看: 878|回复: 14

在互补pwm输出的下降沿产生一个短脉冲问题

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:278
  • 最近打卡:2025-06-16 14:23:39

2

主题

13

回帖

359

积分

中级会员

积分
359
发表于 2024-11-10 12:47:47 | 显示全部楼层 |阅读模式
在互补pwm输出的下降沿产生一个短脉冲几个us,但是总是有延时,不知道为什莫,是不是实现方式不对,希望大家帮忙



以下是程序   用的是P10和P13 生成互补带死区波形   然后外部中断0检测P10的下降沿,在中断里控制P20产生短脉冲



#include "STC8H.h"
#include "intrins.h"

void main(void)
{
        P_SW2 = 0x80;

    P0M1 = 0x00;
    P0M0 = 0xFF;
    P1M1 = 0x00;
    P1M0 = 0xFF;
        P2M1 = 0x00;
    P2M0 = 0x00;
        P3M1 = 0x00;
    P3M0 = 0x00;
       
        IT0 = 1;                                    //使能INT0下降沿中断
    EX0 = 1;                                    //使能INT0中断
       
       
    PWMA_ENO = 0xFF;                            //IO输出PWM
    PWMA_PS = 0x00;                             //00:PWM at P1
                          //00:PWM at P1
/**********************************************************
PWMx_duty = [CCRx/(ARR + 1)]*100
***********************************************************/
    PWMA_PSCRH = 0x00;                        //预分频寄存器
    PWMA_PSCRL = 0x00;
    PWMA_DTR = 24;                          //死区时间配置

    PWMA_CCMR1 = 0x68;                        //通道模式配置
    PWMA_CCMR2 = 0x68;

    PWMA_ARR = 1200;                         //自动重装载寄存器,计数器overflow点

        PWMA_CCR1 = 100;                        //计数器比较值
    PWMA_CCR2 = 1100;


        PWMA_CCER1 = 0x55;                        //配置通道输出使能和极性

    PWMA_BKR = 0x80;                          //主输出使能 相当于总开关
    PWMA_IER = 0x02;                          //使能中断
    PWMA_CR1 = 0x01;                          //使能计数器
        P20 = 0;
        EA = 1;
    while (1);
}

void PWMA_ISR() interrupt 26
{
    if(PWMA_SR1 & 0X02)
    {
        PWMA_SR1 &=~0X02;
    }
}

void INT0_Isr() interrupt 0
{
        P20 = 1;
        _nop_();
        _nop_();
        P20 = 0;

}

用逻辑分析仪看,检测到下降沿,到产生短脉冲,有延时,怎末才能没有延时,有什莫解决办法
pwm.PNG
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:100
  • 最近打卡:2025-06-17 08:13:13

733

主题

1万

回帖

1万

积分

管理员

积分
16675
发表于 2024-11-10 12:59:36 | 显示全部楼层
已发梁工帮忙看下,今周末,可能要等
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:559
  • 最近打卡:2025-06-17 07:05:23

24

主题

524

回帖

1228

积分

荣誉版主

积分
1228
发表于 2024-11-10 14:21:40 | 显示全部楼层
外部中断0检测P10的下降沿, 响应中断,在中断里控制P20产生跳变,需要6---10个时钟的时间,莫得办法消除。
如果是用ARM的F3, 这个延时要40---70个时钟的时间。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:95
  • 最近打卡:2025-06-17 10:15:05

74

主题

6092

回帖

1万

积分

超级版主

积分
12731
发表于 2024-11-10 14:27:28 | 显示全部楼层
互补输出是硬件自动的,
P1.0与P1.1、P1.2与P1.3是两对互补输出的PWM,
但是P1.0和P1.3不是互补关系。可以下载我的例程参考:

STC8H系列-高级PWM范例程序下载,2024/1/3 更新

https://www.stcaimcu.com/forum.php?mod=viewthread&tid=1779
(出处: 国芯技术交流网站)


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:125
  • 最近打卡:2025-06-04 21:38:29
已绑定手机

60

主题

782

回帖

4027

积分

论坛元老

自定义头衔

积分
4027
发表于 2024-11-10 15:52:07 来自手机 | 显示全部楼层
梁工 发表于 2024-11-10 14:27
互补输出是硬件自动的,
P1.0与P1.1、P1.2与P1.3是两对互补输出的PWM,
但是P1.0和P1.3不是互补关系。可以 ...

那么短脉冲的成因是?

点评

短脉冲有多短?用示波器观察,不要用逻辑分析仪。  详情 回复 发表于 2024-11-10 18:09
联系我请点击左下角的【回复】按钮,否则我收不到消息提
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:95
  • 最近打卡:2025-06-17 10:15:05

74

主题

6092

回帖

1万

积分

超级版主

积分
12731
发表于 2024-11-10 18:09:02 | 显示全部楼层
VC*** 发表于 2024-11-10 15:52
那么短脉冲的成因是?

短脉冲有多短?用示波器观察,不要用逻辑分析仪。

点评

是楼主不是我哈哈哈。不过我现在就可以用STC8H8K64U屠龙刀板子跑一下  发表于 2024-11-10 18:14
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:125
  • 最近打卡:2025-06-04 21:38:29
已绑定手机

60

主题

782

回帖

4027

积分

论坛元老

自定义头衔

积分
4027
发表于 2024-11-10 18:40:57 | 显示全部楼层
本帖最后由 VCC 于 2024-11-10 18:42 编辑
梁*** 发表于 2024-11-10 18:09
短脉冲有多短?用示波器观察,不要用逻辑分析仪。

复现了波形,并且弄清楚了楼主究竟在讲什么

截图202411101840465953.jpg

应该是个误会


片外将P32(INT0输入)和P10(PWM输出)短接起来

然后在INT0的中断ISR里做如下操作:

截图202411101842381826.jpg
楼主问:

为什么P21隔了这么久才产生短脉冲?




联系我请点击左下角的【回复】按钮,否则我收不到消息提
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:125
  • 最近打卡:2025-06-04 21:38:29
已绑定手机

60

主题

782

回帖

4027

积分

论坛元老

自定义头衔

积分
4027
发表于 2024-11-10 18:44:33 | 显示全部楼层
VC*** 发表于 2024-11-10 18:40
复现了波形,并且弄清楚了楼主究竟在讲什么

答案是显然的

因为外部中断要由CPU处理,中断触发 到 进入ISR函数 这个过程需要一些时间
联系我请点击左下角的【回复】按钮,否则我收不到消息提
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:278
  • 最近打卡:2025-06-16 14:23:39

2

主题

13

回帖

359

积分

中级会员

积分
359
发表于 2024-11-10 19:22:31 | 显示全部楼层
VC*** 发表于 2024-11-10 18:40
复现了波形,并且弄清楚了楼主究竟在讲什么

是的就是这个意思,是P20,这个短脉冲我想周期还是1200,占空比大概2个us吧,就是在两个脉冲的下降沿产生,这个用外部中断是我想的办法,我也觉得不太可靠,我想用本身pwm口产生这个脉冲信号,因为对这个16位的pwm不太熟悉,请大家帮忙给个思路
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:409
  • 最近打卡:2025-06-17 00:48:11

8

主题

353

回帖

2476

积分

金牌会员

积分
2476
发表于 2024-11-10 19:51:58 | 显示全部楼层
需要瞬时响应的信号不要用中断,简单的硬件电路就实现了,
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-6-17 19:06 , Processed in 0.187772 second(s), 112 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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