Autor Tema: Real Time Clock o el DS1307 desatado  (Leído 230380 veces)

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

Desconectado pajaro

  • PIC24H
  • ******
  • Mensajes: 1121
Re: Real Time Clock o el DS1307 desatado
« Respuesta #75 en: 31 de Marzo de 2009, 10:36:52 »
Hola amigo RedPic

ya se que este post tuyo es un poco viejo, como el vino, viejo.... pero bueno, en el post numero 1 no logro bajar los enlaces y no veo las fotos, solo se ve el aspa.

Me puedes mirar eso, me quede con las ganas.

Un saludo

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5552
    • Picmania by Redraven
Re: Real Time Clock o el DS1307 desatado
« Respuesta #76 en: 31 de Marzo de 2009, 17:26:28 »
Bueno, pájaro, después de un para de "Bad Gateay" he logrado actualizar el post inicial. Dale un vistazo y dime si me he dejado algo por el camino.
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado pajaro

  • PIC24H
  • ******
  • Mensajes: 1121
Re: Real Time Clock o el DS1307 desatado
« Respuesta #77 en: 31 de Marzo de 2009, 22:19:10 »
hola Amigo REdPic
los enlaces de las fotos se ven muy bien, pero el del RRBoard1 sufre del mismo pie, te cambiaste de ftp u algo..

por cierto en la web hay algun manual visual (con fotos y eso) de como se procede con el ccs c.

me mire este enlace http://www.aquihayapuntes.com/progranacion-pic-en-c.html
 pero ...no hay más..


un saludo..

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5552
    • Picmania by Redraven
Re: Real Time Clock o el DS1307 desatado
« Respuesta #78 en: 07 de Abril de 2009, 17:54:45 »
Pajaro:

El Dow es Day of Week, día de la semana, y puede valer 0:Lunes ... 6:Domingo

Yo lo uso con ...

Código: C#
  1. char days_of_week[7][11]={"Lunes\0","Martes\0","Miércoles\0","Jueves\0","Viernes\0","Sábado.\0","Domingo\0"};
  2.  
  3.  
  4. void ds1307_get_day_of_week(char* ptr){
  5.  
  6.   byte lday;
  7.   byte lmonth;
  8.   byte lyr;
  9.   byte ldow;
  10.  
  11.   ds1307_get_date(lday,lmonth,lyr,ldow);
  12.  
  13.   sprintf(ptr,"%s",days_of_week[ldow]);
  14. }


« Última modificación: 07 de Abril de 2009, 18:09:50 por RedPic »
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado pajaro

  • PIC24H
  • ******
  • Mensajes: 1121
Re: Real Time Clock o el DS1307 desatado
« Respuesta #79 en: 08 de Abril de 2009, 11:01:49 »
hola amigo REdpic

En primer lugar, gracias por la explicación, no cai en la forma escrita, que podia ser en ingles, en mi libro estaba en castellano por más vueltas que le di no le veia de esa forma.

otra pregunta.

La definicion del tipo de datos de --> char days_of_week[7][11]={",..." } ;
es una matriz de 7x 11 o es un vector de 7 elementos, cuyos elemetos son vectores.

delante del "igual" parece la deficion de una matriz , pero detras del "igual" parece la definicion de un vector de cadenas, o de vectores.
el dato es de tipo char asi que  apunta a ser vertores, además terminan con el caracter terminador de un vector "\0"

Puedes sacarme de dudas.

Un Saludo.



Desconectado nutriax

  • PIC10
  • *
  • Mensajes: 42
Re: Real Time Clock o el DS1307 desatado
« Respuesta #80 en: 08 de Abril de 2009, 14:40:54 »
hola!!! les comento que yo tambien estoy intentando con un ds1307, y como no podia ser, con la libreria del amigo diego! con el ds1307 va todo de pelos, pero con el lcd voy mal y no se porque!
posteo este mensaje aca porque el proyecto que quiero hacer es mas o menos como el de palitroquez, paso a describir el problema.
cuando pongo que me ponga el formato %02u (para que me complete con 0 si es menor a 10) y el numero a mostrar es mayor a 10 me muestra el primer numero y el segundo no! y no se porque, al igual le puse que muestre un simple string apenas inicia el lcd "El LCD funciona..." y no me muestra la l de El, aclaro que esto es en proteus, tambien no me anda el \n ya que no me imprime en el segundo renglon como deberia y eso que tengo la libreria original del ccs y con la direccion 0x40 de la segunda linea, por ultimo probe otro programita que tenia andando con el LCD y anda bien, por lo que no me queda mas que sospechar del codigo.
espero que me puedan echar una mano con esta duda, aca dejo el archivo del codigo fuente y el del proteus para que me puedan ayudar (porque la verdad me parece muy ilogico el error).
les dejo las imagenes.
PD.: le puse tambien 2 lcd porque queria probar con el de 2x16 y el de 2x20 (porque no sabia que mas probar).  :lol:


