Autor Tema: Temporizador 12h  (Leído 4008 veces)

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

Desconectado 16F84A

  • PIC10
  • *
  • Mensajes: 13
Temporizador 12h
« en: 09 de Febrero de 2009, 17:08:32 »
Buenas!
He hecho un programa de un temporizador de 12 horas, esta parte funciona bien, pero me gustaria que en ciclos de 12 horas se encendiese y apagase una luz. Esto es, 12h encendido- 12h apagado- 12h encendido.....
La parte del programa que no me convence el la ultima subrutina, y me gustaria saber vuestra opinion y los fallos o mejoras que le podeis ver.

Gracias de antemano.

PD:Ya se que solo pongo el programa principal, pero las librerias que faltan funcionan a la perfeccion, de todas formas si os sirven de algo las pondre.

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: Temporizador 12h
« Respuesta #1 en: 09 de Febrero de 2009, 21:25:28 »
hola.16f84a.  yo una vez desarrolle un programa que manejaba tiempos para un reloj.y lo que hice fue utilizar un cristal de cuarzo de 4.192304 Mhz
y configurando uno de los contadores,logre que se produjera una interrupcion cada 0.5 segundos.de esta forma se tiene un largo tiempo dentro de la interrupcion para realizar otro contador por registros.y con 86400 procesos de interrupcion,tendrias las 12H.ya solo tienes que realizar este contador y que cuando llege a este valor se active el led.
« Última modificación: 10 de Febrero de 2009, 19:15:30 por groundman »
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado 16F84A

  • PIC10
  • *
  • Mensajes: 13
Re: Temporizador 12h
« Respuesta #2 en: 14 de Febrero de 2009, 10:40:19 »
Bueno ya tengo el programa hecho, era un fallo tonto....una instruccion mal puesta.
Pero como casi siempre, termina un problema pero empieza otro: este programa realiza interrupciones por desbordamiento del TIMER0, tengo un sensor de temperatura que me gustaria acoplarle al programa, el caso es que este sensor es leido tambien por interrupciones del TIMER0 y no se si al juntar los dos programas podra funcionar.

A ver si alguien me puede ayudar.
Gracias.

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Temporizador 12h
« Respuesta #3 en: 14 de Febrero de 2009, 10:45:35 »
En la rutina de la interrupcion actualiza dos contadores diferentes, uno para el control de tiempo y otro para llevar un registro de cuando leer el sensor.
Suponte que interrumpas cada 1/2 segundo, actualizas la cuenta hasta llegar a cuatro, mientras en el programa principal (fuera de la interrupcion) revisas constantemente cuando llega a 4 tu conteo, entonces disparas la lectura del sensor y pones a cero la cuenta.
Esto hace que tu sensor es leido cada 2 segundos, se entiende?? :mrgreen:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado 16F84A

  • PIC10
  • *
  • Mensajes: 13
Re: Temporizador 12h
« Respuesta #4 en: 14 de Febrero de 2009, 11:09:51 »
Gracias por responder tan rapido.
La verdad no entiendo muy bien donde poner los contadores.
El sensor se lee cada 2s pero hace una interrupcion cada 50ms, al igual que el temporizador.
Aqui subo los dos programas por si a alguien le interesa.

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Temporizador 12h
« Respuesta #5 en: 14 de Febrero de 2009, 11:38:28 »
Mas o menos es asi lo que digo:

<Rutina interrupcion>
Si se produjo interrupcion de Tmr0 >>>  incf contador timer
                                                            incf contador sensor
preparo nueva interrupcion y salgo

<Rutina principal>
si contador sensor es mayor a 40 (para 50 mseg)>>>> contador sensor = 0
                                                                                 call leer sensor.
otras tareas de el programa principal
end


No mire realmente tus programas, pero esto te da una idea...
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado 16F84A

  • PIC10
  • *
  • Mensajes: 13
Re: Temporizador 12h
« Respuesta #6 en: 15 de Febrero de 2009, 10:03:18 »
Grazias MGLSOFT.

El programa hace interrupciones cada 50mseg para inicializar el reloj , entonces porque poner un contador para el reloj?
De esta forma no estaria bien?

ServicioInterrupcion
   btfsc   INTCON,T0IF            ; Si es una interrupción procedente del
   incf   Contado; Contador del temporizador
   ;call   Reloj               ; desbordamiento del Timer 0, actualiza el reloj.
   
FinInterrupcion                  ; correspondiente.
   bcf      INTCON,T0IF
   retfie


Desconectado 16F84A

  • PIC10
  • *
  • Mensajes: 13
Re: Temporizador 12h
« Respuesta #7 en: 15 de Febrero de 2009, 10:16:10 »
Perdon, esto era lo que queria poner:

