Estoy usando un MC9S08LH64 módulo del temporizador del microcontrolador para generar un temporizador interno para la sincronización . el reloj del bus está en 4.3 MHz, el módulo está configurado en 4309 (TPM1MODH y TPM1MODL) y estoy esperando un pulso cada 1.25 ms, pero el resultado es aproximadamente cada 3.75ms. ¿Hay alguna configuración que me estoy perdiendo aquí? Muchas gracias
En el manual de referencia :
/*
* TPM1SC: pg 358
bit
7 TOF need to check for this flag
6 not used since no interrupt being used
5 1 not used
4 0 selecting bus clock
3 1
2 0 not dividing clock down
1 0
0 0
*/
TPM1SC = 0x08;
* Actualización: Me acabo de dar cuenta de que cambiar el TPM1MOD no tiene efecto en el ancho del pulso resultante. TPM1SC es el único registro que utilicé para configurar el módulo. ¿Hay algún otro registro que deba configurar para esto?
Aquí está el código fuente para configurar el temporizador:
//to set up the modulo register:
void set_base_pulse(float time_ms)
{
int modulo_value;
modulo_value = (int) time_ms*1000/233;
TPM1MODH = modulo_value >>8;
TPM1MODL = modulo_value;
}
para generar los pulsos, verifiqué el indicador TOF, cada 40 veces que se apaga el indicador, alterno la salida:
for (counter = 0; counter<40; counter++) {
while (!TPM1SC_TOF) {}
if (counter == 39) output ~= output;
}