Autor Tema: Pic18f4550 reloj propeller con ds1307  (Leído 3643 veces)

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

Desconectado ZAZA

  • PIC10
  • *
  • Mensajes: 7
Pic18f4550 reloj propeller con ds1307
« en: 02 de Mayo de 2011, 01:13:01 »
Hola, soy nuevo en esto! :D espero q me puedan ayudar estoy haciendo un reloj propeller,el cual consiste en una tira de leds giratorios que apagando y prendiendo crean el efecto visual de un reloj, y estoy usando un ds1307 y por lo tanto, la comunicacion I2C para guardar ahi la hora. Mi codificacion es la siguiente, me base en el manual y en la hoja de datos para sacrlo pero no funciona, espero q me puedan ayudar :)

#include <p18f4550.h>
#include <i2c.h>
#define RTC_SDA  PIN_B0
#define RTC_SCL  PIN_B1

#pragma config PLLDIV = 1         // No prescale (4 MHz oscillator input drives PLL directly)
#pragma config CPUDIV = OSC1_PLL2   // [OSC1/OSC2 Src: /1][96 MHz PLL Src: /2]
#pragma config USBDIV = 1         // USB clock source comes directly from the primary oscillator block with no postscale
#pragma config FOSC = XT_XT         // HS oscillator, HS used by USB
#pragma config FCMEN = OFF         // Fail-Safe Clock Monitor disabled
#pragma config IESO = OFF         // Oscillator Switchover mode disabled
#pragma config PWRT = OFF         // PWRT disabled
#pragma config BOR = OFF         // Brown-out Reset disabled in hardware and software
#pragma config VREGEN = OFF         // USB voltage regulator disabled
#pragma config WDT = OFF         // HW Disabled - SW Controlled
#pragma config MCLRE = ON         // MCLR pin enabled; RE3 input pin disabled
#pragma config LPT1OSC = OFF      // Timer1 configured for higher power operation
#pragma config PBADEN = OFF         // PORTB<4:0> pins are configured as digital I/O on Reset
#pragma config CCP2MX = ON         // CCP2 input/output is multiplexed with RC1
#pragma config STVREN = ON         // Stack full/underflow will cause Reset
#pragma config LVP = OFF         // Single-Supply ICSP disabled
#pragma config ICPRT = OFF         // ICPORT disabled
#pragma config XINST = OFF         // Instruction set extension and Indexed Addressing mode disabled (Legacy mode)
#pragma config DEBUG = OFF         // Background debugger disabled, RB6 and RB7 configured as general purpose I/O pins
   // Data and code memory without protection

unsigned char SEG,MIN,HRS,DAY,DIA,MES,ANO,SEGUNDOS;
int BAN=1;


void main(void)
{
   //CONFIGURAR SSPCON1
   SSPCON1 = 0X00;
   SSPCON1bits.SSPEN = 1;
   
   
   // CONFIGURAR BRG A velocidad de 100 KHZ con un cristal de 4MHZ
    SPBRG = 0x027;

   //CONFIGURACION ADCON1 TODOS SALIDAS DIGITALES
   ADCON1=0x0f;
   
   //CONFIGURACION TRISB
   TRISB= 0x03;
    TRISD=0x00;
    PORTD=0B00000000;
   SEG=0b00000000;
   
      StartI2C();
      WriteI2C(0B11010000);// DIRECCION DEL DS1307 EN ESCLAVO
      AckI2C();
      WriteI2C(0B00000000);//INDICA QUE POSICION SE VERA CAMBIADA, EN ESTE CASO LOS SEGUNDOS
      AckI2C();
      WriteI2C(SEG);// iNDICA EL SEG. ACTUAL
      AckI2C();
      StopI2C();//DEJA DE MANDAR INSTRUCCIONES
       
      //pROCESO DE lECTURA
       StartI2C();
      WriteI2C(0B11010001);// LEE DEL DS1307
      AckI2C();
      SEGUNDOS = ReadI2C();
      NotAckI2C();
      StopI2C();

      
    do
    {
      //pROCESO DE lECTURA
       StartI2C();
      WriteI2C(0B11010001);// LEE DEL DS1307
      AckI2C();
      SEGUNDOS = ReadI2C();
      NotAckI2C();
      StopI2C();
    }while(BAN==0);

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Pic18f4550 reloj propeller con ds1307 en C18
« Respuesta #1 en: 02 de Mayo de 2011, 09:50:40 »
Hola! En C18 debes colocar la función IdleI2C() para esperar a que se haya generado un start, un re-start, stop, Ack y un NAck...


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado ZAZA

  • PIC10
  • *
  • Mensajes: 7
Re: Pic18f4550 reloj propeller con ds1307
« Respuesta #2 en: 02 de Mayo de 2011, 11:36:52 »
Hola suky! te pido disculpas pero andaba investigando esto del idleI2C();

El IdleI2C va antes de cada instruccion en I2C!? si entendi bien?! Gracias por la ayuda!  :)


 

anything