Estoy usando MC9S08AW60A con DEMO9S08AW60E (Freescale). He estudiado sobre los temporizadores dados con el MCU. Deseo saber exactamente cómo implementar los temporizadores por código. El paquete Freescale también viene con Expert Processor (una GUI para configurar el MCU).
He escrito el siguiente código para iluminar los LED de forma secuencial SIN usar la función RETARDO, es decir, solo modificando / usando los TEMPORIZADORES y el GENERADOR INTERNO DE RELOJ.
//------------CODE BEGINS------------
PTFDD = 0xFF;
TPM1SC = 0x0E;//configures the Timer 1 Status and Control Register
TPM1C2SC = 0x98;//configures the TImer 1 CHANNEL 2 Status and Control Register
ICGC1= 0xE8; //Have altered the ICG with respect to TPM.
ICGC2= 0x8E;
//As you can see i have not altered the ICG in any way.And the same values as above
//(for TPM) i have emulated using the Processor Expert.
for (i=1;i<=8;i++)
{
if (i==8) i = 1;
if (i==1) PTFD = 0x01;
if (i==2) PTFD = 0x02;
if (i==3) PTFD = 0x04;
if (i==4) PTFD = 0x08;
if (i==5) PTFD = 0x10;
if (i==6) PTFD = 0x20;
if (i==7) PTFD = 0x40;
}
//----------CODE ENDS-----------------
Pero todo lo que obtengo:
- Los LED están encendidos pero muy débiles, creo que están cambiando muy rápidamente. Estoy en lo correcto?
- Además, ¿necesito cambiar la configuración de ICG si uso TImer?
- También, he inicializado el dispositivo con Processor Expert y he escrito lo mismo que el código. ¿Interfiere? (Me he asegurado de que ambos representen los mismos valores, de lo contrario, me mostraría un error.
En la hoja de datos, consulte la página 165 para el temporizador / PWM y la página 129 para Inter Clock Generator.