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

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

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:256
  • 最近打卡:2025-05-02 10:04:30

2

主题

13

回帖

341

积分

中级会员

积分
341
发表于 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
  • 打卡总天数:55
  • 最近打卡:2025-05-02 08:32:59

717

主题

1万

回帖

1万

积分

管理员

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:514
  • 最近打卡:2025-05-02 10:18:47

24

主题

515

回帖

990

积分

荣誉版主

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

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2025-05-02 10:07:51

73

主题

5883

回帖

1万

积分

超级版主

积分
12079
发表于 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
  • 打卡总天数:123
  • 最近打卡:2025-04-19 16:12:35
已绑定手机

60

主题

777

回帖

4001

积分

论坛元老

自定义头衔

积分
4001
发表于 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
联系我请点击左下角的【回复】按钮,否则我收不到消息提
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2025-05-02 10:07:51

73

主题

5883

回帖

1万

积分

超级版主

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

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

点评

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

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:123
  • 最近打卡:2025-04-19 16:12:35
已绑定手机

60

主题

777

回帖

4001

积分

论坛元老

自定义头衔

积分
4001
发表于 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
  • 打卡总天数:123
  • 最近打卡:2025-04-19 16:12:35
已绑定手机

60

主题

777

回帖

4001

积分

论坛元老

自定义头衔

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

答案是显然的

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:256
  • 最近打卡:2025-05-02 10:04:30

2

主题

13

回帖

341

积分

中级会员

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

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:365
  • 最近打卡:2025-05-02 00:20:03

6

主题

319

回帖

2206

积分

金牌会员

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

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 13:23 , Processed in 0.140758 second(s), 117 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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