SoloCodigo
Programación Específica => Microcontroladores => Microcontroladores ATMEL => Mensaje iniciado por: novatòn en Jueves 23 de Febrero de 2006, 00:06
-
[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.
-
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;
}