TODOPIC

Microcontroladores PIC => * PROYECTOS * => Mensaje iniciado por: dcsalg en 15 de Mayo de 2017, 11:02:51

Título: PIC18F46K22 y DS1307 Inconveniente
Publicado por: dcsalg en 15 de Mayo de 2017, 11:02:51
Hola, Estoy probando en Proteus con un pic18f46k22 que seria el que voy a utilizar despues con un reloj DS1307 y un display LCD 4x20, el problema que no puedo creer, es que no puedo hacer funcionar el reloj. El display lo voy a utilizar con un PCF8574x mi intencion es utilizar un solo I2C tanto para el DS1307 como para el display, pero no funcionael reloj me muestra en el display 00:00:00   00/00/00  pense que es porque pasaba algo por conectarlo en el mismo I2C por loo tantoi use otro I2C para el display pero pasa exactamente lo mismo. Repito que solo quiero utilizar una sola I2C pero nose porque no me funciona el reloj ? no le encuentro el error el programa CCS que es el que utilizo no dice error y el proteus menos, porque no me funciona voy a adjuntar dos archivos ZIP uno delk proteus y otro del programa en C con CCS , no le encuentro la falla donde esta mal escrito me ayudarian? muchas Gracias!

Código: [Seleccionar]
#include <18F46K22.h>
#device ADC=10
#device  *=16


#fuses NOWDT

#use delay(internal=8MHz)
#use STANDARD_IO( C )
#use STANDARD_IO( B )

#use i2c(Master, I2C1,slow, STREAM=I2COM1) //,sda=SDA1,scl=SCL1)
#use i2c(Master,FAST, I2C2, STREAM=I2COM2) //,sda=SDA1,scl=SCL1)



#ZERO_RAM

unsigned int fh=0;

/******************************* MODULO LCD I2C ***************************************/
//#use i2c(Master, Fast, I2C1, force_hw) 
#define clear_lcd       (printf(lcd_putc_i2c,"\f"))       //MACRO BORRA LCD
#define send_lcd(dat)   (printf(lcd_putc_i2c,dat))    //MACRO ESCRIBE LCD
#define PCF8574A                 // tipo de modulo que se utiliza           
#define A2_A1_A0 0B111           // direccion del modulo (A2 A1 A0) PCF8574A/PCF8574.
#define LCD20X4                  // tipo de display a utilizar o  LCD 16x2
#include <lcd_i2c_pcf8574_DCS.c>
/**************************************************************************************/

#include <DS1307_dcs.c>


#INT_TIMER0
void  TIMER0_isr(void)
{
   fh++;
   set_timer0(6);
}

void main()
{
   
   ds1307_init(DS1307_OUT_ENABLED | DS1307_OUT_1_HZ);
   
   ds1307_set_date_time(15,03,17,1,20,00,50);   
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_16); //|RTCC_8_BIT);      //64,0 us overflow
   set_timer0(6);
     
   enable_interrupts(INT_TIMER0);
   enable_interrupts(GLOBAL);
   
   lcd_init_i2c();   //Inicializa lcd i2c
   
   while(TRUE)
   {
     
      if(fh>4) {
         disable_interrupts(INT_TIMER0);
         fh=0;
         ds1307_get_date(day,month,yr,dow);
        ds1307_get_time(hrs,min,sec);
        lcd_gotoxy_i2c(1,1);
        printf(lcd_putc_i2c,"%02u/%02u/%02u       %02u:%02u",day,month,yr,hrs,min);
         enable_interrupts(INT_TIMER0);
      }
     
   }

}


 - Tienes que ingresar para ver archivos adjuntos -
 - Tienes que ingresar para ver archivos adjuntos -