小夏天的大西瓜 发表于 2023-3-21 19:54

凌鸥MCPWM输出全0全1



in main.c



    volatile int i;
    SYS_PROT = PSW_PROT;
    SYS_CLK_CFG = 0x01FF;


    SYS_SFT_RST = 0x00FF;
    SYS_SFT_RST = 0x0000;
    SYS_CLK_FEN = 0x0008;

    //mcpwm config
    MCPWM_PRT       = 0x0000DEAD; //enter password to unlock write protection
    MCPWM_TH      = 0x00000BCD;
    //-------

    //all 1
    MCPWM_TH00      = -0x00000BCD;
    MCPWM_TH01      = 0x00000BCD;
    MCPWM_DTH00   = 0;
    MCPWM_DTH01   = 0;
    MCPWM_SDCFG   = 0x1 << 4;   //t0 update
    MCPWM_FAIL   |= 0x00000040; //moe
    MCPWM_IO01   |= 0x00000000; //cmp mode
    //-------
    MCPWM_TCLK      = 0x0000000C; //ton, tclk_en, tclk_div, no div
    MCPWM_AUEN      = 0x3;      //enable auto update of th00 & th01
    //enable t1 event irq
    MCPWM_IE      = 0x2;
    MCPWM_UPDATE    = 0x0000FFFF; //write corresponding bit to trigger update
    //MCPWM_PRT   = 0x0000CAFE; //write any value other than 0xDEAD to enable write protection

    NVIC_EnableIRQ(MCPWM_IRQn); //enable the adc0 interrupt
    __enable_irq();            //clr PRIMASK
    SCB->SCR &= ~0x00000010;   //clr SEVONPEND
    GPIO1_POE       = 0x1 << 4 | 0x1 << 5;
    GPIO1_F7654   = 0x0033;
    i = 10;

    while(i--){
      while(0x1 != (0x1 & MCPWM_IF)); //wait for MCPWM_IF -TH event
      MCPWM_IF |= 0x1;
    }
PASS;




in interrupt.c

void MCPWM_IRQHandler(void)
{
    MCPWM_IF |= 0xFF;
    GPIO0_PDO = ~GPIO0_PDO;
    if(GPIO0_PDO==0){
      if(MCPWM_TH00 != MCPWM_TH){
            GPIO1_PDO = ~GPIO1_PDO;
            MCPWM_TH00 = MCPWM_TH;
      }
      else{
            MCPWM_TH00 = -MCPWM_TH;
            GPIO2_PDO = ~GPIO2_PDO;
      }
    }
}

综上,

TH00 = TH01 可实现mcpwm输出全0

TH00 = -TH TH01 = TH,可实现mcpwm输出全1

chenqianqian 发表于 2023-3-21 20:01

输出全0或全1的意义是什么?

NIMIJACK 发表于 2023-3-27 11:14

chenqianqian 发表于 2023-3-21 20:01
输出全0或全1的意义是什么?

电机控制专用,停机需要全0或者全1

鸥芯电驱港港 发表于 2023-3-27 13:35

chenqianqian 发表于 2023-3-21 20:01
输出全0或全1的意义是什么?

还比如电机刹车的时候也需要输出全0或者全1,是全0还是全1主要看驱动极性啦

tpgf 发表于 2023-4-12 16:21

我不能理解的就是既然用pwm全输出1或者0,那么用pwm的目的是什么呢

磨砂 发表于 2023-4-12 16:42

tpgf 发表于 2023-4-12 16:21
我不能理解的就是既然用pwm全输出1或者0,那么用pwm的目的是什么呢

不是全程都是全0或者全1 是说的某一个时间段

晓伍 发表于 2023-4-12 16:56

NIMIJACK 发表于 2023-3-27 11:14
电机控制专用,停机需要全0或者全1

请问在刹车或者加速的时候我们需要如何配置呢

八层楼 发表于 2023-4-12 17:18

晓伍 发表于 2023-4-12 16:56
请问在刹车或者加速的时候我们需要如何配置呢

这种是不是得两路pwm配合使用了呢

观海 发表于 2023-4-13 08:26

从全0或者全1状态退出的话 还需要再次配置吗

guanjiaer 发表于 2023-4-13 09:28

单片机里边的时序可以写的非常复杂吗 自动的停机啊刹车啊 加速啊之类的
页: [1]
查看完整版本: 凌鸥MCPWM输出全0全1