Estoy usando un Freescale MC9S08DZ60 , y he escrito el código para aplicar PWM en un pin específico. Este es un intento de efecto de Breaking en el LED, una pregunta que ya tenía. - Efecto de respiración de LED . Aunque el consejo fue correcto, solo hizo que el LED parpadee a intervalos aleatorios. Cambié mi enfoque.
Configuración predeterminada: CONFIGURAR PARA COMPARAR (Fade ON). Incrementa el Registro de valores del canal por el valor de i. Comprueba el valor del registro de valor de canal, luego cambia a BORRAR SALIDA EN COMPARACIÓN (Fade OUT), actualiza el valor de i como antes en el registro de valores de canal.
PERO, cuando el código se muestra, SWITCHES entre las opciones (FADE ON & FADE OUT) solo UNA VEZ. Eso es después del primer cambio entre las opciones, permanece en la opción FADE OUT.
Configuración predeterminada: Módulo Contador = 65535.
Periodo = 4.096ms.
Borde alineado.
En el canal 1.
Acción de salida de PWM: establecer OUtput en la comparación.
Canal de servicio = 4.095ms.
¿Cómo es posible cambiar entre estas dos opciones de PWM?
¿Es el número del temporizador 'TICKS' un atributo que estoy pasando por alto?
Gracias de antemano.
for(;;)
{
TPM1C2SC &= 0b11110011; //TO SET OUTPUT ON COMPARE.
TPM1C2SC |= 0b00000100;
TPM1C2VL =~ (i<<1);
TPM1C2VH += TPM1C2VL;
if(TPM1C2V == 255 )
{
TPM1C2SC &= 0b11110011; // CLEAR OUTPUT ON COMPARE.
TPM1C2SC |= 0b00001000;
TPM1C2VL =~ (i>>1);
TPM1C2VH += TPM1C2VL;
i=0;
}
}