Example #1
0
        /// <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))));
        }
Example #2
0
        /// <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])));
        }
Example #3
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))));
        }