STC8H1KW 发表于 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波形就乱了。

梁工 发表于 2023-8-11 21:19:54

STC8H1KW 发表于 2023-8-11 19:58
void Key_Config(void)                   //按键检测
{
   


禁止了PWM,能不乱吗?

STC8H1KW 发表于 2023-8-12 08:30:41

我程序的设想按下输出百分之五十,松手输出为0,该怎么着手。

梁工 发表于 2023-8-12 14:35:15

STC8H1KW 发表于 2023-8-12 08:30
我程序的设想按下输出百分之五十,松手输出为0,该怎么着手。

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

神农鼎 发表于 2023-8-12 16:07:18


STC8H1KW 发表于 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波形为什么是假的,经常在跳动

STC8H1KW 发表于 2023-8-12 18:21:38

频率在跳动,还有杂波干扰。这是怎么回事了,梁工,指导一下。

梁工 发表于 2023-8-13 17:01:29

STC8H1KW 发表于 2023-8-12 18:21
频率在跳动,还有杂波干扰。这是怎么回事了,梁工,指导一下。

先测试我的例程“01C-PWMA-4对互补PWM输出P2口-间歇输出”,然后再移植修改。


STC8H1KW 发表于 2023-8-15 16:46:01

请教一下,这个MOS管怎么总是烧,50V60A的MOS,驱动24V 工作电流5A的电机,

梁工 发表于 2023-8-15 17:39:24

STC8H1KW 发表于 2023-8-15 16:46
请教一下,这个MOS管怎么总是烧,50V60A的MOS,驱动24V 工作电流5A的电机,

GS两极并联一个12V的稳压二极管试试,应该不会再烧了。栅压要限制一下的,虽然你用的5V驱动,但是DG之间有电容的。
页: 1 [2] 3 4 5 6 7
查看完整版本: STC8H1K08 P1.2 用PWM调制周期和占空比