Autor Tema: Interrupciones con timer 0 independientes  (Leído 1910 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado dpaladin

  • PIC10
  • *
  • Mensajes: 1
Interrupciones con timer 0 independientes
« en: 29 de Mayo de 2008, 02:43:16 »
Hola

No soy nuevo en el foro, he estado leyendo durante un tiempo, pero hasta ahora decidi registrarme  :D

Quisiera saber si es posible usar las interrupciones con el timer 0 que sean independientes del resto del programa, porque tengo el timer contando para un segundo pero cualquier delay o codigo un poco largo me retrasa el contador.
Alguna manera de hacerlo?

O alguien sabe como usar un RTC, he buscado pero no hayo como usarlo  :(
Estoy haciendo un reloj en una matriz de leds y uso el proteus para simularlo, con un 16f84a

Y tambien, saben porque al simular con proteus el RA4 o T0CLK no funciona, he probado incluso con output_high(pin_a4); pero no me funciona  :?

Gracias de antemano :)
saludos
« Última modificación: 29 de Mayo de 2008, 02:48:17 por dpaladin »

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Interrupciones con timer 0 independientes
« Respuesta #1 en: 29 de Mayo de 2008, 04:09:08 »
Precisamente las interrupciones se caracterizan por ser independientes, emancipadas del programa principal, e ir a su bola. Si un retardo te afecta a la interrupción es que está pasando algo raro en tu programa.

Para resolver tu problema con RA4 mira esto: Problemas con RA4

Desconectado jfmateos2

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3145
Re: Interrupciones con timer 0 independientes
« Respuesta #2 en: 29 de Mayo de 2008, 05:25:04 »
Quizás dpaladin se refiere a que cualquier código un poco largo que introduce en la rutina de gestión de la propia interrupción le deteriora la cuenta de 1 segundo.

Si tienes la interrupción programada para que salte cada segundo, saltará cada segundo, ejecutará la rutina de gestión de la interrupción, y volverá a iniciar la cuenta de 1 segundo. Consecuentemente, si la rutina de gestión de la interrupción es larga, se introducirá un retraso.

Para evitarlo, procura que la rutina de la interrupción sea lo menor posible; generalmente se asigna simplemente un valor a una variable que actúa como bandera, y luego se detecta desde el programa principal que se ha activado esa bandera se actúa en consecuencia y se vuelve a resetear su valor.

Dpaladin, quizás si pusieras tu código podríamos ayudarte con más criterio.