/* * 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(); }
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(); }
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(); }