Ejemplo n.º 1
0
/*
 * get date
 */
void ds1307_getdate(uint8_t *year, uint8_t *month, uint8_t *day, uint8_t *hour, uint8_t *minute, uint8_t *second) {
	i2c_start_wait(DS1307_ADDR | I2C_WRITE);
	i2c_write(0x00);//stop oscillator
	i2c_stop();

	i2c_rep_start(DS1307_ADDR | I2C_READ);
	*second = ds1307_bcd2dec(i2c_readAck() & 0x7F);
	*minute = ds1307_bcd2dec(i2c_readAck());
	*hour = ds1307_bcd2dec(i2c_readAck());
	i2c_readAck();
	*day = ds1307_bcd2dec(i2c_readAck());
	*month = ds1307_bcd2dec(i2c_readAck());
	*year = ds1307_bcd2dec(i2c_readNak());
	i2c_stop();
}
Ejemplo n.º 2
0
Archivo: ds1307.c Proyecto: shtomik/AVR
void ds1307_getdate(unsigned char *year, unsigned char *month, unsigned char *day, unsigned char *hour, unsigned char *minute, unsigned char *second)
{
	i2c_start_wait(DS1307_ADDR | I2C_W);
	i2c_wrt(0x00);//stop oscillator
	i2c_stop();

	i2c_rep_start(DS1307_ADDR | I2C_R);
	*second = ds1307_bcd2dec(i2c_readAck() & 0x7F);
	*minute = ds1307_bcd2dec(i2c_readAck());
	*hour = ds1307_bcd2dec(i2c_readAck());
	i2c_readAck();
	*day = ds1307_bcd2dec(i2c_readAck());
	*month = ds1307_bcd2dec(i2c_readAck());
	*year = ds1307_bcd2dec(i2c_readNak());
	i2c_stop();
}
Ejemplo n.º 3
0
void ds1307_get_datetime(rtc_datetime_t *dtp)
{
  i2c_start_wait(DS1307_ADDR | I2C_WRITE);
  i2c_write(0x00);//set register pointer to 0
  i2c_stop(); // stop oscillator
  i2c_rep_start(DS1307_ADDR | I2C_READ);

  dtp->time.second = ds1307_bcd2dec(i2c_readAck() & 0x7F);
  dtp->time.minute = ds1307_bcd2dec(i2c_readAck());
  dtp->time.hour = ds1307_bcd2dec(i2c_readAck());
  i2c_readAck();
  dtp->date.dom = ds1307_bcd2dec(i2c_readAck());
  dtp->date.month = ds1307_bcd2dec(i2c_readAck());
  dtp->date.year = ds1307_bcd2dec(i2c_readNak());
  i2c_stop();  
}