Autor Tema: Problema en tiempos en TMR0 con 16f84 en Proton  (Leído 1731 veces)

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

Desconectado brnaer

  • PIC10
  • *
  • Mensajes: 9
Problema en tiempos en TMR0 con 16f84 en Proton
« en: 21 de Marzo de 2012, 02:44:23 »
Hola amigos;

Me acerco a ustedes solicitando su ayuda para resolver este problemilla... no tengo experiencia en los timers de los pics, pero quiero que mi programa pueda estar evaluando una entrada analogica, donde estara constantemente analizando un valor, dado que si se lee que el valor subio o bajo un X valor, pase a otro proceso... sin embargo necesito que cada 5 minutos entre a una subrutina y el valor de referencia lo vuelva a tomar.

Dado que no tetngo nada de experiencia en estos timers, empiezo con un programa muy simple:

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Device 16F84
XTAL 4
 Dim cont As Word
 cont = 0
 OPTION_REG = %00000111
 INTCON = %00100000
 Symbol LED = PORTB.1
 Low LED
 On Interrupt GoTo My_Int   

Fin:
 High PORTB.2
 DelayMS 100
 Low PORTB.2
 DelayMS 100
 GoTo Fin
 
Disable                     
My_Int:
If cont >= 215 Then         
High LED                   
DelayMS 500
Low LED
cont=0
Else
 cont=cont+1
EndIf
 Resume                     
 Enable                   
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
   
Se supone que estoy usando el desbordamiento del timer, y cada vez que pasa entra My_Int y suma un punto a la variable cont... todo funciona bien,  pero por ejemplo, si yo le pido 215 puntos a la variable cont, me da aproximadamente 10 segundos, pero resulta que si cambio el valor del DelayMS 100, lo pongo a 300, los 10 segundos se pasan a 45 segundos...

Mi duda es: que estoy haciendo mal, ya que creo o entiendo (igual me equivoco), que la duracion de la interrupcion deberia ser igual sin importar las instrucciones que hay en el proceso, o quiere decir que para el timer un delayms de 100 dura lo mismo que si es de 300???

Espero me haya dado a entender, y agradeceria me ayudaran con este problema

Muchas gracias  :?