Cordial Saludo.
Tengo un problema con los TIM de un HC08JL8, voy a tratar de hacerme entender:
El JL8 tiene 2 TIM TIM1 y TIM2, ambos tiene su registro TSC para configurar el Preescaler, la bandera de interrupción y el de habilitación; Resulta que quiero que cada cierto tiempo(siempre debe ser el mismo) halla un nivel alto en el PTD5 durante unos microsegundos, entonces uso el TIM1 para que cada cierto tiempo me active el PTD5 mediante una interrupción, ahora cuando esto pasa borro la bandera TOF, entra a funcionar el TIM2 con su interrupción habilitada para cuando llegue la interrupción apague el PTD5, me deshabilite el TIM2, hasta una nueva llegada de la interrupción del TIM1..pongo el texto en lenguaje C para su comprención:
void TIM1_Setup(void){
TIM1_TSC=0x36;
TIM1_TMOD=1000;
TIM1_TSC=0x46;
}
void TIM2_Setup(void){
TIM2_TSC=0x36;
TIM2_TMOD=100;
// No habilito la interrupción del TIM2 hasta que no llegue la del TIM1
}
interrupt 6 void TIM1_isr(void){
PTD5 = 1; // enciendo PTD5
TIM2_TSC=0x46;
TIM1_TSC_TOF=0;
}
interrupt 9 void TIM2_isr(void){
PTD5 = 0; // APAGO PTD5
TIM2_TSC=0x36; //Deshabilito interrupción por el TIM2
//No borro la bandera TOF ya que lo hago cuando se vuelva a interrumpit el TIM1
}
Bueno en el main, habilito interrupciones, y ejecuto los setup de cada TIM, el problema que tengo es que el TIM2 no hace el conteo por lo tanto no tengo interrupción y siempre la salida está en ON ; ahora si uso uno solamente de los TIM me funciona bien cada vector, osea me hace la interrupción los 2 TIM, pero no así cuando dentro de una interrupción hay otra de menos duración..que hago mal?...Espero me halla hecho entender, como anecdota hago lo mismo en assembler y funciona muy bien, entonces creo que es algo que me hace falta en lenguaje C.
Gracias de antemano por la ayuda.
Saludos