Autor Tema: inicio  (Leído 6634 veces)

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

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: inicio
« Respuesta #30 en: 16 de Septiembre de 2008, 13:29:35 »
Hola.

Si, amigo ese es el compilador para esa gama de PICs.

Saludos
El papel lo aguanta todo

Desconectado ncoliv

  • PIC16
  • ***
  • Mensajes: 130
Re: inicio
« Respuesta #31 en: 16 de Septiembre de 2008, 23:10:34 »
Gracias MLO
nos estamos leyendo
saludos

Desconectado ncoliv

  • PIC16
  • ***
  • Mensajes: 130
Re: inicio
« Respuesta #32 en: 18 de Septiembre de 2008, 21:35:47 »
Otra pregunta MLO que no hace referencia  a este post.
Coseguí este programa. Es del ds1307 y el f877 Muestra el tiempo (h,m,s) por un lcd. Lo que sucede que no tengo los conexionados ni la forma de ponerlo en hora. Me podrian dar una mano con el mismo e indicar algun vinculo, lo estuve viendo y no me dice nada a cerca de pulsadores ......
Muchas gracias.
PD. Ya seguiré con  el post original debido a que no termine con el tema.

Desconectado ncoliv

  • PIC16
  • ***
  • Mensajes: 130
Re: inicio
« Respuesta #33 en: 18 de Septiembre de 2008, 21:39:30 »
aqí va el programita:
////////////////////////////////////////////////////////////////////////////////
////////////ESTE PROGRAMA UTILZA EL CIRCUITO DS1307 PARA MOSTRAR LA ////////////
//////////HORA EN TIEMPO REAL A TRAVEs DE UNA LCD DE 2 POR 16 CARACTERES/////


#include <16F877A.h>                ///   libreria para el manejo del pic16f877a
#use delay(clock=8000000)          ///   declara  la frecuencia del cristal
#fuses HS,NOWDT,NOPUT,NOLVP,NOBROWNOUT,NOWRT,NOPROTECT
#include <ds1307.c>
#include <lcd.c>


#use fast_io(A)
#use fast_io(B)
#use fast_io(C)                     ///   con esta instruccion evitamos que
#use fast_io(D)                     ///   se este configurando cada vez que usamos
#use fast_io(E)                     ///   alguna instruccion de entrada o salida


#byte portc = 7                     /// se definen direcciones de memoria
#byte portd = 8

int sec;
int min;
int hrs;
int  day;
int  month;
int  yr;
int  dow;


////////////////////////////////////////////////////////////////////////////////
//////////////////////Comienzo de la funcion principal//////////////////////////
////////////////////////////////////////////////////////////////////////////////
void main()
{

   ds1307_init(0);                          ///se inicializa el ds1307
   
   set_tris_a(0xff);
   set_tris_d(0x00);
   set_tris_b(0x00);
   set_tris_c(0x04);
   set_tris_e(0x01);
   port_b_pullups(true);
 
 
  lcd_init();                               /// inicializamos lcd
 
 
 
  // Set date for -> 15 June 2005 Tuesday
  // Set time for -> 15:20:55 (9:49:00 am)
 
  ds1307_set_date_time(8,11,7,2,9,49,00);   /// se escribe en el displositivo
                                            /// el tiempo deseado
  while(1)
  {
 
    delay_ms(100);
   
  ds1307_get_date(day,month,yr,dow);        /// se obtiene la fecha 
  ds1307_get_time(hrs,min,sec);             /// se obtiene la hora
  lcd_gotoxy(1,2);
  printf(lcd_putc,"%02d:%02d:%02d          ",hrs,min,sec);   ///se despliegan los datos
 
  lcd_gotoxy(1,1);
  lcd_putc("WWW.ELHACKER.NET");
       
  }
}

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: inicio
« Respuesta #34 en: 18 de Septiembre de 2008, 21:50:21 »
Hola.

Lo que pasa con ese programa es que configuran el reloj por software con la funcion ds1307_set_date_time(8,11,7,2,9,49,00);. Si quieres modificar los valores a tu gusto, puedes colocar tu los pulsadores para variar los valores que cargaras en variables antes de colocar la funcion set_date_time().

Saludos
El papel lo aguanta todo

Desconectado ncoliv

  • PIC16
  • ***
  • Mensajes: 130
Re: inicio
« Respuesta #35 en: 18 de Septiembre de 2008, 22:40:32 »
tal vez es mucha la expliacion: como realizo el conexionado  de los  elementos, la comunicación I2C porque puerto se estaría haciendo.
Como configuraria el programa  para incrementar por pulsadores la h,m,s.
Saludos

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: inicio
« Respuesta #36 en: 18 de Septiembre de 2008, 22:57:55 »
Hola.

Te recomiendo que veas el datasheet del reloj ds1307 y del 16F877A. El protocolo I2C se realiza por dos cables unicamente SDA y SCL. El conexionado es sencillo cierto??? lo que debes tener en cuenta es las resistencias de pull up y ya.

Que como configurarias el programa? mhh ... la idea es que antes de usar la funcion set_date_time() configures las variables. Lees el estado de los pines a los cuales van conectados los pulsadore y cada que cambian de estado aumentas en uno la variable correspondiente. Debe haber un pulsador de inicio, para indicarle que la configuracion a terminado y que comienza ya a dar la hora por la LCD.

Creo que con eso tienes una idea para que lo comiences a hacer. Publica los avances y vamos corriegiendo las cosas en el camino.

Saludos
El papel lo aguanta todo

Desconectado ncoliv

  • PIC16
  • ***
  • Mensajes: 130
Re: inicio
« Respuesta #37 en: 21 de Septiembre de 2008, 22:15:01 »
Ok muchas gracias MLO, empezaré por ver en primer lugar la hora cdo se configura por software.
hasta otro post.
saludos

Desconectado ncoliv

  • PIC16
  • ***
  • Mensajes: 130
Re: inicio
« Respuesta #38 en: 27 de Septiembre de 2008, 23:12:35 »
De vuelta con las preguntas .....que puede estar pasando: cuando compilo el archivo que muestra el tiempo en un lcd  obtengo este resultado:
>>> Warning 203 "C:\ARCHIV~1\PICC\drivers\ds1307.c" Line 233(1,1): Condition always TRUE
>>> Warning 203 "rtc0.c" Line 58(1,1): Condition always TRUE
      Memory usage:   ROM=16%      RAM=25% - 30%
      0 Errors,  2 Warnings.
Loaded C:\rtc0\rtc0.cof.
BUILD SUCCEEDED: Sat Sep 27 22:39:02 2008

La linea 233 del ds 1307.c es:

  while(1){

 y la linea del 58 del rtc0.c es:

  {
muchas gracias.
saludos
 

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: inicio
« Respuesta #39 en: 28 de Septiembre de 2008, 12:35:34 »
Hola

Eso tiene que ver con la sentencia dentro del ciclo while(sentence), como hay un sentence=1, el compilador te avisa que la sentencia siempre se va a cumplir, es decir que tiene como valor true=verdadero=1.

Saludos.
El papel lo aguanta todo


 

anything