找回密码
 立即注册
楼主: jac***

STC8H1K08 P1.2 用PWM调制周期和占空比

[复制链接]
  • TA的每日心情
    奋斗
    4 天前
  • 签到天数: 62 天

    [LV.6]常住居民II

    0

    主题

    79

    回帖

    598

    积分

    高级会员

    积分
    598
    发表于 2023-8-11 19:58:44 | 显示全部楼层
    void Key_Config(void)                   //按键检测
    {
       
            if((!JS )&&(!PA5)&&(ad3_flag_green = 1))
            {
                    //PWMA_config();
                    P11 = 0;
        }
            else
            {
                    PWMA_BKR  = 0x00;  
            }
                

    请问一下,初始化好好的,到了这一步,PWM波形就乱了。
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    46

    主题

    2989

    回帖

    6735

    积分

    超级版主

    积分
    6735
    发表于 2023-8-11 21:19:54 | 显示全部楼层
    STC8H1KW 发表于 2023-8-11 19:58
    void Key_Config(void)                   //按键检测
    {
       

    禁止了PWM,能不乱吗?
    回复 支持 1 反对 0 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    4 天前
  • 签到天数: 62 天

    [LV.6]常住居民II

    0

    主题

    79

    回帖

    598

    积分

    高级会员

    积分
    598
    发表于 2023-8-12 08:30:41 | 显示全部楼层
    我程序的设想按下输出百分之五十,松手输出为0,该怎么着手。

    点评

    50%占空比也可以不用PWM,用定时器就可以输出。 按下设置、允许输出,松手就关闭输出,就这么简单。  详情 回复 发表于 2023-8-12 14:35
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    46

    主题

    2989

    回帖

    6735

    积分

    超级版主

    积分
    6735
    发表于 2023-8-12 14:35:15 | 显示全部楼层
    STC8H1KW 发表于 2023-8-12 08:30
    我程序的设想按下输出百分之五十,松手输出为0,该怎么着手。

    50%占空比也可以不用PWM,用定时器就可以输出。
    按下设置、允许输出,松手就关闭输出,就这么简单。
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    550

    主题

    9371

    回帖

    1万

    积分

    管理员

    积分
    13924
    发表于 2023-8-12 16:07:18 | 显示全部楼层
    1.png
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    4 天前
  • 签到天数: 62 天

    [LV.6]常住居民II

    0

    主题

    79

    回帖

    598

    积分

    高级会员

    积分
    598
    发表于 2023-8-12 16:24:11 | 显示全部楼层
    void PWMA_Config(void)
    {
                P_SW2 |= 0x80;
                    PWMA_CCER1  = 0;
            PWMA_CCER2  = 0;
                    PWMA_CCR2   = 400;
                    PWMA_ARR    = 500;
            PWMA_CCMR2  = 0x68;        // 通道模式配置, PWM模式1, 预装载允许
          
            PWMA_CCER1 |= 0x50;        // 开启比较输出, 高电平有效
            PWMA_PS    |= (0<<2);      // 选择IO, 0:选择P1.2 P1.3, 1:选择P2.2 P2.3, 2:选择P6.2 P6.3,
            PWMA_ENO   &= ~0x08;        // IO输出允许,  bit7: ENO4N, bit6: ENO4P, bit5: ENO3N, bit4: ENO3P,  bit3: ENO2N,  bit2: ENO2P,  bit1: ENO1N,  bit0: ENO1P
            PWMA_BKR   |= 0x80;        // 主输出使能 相当于总开关
            PWMA_CR1    = 0x81;        // 使能计数器, 允许自动重装载寄存器缓冲, 边沿对齐模式, 向上计数,  bit7=1:写自动重装载寄存器缓冲(本周期不会被打扰), =0:直接写自动重装载寄存器本(周期可能会乱掉)
            PWMA_EGR    = 0x01;        // 产生一次更新事件, 清除计数器和预分频计数器, 装载预分频寄存器的值
           
    }               



    void Key_Config(void)                   //按键检测
    {
       
            if((!JS )&&(!PA5)&&(ad3_flag_green = 1))
            {          
                    PWMA_ENO |= 0x08;
            P11 = 0;
        }
            else
            {
                    PWMA_ENO &= 0x08;  
            }
                
           
            if((!JS )&&(!PA5)&&(ad3_flag_orange = 1))
            {
                    PWMA_ENO |= 0x08;
                    P10 = 0;
                    P11 = 0;
            }
            else
            {
                    PWMA_ENO &= ~0x08;
            }
              

            if((!JS )&&(!PA5)&&(ad3_flag_red = 1))
            {
                    PWMA_ENO |= 0x08;
                    P10 = 0;                
            }
            else
            {
                    PWMA_ENO &= ~0x08;        
            }

    void main()
    {
            
                    IO_init_config();
                    //PWMA_Init();
                    Timer0_init();
                    STC8G_ADC_Iint();        //STC8G系列10位AD初始化函数
                   
                    while(1)
                    {
                            Change_Led();
                            Key_Config();
                            {
                                    PWMA_Config();
                            }       
                    }
    }

    这个PWM波形为什么是假的,经常在跳动
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    4 天前
  • 签到天数: 62 天

    [LV.6]常住居民II

    0

    主题

    79

    回帖

    598

    积分

    高级会员

    积分
    598
    发表于 2023-8-12 18:21:38 | 显示全部楼层
    频率在跳动,还有杂波干扰。这是怎么回事了,梁工,指导一下。

    点评

    先测试我的例程“01C-PWMA-4对互补PWM输出P2口-间歇输出”,然后再移植修改。  详情 回复 发表于 2023-8-13 17:01
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    46

    主题

    2989

    回帖

    6735

    积分

    超级版主

    积分
    6735
    发表于 2023-8-13 17:01:29 | 显示全部楼层
    STC8H1KW 发表于 2023-8-12 18:21
    频率在跳动,还有杂波干扰。这是怎么回事了,梁工,指导一下。

    先测试我的例程“01C-PWMA-4对互补PWM输出P2口-间歇输出”,然后再移植修改。
    STC8H系列-高级PWM相关程序.rar (2.02 MB, 下载次数: 22)

    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    4 天前
  • 签到天数: 62 天

    [LV.6]常住居民II

    0

    主题

    79

    回帖

    598

    积分

    高级会员

    积分
    598
    发表于 2023-8-15 16:46:01 | 显示全部楼层
    请教一下,这个MOS管怎么总是烧,50V60A的MOS,驱动24V 工作电流5A的电机,
    烧MOS管.png

    点评

    GS两极并联一个12V的稳压二极管试试,应该不会再烧了。栅压要限制一下的,虽然你用的5V驱动,但是DG之间有电容的。  详情 回复 发表于 2023-8-15 17:39
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    46

    主题

    2989

    回帖

    6735

    积分

    超级版主

    积分
    6735
    发表于 2023-8-15 17:39:24 | 显示全部楼层
    STC8H1KW 发表于 2023-8-15 16:46
    请教一下,这个MOS管怎么总是烧,50V60A的MOS,驱动24V 工作电流5A的电机,

    GS两极并联一个12V的稳压二极管试试,应该不会再烧了。栅压要限制一下的,虽然你用的5V驱动,但是DG之间有电容的。
    回复 支持 1 反对 0 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-11 04:49 , Processed in 0.077002 second(s), 72 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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