Autor Tema: Almacenar dato con hora y fecha con PIC16F877  (Leído 4179 veces)

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

Desconectado gabotronic

  • PIC12
  • **
  • Mensajes: 57
Almacenar dato con hora y fecha con PIC16F877
« en: 27 de Octubre de 2004, 15:38:00 »
Amigos:
¿Como puedo almacenar un dato (obtenido de un puerto del pic),con la hora y fecha que fue almacenado, para despues ser enviado al PC, previa orden de este?

¿Con un DS1302 y utilizando la memoria del PIC es posible? o ¿necesariamente se utiliza una memoria externa?

Si alguien ha hecho algo por el estilo, me puede dar una mano?

Saludos.

Desconectado fenix_jn

  • PIC18
  • ****
  • Mensajes: 418
RE: Almacenar dato con hora y fecha con PIC16F877
« Respuesta #1 en: 27 de Octubre de 2004, 21:39:00 »
Bueno el ds1302 es un reloj de tiempo real, si necesitas saber la hora exacta con la fecha incluida este es tu chip. el ds1302 puede mantener la fecha y la hora pero con el inconveniente de q requiere q tenga energia en todo momento, aunq posee su propio cargador, pero igual necesitaras una bateria para q no se borren los datos (si usas la memoria del chip), puedes usar el 16F84 q tiene su memoria eeprom interna si solo vas a trabajar con envio/recepcion RS232 y el ds1302 (y si deseas crear las rutinas tu mismo), pero debes poner un circuito especial que t detecte cuando la tension caiga por debajo de niveles operativos, en ese momento lo q haras sera leer la fecha y datos actuales en el chip (ds1302) y enviarlos a escribir en la eeprom del 16f84, si el chip no tiene bateria y recargas los ultimos datos q guardaste en la eeprom deberas entonces buscar la forma de resincronizar el reloj del ds1302, conclusion: usa el ds1302 con bateria, asi t ahorras lo de la memoria y la puedes utilizar en otras cosas.

El 16f877 (una version mayor del 16f874) tiene el protocolo RS232 precargado asi q puedes hacer que el chip haga todo el trabajo y t ahorras codigo creando rutinas para el RS232, no recuerdo q protocolo usa el ds1302 si el I2C, SPI o ninguno de ellos (tendre q revisar la hoja de datos), si usa alguna de los protocolos anteriores esos tb estan precargados en el 877 menos codigo por hacer.

Si kieres ahorrar dinero usa el 16f84 pero deberas crear todas las rutinas de comunicacion, si kieres ahorrar codigo usa el 16f877 (o mejor el 16f874 la unica diferencia es el tamaño de la RAM (192), memoria flash (4K), eeprom (128) y 5 canales analogicos).

Desconectado gabotronic

  • PIC12
  • **
  • Mensajes: 57
RE: Almacenar dato con hora y fecha con PIC16F877
« Respuesta #2 en: 28 de Octubre de 2004, 16:38:00 »
Gracias fenix.

Pero estoy, en parte, en busca justamente de eso. Del protocolo de comunicaciones y el conexionado pic-reloj-memoria.

Estoy trabajando con el PIC16F877. Pero como la memoria no es muy grande necesitare una externa, o mejor,  ¿puedo utilizar la memoria flash como almacen de datos?


Saludos.

Desconectado fenix_jn

  • PIC18
  • ****
  • Mensajes: 418
RE: Almacenar dato con hora y fecha con PIC16F877
« Respuesta #3 en: 28 de Octubre de 2004, 20:52:00 »
No hay forma de guardar datos en el area flash de la memoria del PIC de forma que funcione como memoria de intercambio, el problema esta en q la memoria del PIC esta diseñada para ser estatica (relativamente hablando), es decir, los cambios sobre el contenido de ella son bastante pocos a lo largo de su vida util, no es lo mismo con la memoria RAM del PIC, en ella los cambios son casi el 98% de su vida util (asumamos que el 2% queda en instrucciones SLEEP y en las veces que el pic esta apagado), si intentas usar la memoria flash del PIC como "memoria" para una aplicacion externa terminaras perdiendo el pic creando fatiga en la memoria.

Si deseas tanta memoria porq no recurres a una memoria serial? la serie 24LCxx ofrece alternativas de hasta 16K de memoria en sistemas de 8 bits y la serie 24LCxxB la misma memoria en sistemas de 16 bits, ellas usan el protocolo I2C lo cual t seria bastante util si vas a usar el 877 y puedes manejar velocidades de reloj de hasta 400KHz. en transferencias, asi dejas haciendo al PIC lo q le corresponde y a la memoria lo q lo toca: Al Cesar lo que es del Cesar, con esto tu proyecto (con lo descrito hasta aki o al menos hasta lo q se) estaria usando 3 chips: ds1302, 16F877 y 24LCxx(B). Ademas estas memorias son EEPROM asi q si t acaba la energia no tndras incovenientes con la perdida de datos y aparte tendras la capacidad que deseas (hasta 16K).