MCPWM Open Drain

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

MCPWM Open Drain

914件の閲覧回数
lpcware
NXP Employee
NXP Employee
Content originally posted in LPCWare by tgalluzzo on Fri Jul 01 15:48:31 MST 2011
I'm having trouble getting the open drain function to work for motor control pwm. I need to drive external transistors with a 5V signal instead of 3V, so my plan was to use the motor control pwm with an external 5V pull up resistor. So far I haven't been able to get it working. Is the open drain available for MCPWM? If so, could you please let me know if there is anything obviously wrong with this code. I'm using the functions provided in lpc17xx_mcpwm.h.

const PINSEL_CFG_Type mcpwm_mco0a_pin[1] = {{1, 19, 1, 2, 1}};
const PINSEL_CFG_Type mcpwm_mco0b_pin[1] = {{1, 22, 1, 2, 1}};

int main(void)
{
    /* MCPWM INITIALIZATION *******************************************/
    /* Initializes pin corresponding to MCPWM function */
    PINSEL_ConfigPin((PINSEL_CFG_Type *)&mcpwm_mco0a_pin[0]);
    PINSEL_ConfigPin((PINSEL_CFG_Type *)&mcpwm_mco0b_pin[0]);

    uint32_t *pPinCon = (uint32_t *)&LPC_PINCON->PINMODE_OD0 + 1;
    debug_printf("PinConVal: %X\n", *pPinCon);

    /* Init MCPWM peripheral */
    MCPWM_Init(LPC_MCPWM);

    /** @brief MCPWM Channel configuration data */
    MCPWM_CHANNEL_CFG_Type channelsetup[3];

    /* MCPWM Channel 0 setup */
    channelsetup[0].channelType = MCPWM_CHANNEL_EDGE_MODE;
    channelsetup[0].channelPolarity = MCPWM_CHANNEL_PASSIVE_LO;
    channelsetup[0].channelDeadtimeEnable = DISABLE;
    channelsetup[0].channelDeadtimeValue = 0;
    channelsetup[0].channelUpdateEnable = ENABLE;
    channelsetup[0].channelTimercounterValue = 0;
    channelsetup[0].channelPeriodValue = 2000;
    channelsetup[0].channelPulsewidthValue = 1800;

    /* Apply the setup to the channels */
    MCPWM_ConfigChannel(LPC_MCPWM, 0, &channelsetup[0]);

    /* Enable the MCPWM DC mode and all output pins */
    MCPWM_DCMode(LPC_MCPWM, DISABLE, DISABLE, ( 0 ));

    /* Disable LIM0 and MAT0 interrupt flag */
    MCPWM_IntConfig(LPC_MCPWM, MCPWM_INTFLAG_LIM0, DISABLE);
    MCPWM_IntConfig(LPC_MCPWM, MCPWM_INTFLAG_MAT0, DISABLE);

    /* Disable LIM1 and MAT1 interrupt flag */
    MCPWM_IntConfig(LPC_MCPWM, MCPWM_INTFLAG_LIM1, DISABLE);
    MCPWM_IntConfig(LPC_MCPWM, MCPWM_INTFLAG_MAT1, DISABLE);

    /* Disable LIM2 and MAT2 interrupt flag */
    MCPWM_IntConfig(LPC_MCPWM, MCPWM_INTFLAG_LIM2, DISABLE);
    MCPWM_IntConfig(LPC_MCPWM, MCPWM_INTFLAG_MAT2, DISABLE);

    /* Start up the MCPWM */
    MCPWM_Start(LPC_MCPWM, ENABLE, ENABLE, ENABLE);

    // Main loop
    while (1)
    {
    }
    return 1;
}
0 件の賞賛
返信
3 返答(返信)

867件の閲覧回数
lpcware
NXP Employee
NXP Employee
Content originally posted in LPCWare by OXO on Sun Jul 03 01:14:38 MST 2011
post your circuit diagram and what you need.
0 件の賞賛
返信

867件の閲覧回数
lpcware
NXP Employee
NXP Employee
Content originally posted in LPCWare by tgalluzzo on Sat Jul 02 13:41:35 MST 2011
Thanks for the information. Boy, this sure would have been a nice feature. Maybe in the next rev...
0 件の賞賛
返信

867件の閲覧回数
lpcware
NXP Employee
NXP Employee
Content originally posted in LPCWare by Ex-Zero on Sat Jul 02 03:57:41 MST 2011

Quote:

...Is the open drain available for MCPWM?...



No :mad:

If you need open drain, just add your own FET :)
0 件の賞賛
返信