Пример #1
0
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);
    }
}
Пример #2
0
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();
}
Пример #3
0
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();
}