void DS3234_set(uint8_t pin, uint8_t s, uint8_t mi, uint8_t h, uint8_t dw, uint8_t d, uint8_t mo, uint16_t y) { uint8_t i, century, short_y; if (y > 2000) { century = B10000000; short_y = y - 2000; } else { century = 0; short_y = y - 1900; } uint8_t TimeDate[7] = { s, mi, h, dw, d, mo, short_y }; for (i = 0; i <= 6; i++) { digitalWrite(pin, LOW); SPI.transfer(i + 0x80); if (i == 5) SPI.transfer(dectobcd(TimeDate[5]) + century); else SPI.transfer(dectobcd(TimeDate[i])); digitalWrite(pin, HIGH); } }
void DS3234_set(const uint8_t pin, struct ts t) { uint8_t i, century; if (t.year > 2000) { century = 0x80; t.year_s = t.year - 2000; } else { century = 0; t.year_s = t.year - 1900; } SPI.beginTransaction(SPISettings(pin, MSBFIRST, SPI_MODE1)); uint8_t TimeDate[7] = { t.sec, t.min, t.hour, t.wday, t.mday, t.mon, t.year_s }; for (i = 0; i <= 6; i++) { digitalWrite(pin, LOW); SPI.transfer(i + 0x80); if (i == 5) SPI.transfer(dectobcd(TimeDate[5]) + century); else SPI.transfer(dectobcd(TimeDate[i])); digitalWrite(pin, HIGH); } SPI.endTransaction(); }
void DS3231_set(struct ts t) { uint8_t i, century; if (t.year > 2000) { century = 0x80; t.year_s = t.year - 2000; } else { century = 0; t.year_s = t.year - 1900; } uint8_t TimeDate[7] = { t.sec, t.min, t.hour, t.wday, t.mday, t.mon, t.year_s }; Wire.beginTransmission(DS3231_I2C_ADDR); Wire.write(DS3231_TIME_CAL_ADDR); for (i = 0; i <= 6; i++) { TimeDate[i] = dectobcd(TimeDate[i]); if (i == 5) TimeDate[5] += century; Wire.write(TimeDate[i]); } Wire.endTransmission(); }