Desconectado nutriax

  • PIC10
  • *
  • Mensajes: 42
Re: Real Time Clock o el DS1307 desatado
« Respuesta #81 en: 09 de Abril de 2009, 21:26:07 »
Buneo, llevo mucho como 1 dia tratando de solucionar este problema, y lo he logrado!!!!   :lol: :-/ :-/
el problema lo hace (eso si no se si proteus en la simulacion o en realidad tambien ocurre lo mismo, ya despues probare y les contare) debido a que tengo un clock de 20mhz y si le bajo el valor del cristal, por logico en el soft como en la configuracion del micro de proteus! anda de marabillas!!!. felizes pascuas!!!!   :-/ :-/ 8)

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: Real Time Clock o el DS1307 desatado
« Respuesta #82 en: 10 de Abril de 2009, 12:17:01 »
que bueno que lo hayas solucionado.

y tu micro debería funcionar a 20 MHz, el problema que pasa a esa frecuencia es la estabilidad de la fuente, debes colocar condensadores entre VDD y VSS de 100nf y de 10uF y tu circuito tiene que funcionar a 20MHz.

un saludo, igualmente feliz pascua!
.

Desconectado turcio1708

  • PIC10
  • *
  • Mensajes: 3
Re: Real Time Clock o el DS1307 desatado
« Respuesta #83 en: 02 de Mayo de 2009, 11:57:33 »
Hola amigos, soy nuevo en el foro, y les tengo que decir la verdad, me he registrado porque estoy al horno!!!!
Necesitaría si me pueden ayudar a juntar u 16f877 con un ds1307 y una 24lc256.
El proyecto consiste en tomar valores analógicos por el A/D del pic, y guardarlos en la eeprom con la fecha que me da el ds1307.
Desde ya muchas gracias por su tiempo.
Turcio

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: Real Time Clock o el DS1307 desatado
« Respuesta #84 en: 02 de Mayo de 2009, 23:44:19 »

Vaya oana , de menos decir que tienes armado , ya probaste cada dispositivo por su cuenta??

ya los controlas bien?

...mmm

Mas especifico , juntar en el esquema?

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: Real Time Clock o el DS1307 desatado
« Respuesta #85 en: 02 de Mayo de 2009, 23:48:22 »

Una consulta compas.

He realizado pruebas con el ds1307 , con la libreria del pana Redpic. de 10 y sin problemas.


Ahora hago mis pruebas pero me doy cuenta que al dar un reset al pic  esto me setea los segundos a 00.

Si mantengo presionado el boton reset me mantiene los segundos, como si se pausara , pero la salida sigue parpadeando a 1 Hz.

Las horas y minutos las respeta, solo cambia los segundos a 00


A alguien mas le sucede esto??


Por cierto , no me había dado cuenta hasta el otro dia que le preste mas atención.

Desconectado turcio1708

  • PIC10
  • *
  • Mensajes: 3
Re: Real Time Clock o el DS1307 desatado
« Respuesta #86 en: 04 de Mayo de 2009, 09:05:22 »
Hola, yo de nuevo, como bien me hizo notar Akenafab, no di mayores datos de mi proyecto.
Tengo armada una plataforma la cual posee un 16f877, un ds1307 y una 24lc256.
Por separado no me funcionan mis programas desarrollados en el ccs,  comienzo a tener errores como por ejemplo:
Cuando compilo el siguiente programa:

#define usopic16F877

#include <16F877.h>
#device ADC=10
#FUSES XT,NOWDT

#use delay(clock=4000000)

