Comportamiento extraño usando PWM en CortexM3

2

Tengo una placa con ATSAM3S2BA-AU , que es un Cortex M3 uC. Necesito usar 2 canales PWM, aquí cómo lo he hecho:

 PIO_Configure(pPins, PIO_LISTSIZE(pPins));  //Pin mapping

/* Enable PWMC peripheral clock */
PMC_EnablePeripheral(ID_PWM);
PWMC_ConfigureClocks(EXCITATION_PWM_FREQUENCY * MAX_PWM_DUTY_CYCLE*2,
                     EXCITATION_PWM_FREQUENCY * MAX_PWM_DUTY_CYCLE,
                     BOARD_MCK);
/* Configure PWMC channel for 1  */
PWMC_ConfigureChannel( PWM,
               PWM_CHANNEL2,        /* channel */
                       PWM_CMR_CPRE_CKA,    /* prescaler */
                       0,                   /* alignment */
                       0);      /* polarity */

PWMC_SetPeriod(PWM, PWM_CHANNEL2, MAX_PWM_DUTY_CYCLE);
PWMC_SetDutyCycle(PWM, PWM_CHANNEL2, HALF_PWM_DUTY_CYCLE);
PWMC_EnableChannel(PWM, PWM_CHANNEL2);


/* Configure PWMC channel for 2  */
PWMC_ConfigureChannel( PWM,
               PWM_CHANNEL0,        /* channel */
                       PWM_CMR_CPRE_CKA,    /* prescaler */
                       0,                   /* alignment */
                       PWM_CMR_CPOL);       /* polarity */

PWMC_SetPeriod(PWM, PWM_CHANNEL0, MAX_PWM_DUTY_CYCLE);
PWMC_SetDutyCycle(PWM, PWM_CHANNEL0, HALF_PWM_DUTY_CYCLE);
PWMC_EnableChannel(PWM, PWM_CHANNEL0); 

esto funciona bien, pero cuando cambio el orden de la configuración, lo que significa que la configuración de channel0 primero que el canal 2, solo la segunda sigue funcionando, entonces la pregunta es ¿por qué? ¡He tratado de averiguarlo leyendo la hoja de datos, pero no sirvió de nada!

    
pregunta Engine

0 respuestas

Lea otras preguntas en las etiquetas