• Domingo 22 de Diciembre de 2024, 07:39

Autor Tema:  Reloj Ds1307 Con Atmega16 En Codevision  (Leído 4537 veces)

novatòn

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Reloj Ds1307 Con Atmega16 En Codevision
« en: Jueves 23 de Febrero de 2006, 00:06 »
0
[email:n5rou90p]williamfnarvaez@hotmail.com[/email:n5rou90p]
[email:n5rou90p]williamfnarvaez@yahoo.com[/email:n5rou90p]

Hola a todos, por favor necesito ayuda con el manejo del reloj DS1307 en el ATmega16, ya he seguido el ejemplo qeu esta en la ayuda del Codevision y no me funciona para nada, ni si quiera el momento que inicializo al reloj para que a la salida del pin OUT me de la onda de 1Hz no funciona.  

Ayudenme por favor es para un proyecto...


Novatón.

wadysal

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: Reloj Ds1307 Con Atmega16 En Codevision
« Respuesta #1 en: Domingo 11 de Julio de 2010, 06:46 »
0
Esto configurarlo en el wizzard

// I2C Bus initialization
i2c_init();

// DS1307 Real Time Clock initialization
// Square wave output on pin SQW/OUT: Off
// SQW/OUT pin state: 0
rtc_init(0,0,0);

Estas son generadas por el wizzard

// I2C Bus functions
#asm
   .equ __i2c_port=0x15 ;PORTC
   .equ __sda_bit=4
   .equ __scl_bit=5
#endasm
#include <i2c.h>

// DS1307 Real Time Clock functions
#include <ds1307.h>

Ejemplo de como configurar el DS1307 con la UART al finalizar envia la fecha y la hora periodicamente por UART

void SetClock(void){

printf("Set");
NewLine();           //Funcion NewLine() envia un CR y LF por la uart

dd=bcd2bin(GetHex());    
mm=bcd2bin(GetHex());
yy=bcd2bin(GetHex());
h=bcd2bin(GetHex());
m=bcd2bin(GetHex());
s=bcd2bin(GetHex());

rtc_set_date(dd,mm,yy);
rtc_set_time(h,m,s);

printf("Ok");
putchar(0x0D);

for(;;){
       
        rtc_get_time(&h,&m,&s);  
        rtc_get_date(&dd,&mm,&yy);
       
        printf("%02u/%02u/20%02u %02u:%02u:%02u",dd,mm,yy,h,m,s);
        NewLine();                
       
        delay_ms(1000);

        }

}

unsigned char GetHex(void){
               
unsigned char H,L,Dato;

                H=getchar()-0x30;
                L=getchar()-0x30;
                Dato=(H<<4)+L;
                return Dato;
}