Autor Tema: 8051 DS1307 Mikro C  (Leído 2203 veces)

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

Desconectado adriariel057

  • PIC10
  • *
  • Mensajes: 4
8051 DS1307 Mikro C
« en: 11 de Junio de 2014, 08:48:35 »
Hola a todos!!! , les hago una consulta pero primero les comento un poco como es la historia. Arranque programando en la secundaria un AT89S52 mega conocido en el compilador Keil en C. El programa no trae librerias de nada entonces como monito pele las hojas de datos del DS1307 y cree mis propias librerias I2C. Hice lo mismo con las librerias del LCD 16X2. Mi problema surgio cuando cree mi programa para mostrar en pantalla lo tipico fecha y hora. Utilizando el sincronismo de 1Hz del DS1307 para tomar datos y muestrear. El proceso seria:

-Espero a que sea 1 el bit 7 del DS1307
-Tomo datos
-Muestro datos
Vuelvo...

Los procesos de "Tomo datos" + "Muestro datos" Tardaban mas de 1 Segundo. (Utilizo un cristal de 12 mhz) Por ende el muestreo no era preciso y los segundos saltaban de 1-2-3-4-6 muy aleatoriamente. Para solucionar esto, hice que mi programa "lea" los datos del DS correspondientes a la fecha cuando la hora esta en 23:59:59 y asi logre sacar un pedaso de programa que el micro no recorria y muestreaba bien los segundos. Pero me quede caliente porque si bien el 8051 no es un Intel i7 no deberia tener esta lentitud abismal. Aparte a mi proyecto tenia pensado agregarle la toma de temperatura a un LM35 y si agrego eso ya volveria a funcionar mal.

Buscando otros compiladores en internet me tope con el MicroC Pro for 8051, me descargue la demo y me puse a laburar con el programa ejemplo que usa librerias de I2C y del LCD predeterminadas que son macanudas pero el programa no funciona.

El programa es exactamente este: http://www.mikroe.com/mikroc/8051/libraries/ y Software I²C Library

La falla es la siguiente:

Muestrea 1 pantalla bien, con los valores correctos
Muestrea Los valores mal pero bien los simbolos y texto
Vuelve a mostrar bien y asi.

Por ejemplo los segundos hace asi: 00 57 01 57 03 57 04 57 06
Probe solo dejar los segundos en el probrama y muestrea como indique recien.

Cambia cada 1 segundo infinitamente

Que podra estar pasando? Me mate revisando y no hay forma!!!!

Gracias!!


 

anything