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!