/// <summary> /// Read Time from PCF8563 /// </summary> /// <returns>PCF8563 Time</returns> protected override DateTime ReadTime() { // Sec, Min, Hour, Date, Day, Month & Century, Year Span <byte> readBuffer = stackalloc byte[7]; _i2cDevice.WriteByte((byte)Pcf8563Register.PCF_SEC_ADDR); _i2cDevice.Read(readBuffer); return(new DateTime(1900 + (readBuffer[5] >> 7) * 100 + NumberHelper.Bcd2Dec(readBuffer[6]), NumberHelper.Bcd2Dec((byte)(readBuffer[5] & 0b_0001_1111)), NumberHelper.Bcd2Dec((byte)(readBuffer[3] & 0b_0011_1111)), NumberHelper.Bcd2Dec((byte)(readBuffer[2] & 0b_0011_1111)), NumberHelper.Bcd2Dec((byte)(readBuffer[1] & 0b_0111_1111)), NumberHelper.Bcd2Dec((byte)(readBuffer[0] & 0b_0111_1111)))); }
/// <summary> /// Read Time from DS3231 /// </summary> /// <returns>DS3231 Time</returns> protected override DateTime ReadTime() { // Sec, Min, Hour, Day, Date, Month & Century, Year Span <byte> rawData = stackalloc byte[7]; _i2cDevice.WriteByte((byte)Ds3231Register.RTC_SEC_REG_ADDR); _i2cDevice.Read(rawData); return(new DateTime(1900 + (rawData[5] >> 7) * 100 + NumberHelper.Bcd2Dec(rawData[6]), NumberHelper.Bcd2Dec((byte)(rawData[5] & 0b_0001_1111)), NumberHelper.Bcd2Dec(rawData[4]), NumberHelper.Bcd2Dec(rawData[2]), NumberHelper.Bcd2Dec(rawData[1]), NumberHelper.Bcd2Dec(rawData[0]))); }
/// <summary> /// Read Time from DS1307 /// </summary> /// <returns>DS1307 Time</returns> protected override DateTime ReadTime() { Span <byte> readBuffer = stackalloc byte[7]; // Read all registers at the same time _i2cDevice.WriteByte((byte)Ds1307Register.RTC_SEC_REG_ADDR); _i2cDevice.Read(readBuffer); // Details in the Datasheet P8 return(new DateTime(2000 + NumberHelper.Bcd2Dec(readBuffer[6]), NumberHelper.Bcd2Dec(readBuffer[5]), NumberHelper.Bcd2Dec(readBuffer[4]), NumberHelper.Bcd2Dec(readBuffer[2]), NumberHelper.Bcd2Dec(readBuffer[1]), NumberHelper.Bcd2Dec((byte)(readBuffer[0] & 0b_0111_1111)))); }