Documentation ¶
Overview ¶
Package ds3231 provides a driver for the DS3231 RTC
Datasheet: https://datasheets.maximintegrated.com/en/ds/DS3231.pdf
Index ¶
- Constants
- type Device
- func (d *Device) Configure() bool
- func (d *Device) IsRunning() bool
- func (d *Device) IsTimeValid() bool
- func (d *Device) ReadTemperature() (int32, error)
- func (d *Device) ReadTime() (dt time.Time, err error)
- func (d *Device) SetRunning(isRunning bool) error
- func (d *Device) SetTime(dt time.Time) error
- type Mode
Constants ¶
const ( REG_TIMEDATE = 0x00 REG_ALARMONE = 0x07 REG_ALARMTWO = 0x0B REG_CONTROL = 0x0E REG_STATUS = 0x0F REG_AGING = 0x10 REG_TEMP = 0x11 REG_ALARMONE_SIZE = 4 REG_ALARMTWO_SIZE = 3 // DS3231 Control Register Bits A1IE = 0 A2IE = 1 INTCN = 2 RS1 = 3 RS2 = 4 CONV = 5 BBSQW = 6 EOSC = 7 // DS3231 Status Register Bits A1F = 0 A2F = 1 BSY = 2 EN32KHZ = 3 OSF = 7 AlarmFlag_Alarm1 = 0x01 AlarmFlag_Alarm2 = 0x02 AlarmFlag_AlarmBoth = 0x03 None Mode = 0 BatteryBackup Mode = 1 Clock Mode = 2 AlarmOne Mode = 3 AlarmTwo Mode = 4 ModeAlarmBoth Mode = 5 )
Registers
const Address = 0x68
The I2C address which this device listens to.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Device ¶
type Device struct { Address uint16 // contains filtered or unexported fields }
Device wraps an I2C connection to a DS3231 device.
func New ¶
New creates a new DS3231 connection. The I2C bus must already be configured.
This function only creates the Device object, it does not touch the device.
func (*Device) IsTimeValid ¶
IsTimeValid return true/false is the time in the device is valid
func (*Device) ReadTemperature ¶
ReadTemperature returns the temperature in millicelsius (mC)
func (*Device) SetRunning ¶
SetRunning starts the internal oscillator
func (*Device) SetTime ¶
SetTime sets the date and time in the DS3231. The DS3231 hardware supports only a 2-digit year field, so the current year will be stored as an offset from the year 2000, which supports the year 2000 until 2100.
The DS3231 also supports a one-bit 'century' flag which is set by the chip when the year field rolls over from 99 to 00. The current code interprets this flag to be the year 2100, which appears to extend the range of years until the year 2200. However the DS3231 does not incorporate the 'century' flag in its leap year calculation, so it will incorrectly identify the year 2100 as a leap year, causing it to increment from 2100-02-28 to 2100-02-29 instead of 2100-03-01.