Programación Específica > Microcontroladores
Ayuda Reloj 16f877
gonza2004:
Hola al foro,
Estoy realizando un proyecto con el PIC 16F877 basado en una estación domótica, que implementa diversas funciones tales como control de calefacción del hogar, control de temperatura, sensor de humos, y conexión vía modem para realizar una llamada telefónica en caso de intrusión. El proyecto se divide en módulos, el problema me surgió cuando tuve que desarrollar el módulo para la gestión del reloj en tiempo real. Este está formado basicamente por dos rutinas, una urgente, y una menos urgente. La rutina urgente esta mapeada como interrupción, y se ejecuta con cada interrupción de 1mseg por timer0. En esta se incrementa un contador de mseg y cuando este llega a 60000 (ahi esta el problema, que no se como comparar una variable con 60000!!!) es decir, un minuto, activa un flag que será usado en la rutina principal para incrementar los minutos y las horas (esta es la parte no urgente, en el lazo principal). No sé si se abrá entendido algo, si es así, les pido que me ayuden con el tema de la comparación con un valor tan alto.
Bueno, otra cosa, si alguien me dice que por qué no aumento al máximo el prescaler, le diré que en ese caso tendría que comparar con 923, ya que el máximo valor del prescaler es de 65mseg.
Otro problema que también se me plantea es cómo mostrar esto por el LCD. El programa lleva una subrutina aparte en el lazo principal que se encarga de mostrar por pantalla lo que le llega en base a una máquina de estados. Ahora bien, si a esta le paso dos registros, uno con las horas (0-24) y otro con los minutos (0-60), como puedo mostrar estos valores por el lcd (las rutinas de mostrar las tengo), si los tengo en dos registros de 8 bits cada uno?
Muchísimas gracias de antemano, aceptaré cualquier sugerencia incluso si supone dar un cambio de 180º a la realización del reloj.
Gonzalo :blink:
Setha:
Para la gestión del tiempo real te sugiero utilizar un circuito integrado como el DS1307 que te facilita mucho el trabajo. Este chip proporciona directamente los segundos, minutos, horas, dia de la semana, dia del mes, mes y año, además, necesita muy pocos componentes externos pero trabaja en bus I2C.
Tengo un CDROM de un libro con el programa del reloj digital completo con representación en LCD con DS1307 y un PIC16F84. Si te viene bien te lo paso.
Saludos.
Setha.
lmarte:
Hola, estoy de acuerdo, utiliza el DS1307, no es muy costoso es pequeño y con las rutinas es fácil de usar, además te ofrece la gran ventaja de que mantiene la información aún si pierdes la energía por cualquier motivo.
En pocas palabras, el consejo de setha...muy bueno :smartass:
lmarte
rAm0n23:
hola yo me encuentro realizando un reloj de tiempo real pero con otro lenguaje recien estoy empezando con assembler
me gustaria si me dicen como se programa el ds1307 porque por todas las paginas que anduve lo recomiendan para el reloj de tiempo real.
mi correo soft_mon@hotmail.com
reptil:
yo una rutina para el reloj en tiempo real en ensamblador para el 80c51. se les sirve de algo... al igual que rutinas para conectar el lcd al mismo micro si les sirve un correo a ivan.galicia@gmail.com
Navegación
[#] Página Siguiente
Ir a la versión completa