Gracias MGLSOFT.

El programa del temporizador hace interrupciones cada 50mseg, entonces, porque poner un contador tambien al temporizador? no estaria bien poniendoselo solo al sensor?

ServicioInterrupcion
   btfsc   INTCON,T0IF                      ; Si es una interrupción procedente del TIMER0
                goto          TemporizaYsensor
   goto          FinInterrupcion

TemporizaYsensor
                incf           Contador1            ; Contador del sensor
   call   Reloj            ; desbordamiento del Timer 0, actualiza el reloj.
   
FinInterrupcion               ; correspondiente.
   bcf      INTCON,T0IF
   retfie



Y luego en la rutina principal comparar el contador del sensor.


Desconectado 16F84A

  • PIC10
  • *
  • Mensajes: 13
Re: Temporizador 12h
« Respuesta #8 en: 15 de Febrero de 2009, 13:28:08 »
Algo tengo que estar haciendo mal......
Al compilarlo me da unos cuantos errores:

Clean: Deleting intermediary and output files.
Clean: Done.
Executing: "D:\MPASM Suite\MPASMWIN.exe" /q /p18F452 "PROYECTO3.asm" /l"PROYECTO3.lst" /e"PROYECTO3.err" /d__DEBUG=1
Warning[215] F:\SOLUCIONES PROGRAMAS\PROYECTO3.ASM 4 : Processor superseded by command line.  Verify processor symbol.
Message[301] D:\MPASM SUITE\P16F84A.INC 35 : MESSAGE: (Processor-header file mismatch.  Verify selected processor.)
Error[126]   D:\MPASM SUITE\P16F84A.INC 114 : Argument out of range (must be greater than or equal to 255)
Error[126]   D:\MPASM SUITE\P16F84A.INC 115 : Argument out of range (__MAXRAM must be used first)
Error[126]   D:\MPASM SUITE\P16F84A.INC 115 : Argument out of range (__MAXRAM must be used first)
Error[126]   D:\MPASM SUITE\P16F84A.INC 115 : Argument out of range (__MAXRAM must be used first)
Warning[230] F:\SOLUCIONES PROGRAMAS\PROYECTO3.ASM 6 : __CONFIG has been deprecated for PIC18 devices.  Use directive CONFIG.
Error[126]   F:\SOLUCIONES PROGRAMAS\PROYECTO3.ASM 6 : Argument out of range (not a valid config register address)
Warning[202] F:\SOLUCIONES PROGRAMAS\PROYECTO3.ASM 212 : Argument out of range.  Least significant bits used.
Warning[207] F:\SOLUCIONES PROGRAMAS\BUS_I2C.INC 105 : Found label after column 1. (rlf)
Error[122]   F:\SOLUCIONES PROGRAMAS\BUS_I2C.INC 105 : Illegal opcode (I2C_Dato)
Warning[207] F:\SOLUCIONES PROGRAMAS\BUS_I2C.INC 145 : Found label after column 1. (rlf)
Error[122]   F:\SOLUCIONES PROGRAMAS\BUS_I2C.INC 145 : Illegal opcode (I2C_Dato)
Error[113]   F:\SOLUCIONES PROGRAMAS\DS1624.INC 52 : Symbol not previously defined (DS1624_FinTablaRedondeo)
Halting build on first failure as requested.

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Temporizador 12h
« Respuesta #9 en: 15 de Febrero de 2009, 22:23:07 »
Habria que ver el programa completo, pero es mas seguro que falte el archivo header del PIC o no encuentre la ruta del mismo, y el resto de los errores tenga que ver con eso...
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado 16F84A

  • PIC10
  • *
  • Mensajes: 13
Re: Temporizador 12h
« Respuesta #10 en: 16 de Febrero de 2009, 10:35:42 »
Ya esta solucionado, pero como siempre.... ahora compila bien pero en programa no funciona del todo bien, por favor a ver si alguien ve en el programa el fallo o sabe porque puede fallar.

Muchas gracias MGLSOFT por toda la ayuda.

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Temporizador 12h
« Respuesta #11 en: 16 de Febrero de 2009, 12:08:43 »
Creo que cometes un error, yo encuentro una sola llamada a la rutina del termometro, antes de entrar al loop principal.
Creo que deberias hacer esa llamada y control dentro de ese loop. :mrgreen: :mrgreen:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado miguel valdivia

  • PIC10
  • *
  • Mensajes: 46
Re: Temporizador 12h
« Respuesta #12 en: 15 de Diciembre de 2009, 23:00:35 »
probaste checar los registros en mplab con watch y simularlo  :-/ :-/