//#use rs232(baud=9600, xmit=PIN_C6,rcv=PIN_C7,bits=8,parity=N)

//#USE fast_IO (A)
//#USE fast_IO (B)
//#USE standard_IO (C)


#include <ds1307_inta.h>

void main()
{
  BYTE sec;
  BYTE min;
  BYTE hrs;
  BYTE day;
  BYTE month;
  BYTE yr;
  BYTE dow;

  ds1307_init();

  // Set date for -> 15 June 2005 Tuesday
  // Set time for -> 15:20:55
  ds1307_set_date_time(15,6,5,2,15,20,55);

  while(1)
  {
    delay_ms(1000);

    ds1307_get_date(day,month,yr,dow);
    ds1307_get_time(hrs,min,sec);

    printf("\f\%02d/\%02d/\%02d\r\n",day,month,yr);
    printf("\%02d:\%02d:\%02d", hrs,min,sec);
  }
}

Me lleva al header 16f877.h y me dice: Can not change device type this far into the code
No tengo ni idea que es lo que me quiere indicar, por lo que estoy extraviado.
Les agradecería si me pueden tirar una soga con esto.
Desde ya muchas gracias.
Turcio

Desconectado turcio1708

  • PIC10
  • *
  • Mensajes: 3
Re: Real Time Clock o el DS1307 desatado
« Respuesta #87 en: 04 de Mayo de 2009, 15:22:15 »
Ahi solucioné el inconveniente antes mencionado.
Ahora mi duda es:
Como hago para setear la fecha y hora inicial en el código del 1307 del maestro redpic??
No se si tengo que directamente poner los numeros en la funcion
ds1307_set_date_time(BYTE day, BYTE mth, BYTE year, BYTE dow, BYTE hr, BYTE min, BYTE sec)
Es asi??
o sea tendria que poner directamente:
ds1307_set_date_time(4, 5, 2009, lunes, 15, 21, 0)
Espero su respuesta.
Gracias por su tiempo!!!
Turcio

Desconectado pajaro

  • PIC24H
  • ******
  • Mensajes: 1121
Re: Real Time Clock o el DS1307 desatado
« Respuesta #88 en: 18 de Mayo de 2009, 07:20:55 »
Hola AKENAFAB, pues si, confirme lo que había dicho con la practica, y en efecto lo que dice la hoja de datos se cumple una vez más :D

yo para saber el string del dia, solamente cojo el dato de día de la semana que guarda el reloj y según el valor que tenga lo muestro de un const char [][], el valor de dia de la semana del rtc -1 de índice y visualizo todo bien, y ya no tengo problemas en la transición de domingo a lunes, va todo bien :mrgreen:


Hola amigo

puedes poner el cachito de codigo donde haces lo del dia de la semana.
Estoy teniendo problemas,  no me cambia de dia de la semana, ni del mes del año.

Un saludo y mil gracias.

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: Real Time Clock o el DS1307 desatado
« Respuesta #89 en: 18 de Mayo de 2009, 11:53:29 »
Hola pájaro

mmm ok, primeramente decirte que tengo una función, que ejecuta la función de la librería:

void get_fecha(void){
   ds1307_get_date(fecha.dia,fecha.mes,fecha.anio,fecha.dia_s);
}

como puedes ver la fecha la estoy guardando en una estructura llamada fecha, donde sus variables corresponden al día, mes, año y día de la semana que se leerán del RTC.

Entonces en fecha.dia_s se guarda el día de la semana en números del 1 al 7 como dice la hoja de datos, donde el 1 corresponde al lunes, entonces, tengo el char definido con los nombres en la librería:

const char days_of_week[7][5]={"Lun\0","Mar\0","Mie\0","Jue\0","Vie\0","Sab\0","Dom\0"};
Los edite y coloque su nombre a solo 3 letras, porque solo necesitaba ello.

y por ejemplo para mostrarlo en un lcd hago:

ind_dow=fecha.dia_s-1;  // porque el RTC varia de 1 a 7 y el arreglo varia de 0 a 6
printf(lcd_putc,"%s %02u/%02u/%02u",days_of_week[ind_dow],fecha.dia,fecha.mes,fecha.anio);

y eso es lo que hice :mrgreen:

espero sirva, un saludo
.


 

anything