Remarks
Ds323x | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
The DS323x is a low-cost and accurate real-time clock with a temperature compensation crystal oscillator. This range of chips offers the following functionality:
- Temperature compensation
- Battery backup
- I2C (DS3231) and SPI (DS3234) interfaces.
- Two programmable alarms
- 32.768 KHz square wave output
Code Example
Ds3231 sensor;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
sensor = new Ds3231(Device.CreateI2cBus(), Device.Pins.D06);
sensor.OnAlarm1Raised += Sensor_OnAlarm1Raised;
return base.Initialize();
}
public override Task Run()
{
sensor.CurrentDateTime = new DateTime(2020, 1, 1);
Resolver.Log.Info($"Current time: {sensor.CurrentDateTime}");
Resolver.Log.Info($"Temperature: {sensor.Temperature}");
sensor.ClearInterrupt(Ds323x.Alarm.BothAlarmsRaised);
sensor.SetAlarm(Ds323x.Alarm.Alarm1Raised,
new DateTime(2020, 1, 1, 1, 0, 0),
Ds323x.AlarmType.WhenSecondsMatch);
sensor.DisplayRegisters();
return base.Run();
}
private void Sensor_OnAlarm1Raised(object sender)
{
var rtc = (Ds3231)sender;
Resolver.Log.Info("Alarm 1 has been activated: " + rtc.CurrentDateTime.ToString("dd MMM yyyy HH:mm:ss"));
rtc.ClearInterrupt(Ds323x.Alarm.Alarm1Raised);
}
Sample project(s) available on GitHub
Wiring Example
The DS3231 real time clock module (see image below) requires only four (for simple timekeeping) or five (for alarms) connections
DS323x | Meadow Pin |
---|---|
VCC | 3.3V |
GND | GND |
SCK | SC |
SDA | SD |
Interrupt | SQW |
It should look like the following diagram:
The 32K pin outputs the 32,768 Hz clock signal from the module. This signal is only available when power is supplied by Vcc, it is not available when the module is on battery power.
The orange wire is only required if the alarms are being used to interrupt the Meadow.
Characteristic | Locus |
---|---|
Inheritance | object > Ds323x > Ds3231 |
Implements | II2cPeripheral IDisposable |
Inherited Members | object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() |
Namespace | Meadow.Foundation.RTCs |
Assembly | Ds323x.dll |
Syntax
public class Ds323x : II2cPeripheral, IDisposable
Constructors
Ds323x(I2cCommunications, IDigitalInterruptPort)
Create a new Ds323x object
Declaration
protected Ds323x(I2cCommunications i2cComms, IDigitalInterruptPort interruptPort)
Parameters
Type | Name | Description |
---|---|---|
I2cCommunications | i2cComms | |
IDigitalInterruptPort | interruptPort |
Remarks
Ds323x | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
The DS323x is a low-cost and accurate real-time clock with a temperature compensation crystal oscillator. This range of chips offers the following functionality:
- Temperature compensation
- Battery backup
- I2C (DS3231) and SPI (DS3234) interfaces.
- Two programmable alarms
- 32.768 KHz square wave output
Code Example
Ds3231 sensor;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
sensor = new Ds3231(Device.CreateI2cBus(), Device.Pins.D06);
sensor.OnAlarm1Raised += Sensor_OnAlarm1Raised;
return base.Initialize();
}
public override Task Run()
{
sensor.CurrentDateTime = new DateTime(2020, 1, 1);
Resolver.Log.Info($"Current time: {sensor.CurrentDateTime}");
Resolver.Log.Info($"Temperature: {sensor.Temperature}");
sensor.ClearInterrupt(Ds323x.Alarm.BothAlarmsRaised);
sensor.SetAlarm(Ds323x.Alarm.Alarm1Raised,
new DateTime(2020, 1, 1, 1, 0, 0),
Ds323x.AlarmType.WhenSecondsMatch);
sensor.DisplayRegisters();
return base.Run();
}
private void Sensor_OnAlarm1Raised(object sender)
{
var rtc = (Ds3231)sender;
Resolver.Log.Info("Alarm 1 has been activated: " + rtc.CurrentDateTime.ToString("dd MMM yyyy HH:mm:ss"));
rtc.ClearInterrupt(Ds323x.Alarm.Alarm1Raised);
}
Sample project(s) available on GitHub
Wiring Example
The DS3231 real time clock module (see image below) requires only four (for simple timekeeping) or five (for alarms) connections
DS323x | Meadow Pin |
---|---|
VCC | 3.3V |
GND | GND |
SCK | SC |
SDA | SD |
Interrupt | SQW |
It should look like the following diagram:
The 32K pin outputs the 32,768 Hz clock signal from the module. This signal is only available when power is supplied by Vcc, it is not available when the module is on battery power.
The orange wire is only required if the alarms are being used to interrupt the Meadow.
Ds323x(I2cCommunications, IPin)
Create a new Ds323x object
Declaration
protected Ds323x(I2cCommunications i2cComms, IPin interruptPin)
Parameters
Type | Name | Description |
---|---|---|
I2cCommunications | i2cComms | |
IPin | interruptPin |
Remarks
Ds323x | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
The DS323x is a low-cost and accurate real-time clock with a temperature compensation crystal oscillator. This range of chips offers the following functionality:
- Temperature compensation
- Battery backup
- I2C (DS3231) and SPI (DS3234) interfaces.
- Two programmable alarms
- 32.768 KHz square wave output
Code Example
Ds3231 sensor;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
sensor = new Ds3231(Device.CreateI2cBus(), Device.Pins.D06);
sensor.OnAlarm1Raised += Sensor_OnAlarm1Raised;
return base.Initialize();
}
public override Task Run()
{
sensor.CurrentDateTime = new DateTime(2020, 1, 1);
Resolver.Log.Info($"Current time: {sensor.CurrentDateTime}");
Resolver.Log.Info($"Temperature: {sensor.Temperature}");
sensor.ClearInterrupt(Ds323x.Alarm.BothAlarmsRaised);
sensor.SetAlarm(Ds323x.Alarm.Alarm1Raised,
new DateTime(2020, 1, 1, 1, 0, 0),
Ds323x.AlarmType.WhenSecondsMatch);
sensor.DisplayRegisters();
return base.Run();
}
private void Sensor_OnAlarm1Raised(object sender)
{
var rtc = (Ds3231)sender;
Resolver.Log.Info("Alarm 1 has been activated: " + rtc.CurrentDateTime.ToString("dd MMM yyyy HH:mm:ss"));
rtc.ClearInterrupt(Ds323x.Alarm.Alarm1Raised);
}
Sample project(s) available on GitHub
Wiring Example
The DS3231 real time clock module (see image below) requires only four (for simple timekeeping) or five (for alarms) connections
DS323x | Meadow Pin |
---|---|
VCC | 3.3V |
GND | GND |
SCK | SC |
SDA | SD |
Interrupt | SQW |
It should look like the following diagram:
The 32K pin outputs the 32,768 Hz clock signal from the module. This signal is only available when power is supplied by Vcc, it is not available when the module is on battery power.
The orange wire is only required if the alarms are being used to interrupt the Meadow.
Fields
i2cComms
I2C Communication bus used to communicate with the i2cComms
Declaration
protected II2cCommunications i2cComms
Field Value
Type | Description |
---|---|
II2cCommunications |
Remarks
Ds323x | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
The DS323x is a low-cost and accurate real-time clock with a temperature compensation crystal oscillator. This range of chips offers the following functionality:
- Temperature compensation
- Battery backup
- I2C (DS3231) and SPI (DS3234) interfaces.
- Two programmable alarms
- 32.768 KHz square wave output
Code Example
Ds3231 sensor;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
sensor = new Ds3231(Device.CreateI2cBus(), Device.Pins.D06);
sensor.OnAlarm1Raised += Sensor_OnAlarm1Raised;
return base.Initialize();
}
public override Task Run()
{
sensor.CurrentDateTime = new DateTime(2020, 1, 1);
Resolver.Log.Info($"Current time: {sensor.CurrentDateTime}");
Resolver.Log.Info($"Temperature: {sensor.Temperature}");
sensor.ClearInterrupt(Ds323x.Alarm.BothAlarmsRaised);
sensor.SetAlarm(Ds323x.Alarm.Alarm1Raised,
new DateTime(2020, 1, 1, 1, 0, 0),
Ds323x.AlarmType.WhenSecondsMatch);
sensor.DisplayRegisters();
return base.Run();
}
private void Sensor_OnAlarm1Raised(object sender)
{
var rtc = (Ds3231)sender;
Resolver.Log.Info("Alarm 1 has been activated: " + rtc.CurrentDateTime.ToString("dd MMM yyyy HH:mm:ss"));
rtc.ClearInterrupt(Ds323x.Alarm.Alarm1Raised);
}
Sample project(s) available on GitHub
Wiring Example
The DS3231 real time clock module (see image below) requires only four (for simple timekeeping) or five (for alarms) connections
DS323x | Meadow Pin |
---|---|
VCC | 3.3V |
GND | GND |
SCK | SC |
SDA | SD |
Interrupt | SQW |
It should look like the following diagram:
The 32K pin outputs the 32,768 Hz clock signal from the module. This signal is only available when power is supplied by Vcc, it is not available when the module is on battery power.
The orange wire is only required if the alarms are being used to interrupt the Meadow.
Properties
ControlRegister
Control register.
Declaration
protected byte ControlRegister { get; set; }
Property Value
Type | Description |
---|---|
byte |
Remarks
Control register contains the following bit (in sequence b7 - b0): EOSC - BBSQW - CONV - RS1 - RS2 - INTCN - A2IE - A1IE
ControlStatusRegister
Control and status register.
Declaration
protected byte ControlStatusRegister { get; set; }
Property Value
Type | Description |
---|---|
byte |
Remarks
Control and status register contains the following bit (in sequence b7 - b0): OSF - 0 - 0 - 0 - EN32KHZ - BSY - A2F - A1F
CurrentDateTime
Get / Set the current date and time.
Declaration
public DateTime CurrentDateTime { get; set; }
Property Value
Type | Description |
---|---|
DateTime |
Remarks
Ds323x | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
The DS323x is a low-cost and accurate real-time clock with a temperature compensation crystal oscillator. This range of chips offers the following functionality:
- Temperature compensation
- Battery backup
- I2C (DS3231) and SPI (DS3234) interfaces.
- Two programmable alarms
- 32.768 KHz square wave output
Code Example
Ds3231 sensor;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
sensor = new Ds3231(Device.CreateI2cBus(), Device.Pins.D06);
sensor.OnAlarm1Raised += Sensor_OnAlarm1Raised;
return base.Initialize();
}
public override Task Run()
{
sensor.CurrentDateTime = new DateTime(2020, 1, 1);
Resolver.Log.Info($"Current time: {sensor.CurrentDateTime}");
Resolver.Log.Info($"Temperature: {sensor.Temperature}");
sensor.ClearInterrupt(Ds323x.Alarm.BothAlarmsRaised);
sensor.SetAlarm(Ds323x.Alarm.Alarm1Raised,
new DateTime(2020, 1, 1, 1, 0, 0),
Ds323x.AlarmType.WhenSecondsMatch);
sensor.DisplayRegisters();
return base.Run();
}
private void Sensor_OnAlarm1Raised(object sender)
{
var rtc = (Ds3231)sender;
Resolver.Log.Info("Alarm 1 has been activated: " + rtc.CurrentDateTime.ToString("dd MMM yyyy HH:mm:ss"));
rtc.ClearInterrupt(Ds323x.Alarm.Alarm1Raised);
}
Sample project(s) available on GitHub
Wiring Example
The DS3231 real time clock module (see image below) requires only four (for simple timekeeping) or five (for alarms) connections
DS323x | Meadow Pin |
---|---|
VCC | 3.3V |
GND | GND |
SCK | SC |
SDA | SD |
Interrupt | SQW |
It should look like the following diagram:
The 32K pin outputs the 32,768 Hz clock signal from the module. This signal is only available when power is supplied by Vcc, it is not available when the module is on battery power.
The orange wire is only required if the alarms are being used to interrupt the Meadow.
DefaultI2cAddress
The default I2C address for the peripheral
Declaration
public byte DefaultI2cAddress { get; }
Property Value
Type | Description |
---|---|
byte |
Remarks
Ds323x | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
The DS323x is a low-cost and accurate real-time clock with a temperature compensation crystal oscillator. This range of chips offers the following functionality:
- Temperature compensation
- Battery backup
- I2C (DS3231) and SPI (DS3234) interfaces.
- Two programmable alarms
- 32.768 KHz square wave output
Code Example
Ds3231 sensor;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
sensor = new Ds3231(Device.CreateI2cBus(), Device.Pins.D06);
sensor.OnAlarm1Raised += Sensor_OnAlarm1Raised;
return base.Initialize();
}
public override Task Run()
{
sensor.CurrentDateTime = new DateTime(2020, 1, 1);
Resolver.Log.Info($"Current time: {sensor.CurrentDateTime}");
Resolver.Log.Info($"Temperature: {sensor.Temperature}");
sensor.ClearInterrupt(Ds323x.Alarm.BothAlarmsRaised);
sensor.SetAlarm(Ds323x.Alarm.Alarm1Raised,
new DateTime(2020, 1, 1, 1, 0, 0),
Ds323x.AlarmType.WhenSecondsMatch);
sensor.DisplayRegisters();
return base.Run();
}
private void Sensor_OnAlarm1Raised(object sender)
{
var rtc = (Ds3231)sender;
Resolver.Log.Info("Alarm 1 has been activated: " + rtc.CurrentDateTime.ToString("dd MMM yyyy HH:mm:ss"));
rtc.ClearInterrupt(Ds323x.Alarm.Alarm1Raised);
}
Sample project(s) available on GitHub
Wiring Example
The DS3231 real time clock module (see image below) requires only four (for simple timekeeping) or five (for alarms) connections
DS323x | Meadow Pin |
---|---|
VCC | 3.3V |
GND | GND |
SCK | SC |
SDA | SD |
Interrupt | SQW |
It should look like the following diagram:
The 32K pin outputs the 32,768 Hz clock signal from the module. This signal is only available when power is supplied by Vcc, it is not available when the module is on battery power.
The orange wire is only required if the alarms are being used to interrupt the Meadow.
InterruptPort
Interrupt port attached to the DS323x RTC module.
Declaration
protected IDigitalInterruptPort InterruptPort { get; }
Property Value
Type | Description |
---|---|
IDigitalInterruptPort |
Remarks
Ds323x | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
The DS323x is a low-cost and accurate real-time clock with a temperature compensation crystal oscillator. This range of chips offers the following functionality:
- Temperature compensation
- Battery backup
- I2C (DS3231) and SPI (DS3234) interfaces.
- Two programmable alarms
- 32.768 KHz square wave output
Code Example
Ds3231 sensor;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
sensor = new Ds3231(Device.CreateI2cBus(), Device.Pins.D06);
sensor.OnAlarm1Raised += Sensor_OnAlarm1Raised;
return base.Initialize();
}
public override Task Run()
{
sensor.CurrentDateTime = new DateTime(2020, 1, 1);
Resolver.Log.Info($"Current time: {sensor.CurrentDateTime}");
Resolver.Log.Info($"Temperature: {sensor.Temperature}");
sensor.ClearInterrupt(Ds323x.Alarm.BothAlarmsRaised);
sensor.SetAlarm(Ds323x.Alarm.Alarm1Raised,
new DateTime(2020, 1, 1, 1, 0, 0),
Ds323x.AlarmType.WhenSecondsMatch);
sensor.DisplayRegisters();
return base.Run();
}
private void Sensor_OnAlarm1Raised(object sender)
{
var rtc = (Ds3231)sender;
Resolver.Log.Info("Alarm 1 has been activated: " + rtc.CurrentDateTime.ToString("dd MMM yyyy HH:mm:ss"));
rtc.ClearInterrupt(Ds323x.Alarm.Alarm1Raised);
}
Sample project(s) available on GitHub
Wiring Example
The DS3231 real time clock module (see image below) requires only four (for simple timekeeping) or five (for alarms) connections
DS323x | Meadow Pin |
---|---|
VCC | 3.3V |
GND | GND |
SCK | SC |
SDA | SD |
Interrupt | SQW |
It should look like the following diagram:
The 32K pin outputs the 32,768 Hz clock signal from the module. This signal is only available when power is supplied by Vcc, it is not available when the module is on battery power.
The orange wire is only required if the alarms are being used to interrupt the Meadow.
Temperature
Get the current die temperature.
Declaration
public Temperature Temperature { get; }
Property Value
Type | Description |
---|---|
Temperature |
Remarks
Ds323x | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
The DS323x is a low-cost and accurate real-time clock with a temperature compensation crystal oscillator. This range of chips offers the following functionality:
- Temperature compensation
- Battery backup
- I2C (DS3231) and SPI (DS3234) interfaces.
- Two programmable alarms
- 32.768 KHz square wave output
Code Example
Ds3231 sensor;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
sensor = new Ds3231(Device.CreateI2cBus(), Device.Pins.D06);
sensor.OnAlarm1Raised += Sensor_OnAlarm1Raised;
return base.Initialize();
}
public override Task Run()
{
sensor.CurrentDateTime = new DateTime(2020, 1, 1);
Resolver.Log.Info($"Current time: {sensor.CurrentDateTime}");
Resolver.Log.Info($"Temperature: {sensor.Temperature}");
sensor.ClearInterrupt(Ds323x.Alarm.BothAlarmsRaised);
sensor.SetAlarm(Ds323x.Alarm.Alarm1Raised,
new DateTime(2020, 1, 1, 1, 0, 0),
Ds323x.AlarmType.WhenSecondsMatch);
sensor.DisplayRegisters();
return base.Run();
}
private void Sensor_OnAlarm1Raised(object sender)
{
var rtc = (Ds3231)sender;
Resolver.Log.Info("Alarm 1 has been activated: " + rtc.CurrentDateTime.ToString("dd MMM yyyy HH:mm:ss"));
rtc.ClearInterrupt(Ds323x.Alarm.Alarm1Raised);
}
Sample project(s) available on GitHub
Wiring Example
The DS3231 real time clock module (see image below) requires only four (for simple timekeeping) or five (for alarms) connections
DS323x | Meadow Pin |
---|---|
VCC | 3.3V |
GND | GND |
SCK | SC |
SDA | SD |
Interrupt | SQW |
It should look like the following diagram:
The 32K pin outputs the 32,768 Hz clock signal from the module. This signal is only available when power is supplied by Vcc, it is not available when the module is on battery power.
The orange wire is only required if the alarms are being used to interrupt the Meadow.
WhichAlarm
Determine which alarm has been raised.
Declaration
protected Ds323x.Alarm WhichAlarm { get; }
Property Value
Type | Description |
---|---|
Ds323x.Alarm |
Remarks
Ds323x | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
The DS323x is a low-cost and accurate real-time clock with a temperature compensation crystal oscillator. This range of chips offers the following functionality:
- Temperature compensation
- Battery backup
- I2C (DS3231) and SPI (DS3234) interfaces.
- Two programmable alarms
- 32.768 KHz square wave output
Code Example
Ds3231 sensor;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
sensor = new Ds3231(Device.CreateI2cBus(), Device.Pins.D06);
sensor.OnAlarm1Raised += Sensor_OnAlarm1Raised;
return base.Initialize();
}
public override Task Run()
{
sensor.CurrentDateTime = new DateTime(2020, 1, 1);
Resolver.Log.Info($"Current time: {sensor.CurrentDateTime}");
Resolver.Log.Info($"Temperature: {sensor.Temperature}");
sensor.ClearInterrupt(Ds323x.Alarm.BothAlarmsRaised);
sensor.SetAlarm(Ds323x.Alarm.Alarm1Raised,
new DateTime(2020, 1, 1, 1, 0, 0),
Ds323x.AlarmType.WhenSecondsMatch);
sensor.DisplayRegisters();
return base.Run();
}
private void Sensor_OnAlarm1Raised(object sender)
{
var rtc = (Ds3231)sender;
Resolver.Log.Info("Alarm 1 has been activated: " + rtc.CurrentDateTime.ToString("dd MMM yyyy HH:mm:ss"));
rtc.ClearInterrupt(Ds323x.Alarm.Alarm1Raised);
}
Sample project(s) available on GitHub
Wiring Example
The DS3231 real time clock module (see image below) requires only four (for simple timekeeping) or five (for alarms) connections
DS323x | Meadow Pin |
---|---|
VCC | 3.3V |
GND | GND |
SCK | SC |
SDA | SD |
Interrupt | SQW |
It should look like the following diagram:
The 32K pin outputs the 32,768 Hz clock signal from the module. This signal is only available when power is supplied by Vcc, it is not available when the module is on battery power.
The orange wire is only required if the alarms are being used to interrupt the Meadow.
Methods
ClearInterrupt(Alarm)
Clear the alarm interrupt flag for the specified alarm.
Declaration
public void ClearInterrupt(Ds323x.Alarm alarm)
Parameters
Type | Name | Description |
---|---|---|
Ds323x.Alarm | alarm | Alarm to clear. |
Remarks
Ds323x | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
The DS323x is a low-cost and accurate real-time clock with a temperature compensation crystal oscillator. This range of chips offers the following functionality:
- Temperature compensation
- Battery backup
- I2C (DS3231) and SPI (DS3234) interfaces.
- Two programmable alarms
- 32.768 KHz square wave output
Code Example
Ds3231 sensor;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
sensor = new Ds3231(Device.CreateI2cBus(), Device.Pins.D06);
sensor.OnAlarm1Raised += Sensor_OnAlarm1Raised;
return base.Initialize();
}
public override Task Run()
{
sensor.CurrentDateTime = new DateTime(2020, 1, 1);
Resolver.Log.Info($"Current time: {sensor.CurrentDateTime}");
Resolver.Log.Info($"Temperature: {sensor.Temperature}");
sensor.ClearInterrupt(Ds323x.Alarm.BothAlarmsRaised);
sensor.SetAlarm(Ds323x.Alarm.Alarm1Raised,
new DateTime(2020, 1, 1, 1, 0, 0),
Ds323x.AlarmType.WhenSecondsMatch);
sensor.DisplayRegisters();
return base.Run();
}
private void Sensor_OnAlarm1Raised(object sender)
{
var rtc = (Ds3231)sender;
Resolver.Log.Info("Alarm 1 has been activated: " + rtc.CurrentDateTime.ToString("dd MMM yyyy HH:mm:ss"));
rtc.ClearInterrupt(Ds323x.Alarm.Alarm1Raised);
}
Sample project(s) available on GitHub
Wiring Example
The DS3231 real time clock module (see image below) requires only four (for simple timekeeping) or five (for alarms) connections
DS323x | Meadow Pin |
---|---|
VCC | 3.3V |
GND | GND |
SCK | SC |
SDA | SD |
Interrupt | SQW |
It should look like the following diagram:
The 32K pin outputs the 32,768 Hz clock signal from the module. This signal is only available when power is supplied by Vcc, it is not available when the module is on battery power.
The orange wire is only required if the alarms are being used to interrupt the Meadow.
DayOfWeekToByte(DayOfWeek)
Convert the day of the week to a byte.
Declaration
protected byte DayOfWeekToByte(DayOfWeek day)
Parameters
Type | Name | Description |
---|---|---|
DayOfWeek | day | Day of the week |
Returns
Type | Description |
---|---|
byte | Byte representation of the day of the week (Sunday = 1). |
Remarks
Ds323x | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
The DS323x is a low-cost and accurate real-time clock with a temperature compensation crystal oscillator. This range of chips offers the following functionality:
- Temperature compensation
- Battery backup
- I2C (DS3231) and SPI (DS3234) interfaces.
- Two programmable alarms
- 32.768 KHz square wave output
Code Example
Ds3231 sensor;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
sensor = new Ds3231(Device.CreateI2cBus(), Device.Pins.D06);
sensor.OnAlarm1Raised += Sensor_OnAlarm1Raised;
return base.Initialize();
}
public override Task Run()
{
sensor.CurrentDateTime = new DateTime(2020, 1, 1);
Resolver.Log.Info($"Current time: {sensor.CurrentDateTime}");
Resolver.Log.Info($"Temperature: {sensor.Temperature}");
sensor.ClearInterrupt(Ds323x.Alarm.BothAlarmsRaised);
sensor.SetAlarm(Ds323x.Alarm.Alarm1Raised,
new DateTime(2020, 1, 1, 1, 0, 0),
Ds323x.AlarmType.WhenSecondsMatch);
sensor.DisplayRegisters();
return base.Run();
}
private void Sensor_OnAlarm1Raised(object sender)
{
var rtc = (Ds3231)sender;
Resolver.Log.Info("Alarm 1 has been activated: " + rtc.CurrentDateTime.ToString("dd MMM yyyy HH:mm:ss"));
rtc.ClearInterrupt(Ds323x.Alarm.Alarm1Raised);
}
Sample project(s) available on GitHub
Wiring Example
The DS3231 real time clock module (see image below) requires only four (for simple timekeeping) or five (for alarms) connections
DS323x | Meadow Pin |
---|---|
VCC | 3.3V |
GND | GND |
SCK | SC |
SDA | SD |
Interrupt | SQW |
It should look like the following diagram:
The 32K pin outputs the 32,768 Hz clock signal from the module. This signal is only available when power is supplied by Vcc, it is not available when the module is on battery power.
The orange wire is only required if the alarms are being used to interrupt the Meadow.
DecodeDateTimeRegisters(Span<byte>)
Decode the register contents and create a DateTime version of the register contents.
Declaration
protected DateTime DecodeDateTimeRegisters(Span<byte> data)
Parameters
Type | Name | Description |
---|---|---|
Span<byte> | data | Register contents. |
Returns
Type | Description |
---|---|
DateTime | DateTime object version of the data. |
Remarks
Ds323x | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
The DS323x is a low-cost and accurate real-time clock with a temperature compensation crystal oscillator. This range of chips offers the following functionality:
- Temperature compensation
- Battery backup
- I2C (DS3231) and SPI (DS3234) interfaces.
- Two programmable alarms
- 32.768 KHz square wave output
Code Example
Ds3231 sensor;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
sensor = new Ds3231(Device.CreateI2cBus(), Device.Pins.D06);
sensor.OnAlarm1Raised += Sensor_OnAlarm1Raised;
return base.Initialize();
}
public override Task Run()
{
sensor.CurrentDateTime = new DateTime(2020, 1, 1);
Resolver.Log.Info($"Current time: {sensor.CurrentDateTime}");
Resolver.Log.Info($"Temperature: {sensor.Temperature}");
sensor.ClearInterrupt(Ds323x.Alarm.BothAlarmsRaised);
sensor.SetAlarm(Ds323x.Alarm.Alarm1Raised,
new DateTime(2020, 1, 1, 1, 0, 0),
Ds323x.AlarmType.WhenSecondsMatch);
sensor.DisplayRegisters();
return base.Run();
}
private void Sensor_OnAlarm1Raised(object sender)
{
var rtc = (Ds3231)sender;
Resolver.Log.Info("Alarm 1 has been activated: " + rtc.CurrentDateTime.ToString("dd MMM yyyy HH:mm:ss"));
rtc.ClearInterrupt(Ds323x.Alarm.Alarm1Raised);
}
Sample project(s) available on GitHub
Wiring Example
The DS3231 real time clock module (see image below) requires only four (for simple timekeeping) or five (for alarms) connections
DS323x | Meadow Pin |
---|---|
VCC | 3.3V |
GND | GND |
SCK | SC |
SDA | SD |
Interrupt | SQW |
It should look like the following diagram:
The 32K pin outputs the 32,768 Hz clock signal from the module. This signal is only available when power is supplied by Vcc, it is not available when the module is on battery power.
The orange wire is only required if the alarms are being used to interrupt the Meadow.
DisplayRegisters()
Display the registers.
Declaration
public void DisplayRegisters()
Remarks
Ds323x | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
The DS323x is a low-cost and accurate real-time clock with a temperature compensation crystal oscillator. This range of chips offers the following functionality:
- Temperature compensation
- Battery backup
- I2C (DS3231) and SPI (DS3234) interfaces.
- Two programmable alarms
- 32.768 KHz square wave output
Code Example
Ds3231 sensor;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
sensor = new Ds3231(Device.CreateI2cBus(), Device.Pins.D06);
sensor.OnAlarm1Raised += Sensor_OnAlarm1Raised;
return base.Initialize();
}
public override Task Run()
{
sensor.CurrentDateTime = new DateTime(2020, 1, 1);
Resolver.Log.Info($"Current time: {sensor.CurrentDateTime}");
Resolver.Log.Info($"Temperature: {sensor.Temperature}");
sensor.ClearInterrupt(Ds323x.Alarm.BothAlarmsRaised);
sensor.SetAlarm(Ds323x.Alarm.Alarm1Raised,
new DateTime(2020, 1, 1, 1, 0, 0),
Ds323x.AlarmType.WhenSecondsMatch);
sensor.DisplayRegisters();
return base.Run();
}
private void Sensor_OnAlarm1Raised(object sender)
{
var rtc = (Ds3231)sender;
Resolver.Log.Info("Alarm 1 has been activated: " + rtc.CurrentDateTime.ToString("dd MMM yyyy HH:mm:ss"));
rtc.ClearInterrupt(Ds323x.Alarm.Alarm1Raised);
}
Sample project(s) available on GitHub
Wiring Example
The DS3231 real time clock module (see image below) requires only four (for simple timekeeping) or five (for alarms) connections
DS323x | Meadow Pin |
---|---|
VCC | 3.3V |
GND | GND |
SCK | SC |
SDA | SD |
Interrupt | SQW |
It should look like the following diagram:
The 32K pin outputs the 32,768 Hz clock signal from the module. This signal is only available when power is supplied by Vcc, it is not available when the module is on battery power.
The orange wire is only required if the alarms are being used to interrupt the Meadow.
Dispose()
Dispose
Declaration
public void Dispose()
Remarks
Ds323x | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
The DS323x is a low-cost and accurate real-time clock with a temperature compensation crystal oscillator. This range of chips offers the following functionality:
- Temperature compensation
- Battery backup
- I2C (DS3231) and SPI (DS3234) interfaces.
- Two programmable alarms
- 32.768 KHz square wave output
Code Example
Ds3231 sensor;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
sensor = new Ds3231(Device.CreateI2cBus(), Device.Pins.D06);
sensor.OnAlarm1Raised += Sensor_OnAlarm1Raised;
return base.Initialize();
}
public override Task Run()
{
sensor.CurrentDateTime = new DateTime(2020, 1, 1);
Resolver.Log.Info($"Current time: {sensor.CurrentDateTime}");
Resolver.Log.Info($"Temperature: {sensor.Temperature}");
sensor.ClearInterrupt(Ds323x.Alarm.BothAlarmsRaised);
sensor.SetAlarm(Ds323x.Alarm.Alarm1Raised,
new DateTime(2020, 1, 1, 1, 0, 0),
Ds323x.AlarmType.WhenSecondsMatch);
sensor.DisplayRegisters();
return base.Run();
}
private void Sensor_OnAlarm1Raised(object sender)
{
var rtc = (Ds3231)sender;
Resolver.Log.Info("Alarm 1 has been activated: " + rtc.CurrentDateTime.ToString("dd MMM yyyy HH:mm:ss"));
rtc.ClearInterrupt(Ds323x.Alarm.Alarm1Raised);
}
Sample project(s) available on GitHub
Wiring Example
The DS3231 real time clock module (see image below) requires only four (for simple timekeeping) or five (for alarms) connections
DS323x | Meadow Pin |
---|---|
VCC | 3.3V |
GND | GND |
SCK | SC |
SDA | SD |
Interrupt | SQW |
It should look like the following diagram:
The 32K pin outputs the 32,768 Hz clock signal from the module. This signal is only available when power is supplied by Vcc, it is not available when the module is on battery power.
The orange wire is only required if the alarms are being used to interrupt the Meadow.
EnableDisableAlarm(Alarm, bool)
Enable or disable the specified alarm.
Declaration
public void EnableDisableAlarm(Ds323x.Alarm alarm, bool enable)
Parameters
Type | Name | Description |
---|---|---|
Ds323x.Alarm | alarm | Alarm to enable / disable. |
bool | enable | Alarm state, true = on, false = off. |
Remarks
Ds323x | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
The DS323x is a low-cost and accurate real-time clock with a temperature compensation crystal oscillator. This range of chips offers the following functionality:
- Temperature compensation
- Battery backup
- I2C (DS3231) and SPI (DS3234) interfaces.
- Two programmable alarms
- 32.768 KHz square wave output
Code Example
Ds3231 sensor;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
sensor = new Ds3231(Device.CreateI2cBus(), Device.Pins.D06);
sensor.OnAlarm1Raised += Sensor_OnAlarm1Raised;
return base.Initialize();
}
public override Task Run()
{
sensor.CurrentDateTime = new DateTime(2020, 1, 1);
Resolver.Log.Info($"Current time: {sensor.CurrentDateTime}");
Resolver.Log.Info($"Temperature: {sensor.Temperature}");
sensor.ClearInterrupt(Ds323x.Alarm.BothAlarmsRaised);
sensor.SetAlarm(Ds323x.Alarm.Alarm1Raised,
new DateTime(2020, 1, 1, 1, 0, 0),
Ds323x.AlarmType.WhenSecondsMatch);
sensor.DisplayRegisters();
return base.Run();
}
private void Sensor_OnAlarm1Raised(object sender)
{
var rtc = (Ds3231)sender;
Resolver.Log.Info("Alarm 1 has been activated: " + rtc.CurrentDateTime.ToString("dd MMM yyyy HH:mm:ss"));
rtc.ClearInterrupt(Ds323x.Alarm.Alarm1Raised);
}
Sample project(s) available on GitHub
Wiring Example
The DS3231 real time clock module (see image below) requires only four (for simple timekeeping) or five (for alarms) connections
DS323x | Meadow Pin |
---|---|
VCC | 3.3V |
GND | GND |
SCK | SC |
SDA | SD |
Interrupt | SQW |
It should look like the following diagram:
The 32K pin outputs the 32,768 Hz clock signal from the module. This signal is only available when power is supplied by Vcc, it is not available when the module is on battery power.
The orange wire is only required if the alarms are being used to interrupt the Meadow.
EncodeDateTimeRegisters(DateTime)
Encode the a DateTime object into the format used by the DS323x chips.
Declaration
protected byte[] EncodeDateTimeRegisters(DateTime dt)
Parameters
Type | Name | Description |
---|---|---|
DateTime | dt | DateTime object to encode. |
Returns
Type | Description |
---|---|
byte[] | Bytes to send to the DS323x chip. |
Remarks
Ds323x | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
The DS323x is a low-cost and accurate real-time clock with a temperature compensation crystal oscillator. This range of chips offers the following functionality:
- Temperature compensation
- Battery backup
- I2C (DS3231) and SPI (DS3234) interfaces.
- Two programmable alarms
- 32.768 KHz square wave output
Code Example
Ds3231 sensor;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
sensor = new Ds3231(Device.CreateI2cBus(), Device.Pins.D06);
sensor.OnAlarm1Raised += Sensor_OnAlarm1Raised;
return base.Initialize();
}
public override Task Run()
{
sensor.CurrentDateTime = new DateTime(2020, 1, 1);
Resolver.Log.Info($"Current time: {sensor.CurrentDateTime}");
Resolver.Log.Info($"Temperature: {sensor.Temperature}");
sensor.ClearInterrupt(Ds323x.Alarm.BothAlarmsRaised);
sensor.SetAlarm(Ds323x.Alarm.Alarm1Raised,
new DateTime(2020, 1, 1, 1, 0, 0),
Ds323x.AlarmType.WhenSecondsMatch);
sensor.DisplayRegisters();
return base.Run();
}
private void Sensor_OnAlarm1Raised(object sender)
{
var rtc = (Ds3231)sender;
Resolver.Log.Info("Alarm 1 has been activated: " + rtc.CurrentDateTime.ToString("dd MMM yyyy HH:mm:ss"));
rtc.ClearInterrupt(Ds323x.Alarm.Alarm1Raised);
}
Sample project(s) available on GitHub
Wiring Example
The DS3231 real time clock module (see image below) requires only four (for simple timekeeping) or five (for alarms) connections
DS323x | Meadow Pin |
---|---|
VCC | 3.3V |
GND | GND |
SCK | SC |
SDA | SD |
Interrupt | SQW |
It should look like the following diagram:
The 32K pin outputs the 32,768 Hz clock signal from the module. This signal is only available when power is supplied by Vcc, it is not available when the module is on battery power.
The orange wire is only required if the alarms are being used to interrupt the Meadow.
SetAlarm(Alarm, DateTime, AlarmType)
Set one of the two alarms on the DS323x module.
Declaration
public void SetAlarm(Ds323x.Alarm alarm, DateTime time, Ds323x.AlarmType type)
Parameters
Type | Name | Description |
---|---|---|
Ds323x.Alarm | alarm | Define the alarm to be set. |
DateTime | time | Date and time for the alarm. |
Ds323x.AlarmType | type | Type of alarm to set. |
Remarks
Ds323x | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
The DS323x is a low-cost and accurate real-time clock with a temperature compensation crystal oscillator. This range of chips offers the following functionality:
- Temperature compensation
- Battery backup
- I2C (DS3231) and SPI (DS3234) interfaces.
- Two programmable alarms
- 32.768 KHz square wave output
Code Example
Ds3231 sensor;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
sensor = new Ds3231(Device.CreateI2cBus(), Device.Pins.D06);
sensor.OnAlarm1Raised += Sensor_OnAlarm1Raised;
return base.Initialize();
}
public override Task Run()
{
sensor.CurrentDateTime = new DateTime(2020, 1, 1);
Resolver.Log.Info($"Current time: {sensor.CurrentDateTime}");
Resolver.Log.Info($"Temperature: {sensor.Temperature}");
sensor.ClearInterrupt(Ds323x.Alarm.BothAlarmsRaised);
sensor.SetAlarm(Ds323x.Alarm.Alarm1Raised,
new DateTime(2020, 1, 1, 1, 0, 0),
Ds323x.AlarmType.WhenSecondsMatch);
sensor.DisplayRegisters();
return base.Run();
}
private void Sensor_OnAlarm1Raised(object sender)
{
var rtc = (Ds3231)sender;
Resolver.Log.Info("Alarm 1 has been activated: " + rtc.CurrentDateTime.ToString("dd MMM yyyy HH:mm:ss"));
rtc.ClearInterrupt(Ds323x.Alarm.Alarm1Raised);
}
Sample project(s) available on GitHub
Wiring Example
The DS3231 real time clock module (see image below) requires only four (for simple timekeeping) or five (for alarms) connections
DS323x | Meadow Pin |
---|---|
VCC | 3.3V |
GND | GND |
SCK | SC |
SDA | SD |
Interrupt | SQW |
It should look like the following diagram:
The 32K pin outputs the 32,768 Hz clock signal from the module. This signal is only available when power is supplied by Vcc, it is not available when the module is on battery power.
The orange wire is only required if the alarms are being used to interrupt the Meadow.
Events
OnAlarm1Raised
Event raised when Alarm1 is triggered.
Declaration
public event Ds323x.AlarmRaised OnAlarm1Raised
Event Type
Type | Description |
---|---|
Ds323x.AlarmRaised |
Remarks
Ds323x | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
The DS323x is a low-cost and accurate real-time clock with a temperature compensation crystal oscillator. This range of chips offers the following functionality:
- Temperature compensation
- Battery backup
- I2C (DS3231) and SPI (DS3234) interfaces.
- Two programmable alarms
- 32.768 KHz square wave output
Code Example
Ds3231 sensor;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
sensor = new Ds3231(Device.CreateI2cBus(), Device.Pins.D06);
sensor.OnAlarm1Raised += Sensor_OnAlarm1Raised;
return base.Initialize();
}
public override Task Run()
{
sensor.CurrentDateTime = new DateTime(2020, 1, 1);
Resolver.Log.Info($"Current time: {sensor.CurrentDateTime}");
Resolver.Log.Info($"Temperature: {sensor.Temperature}");
sensor.ClearInterrupt(Ds323x.Alarm.BothAlarmsRaised);
sensor.SetAlarm(Ds323x.Alarm.Alarm1Raised,
new DateTime(2020, 1, 1, 1, 0, 0),
Ds323x.AlarmType.WhenSecondsMatch);
sensor.DisplayRegisters();
return base.Run();
}
private void Sensor_OnAlarm1Raised(object sender)
{
var rtc = (Ds3231)sender;
Resolver.Log.Info("Alarm 1 has been activated: " + rtc.CurrentDateTime.ToString("dd MMM yyyy HH:mm:ss"));
rtc.ClearInterrupt(Ds323x.Alarm.Alarm1Raised);
}
Sample project(s) available on GitHub
Wiring Example
The DS3231 real time clock module (see image below) requires only four (for simple timekeeping) or five (for alarms) connections
DS323x | Meadow Pin |
---|---|
VCC | 3.3V |
GND | GND |
SCK | SC |
SDA | SD |
Interrupt | SQW |
It should look like the following diagram:
The 32K pin outputs the 32,768 Hz clock signal from the module. This signal is only available when power is supplied by Vcc, it is not available when the module is on battery power.
The orange wire is only required if the alarms are being used to interrupt the Meadow.
OnAlarm2Raised
Event raised when Alarm2 is triggered.
Declaration
public event Ds323x.AlarmRaised OnAlarm2Raised
Event Type
Type | Description |
---|---|
Ds323x.AlarmRaised |
Remarks
Ds323x | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
The DS323x is a low-cost and accurate real-time clock with a temperature compensation crystal oscillator. This range of chips offers the following functionality:
- Temperature compensation
- Battery backup
- I2C (DS3231) and SPI (DS3234) interfaces.
- Two programmable alarms
- 32.768 KHz square wave output
Code Example
Ds3231 sensor;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
sensor = new Ds3231(Device.CreateI2cBus(), Device.Pins.D06);
sensor.OnAlarm1Raised += Sensor_OnAlarm1Raised;
return base.Initialize();
}
public override Task Run()
{
sensor.CurrentDateTime = new DateTime(2020, 1, 1);
Resolver.Log.Info($"Current time: {sensor.CurrentDateTime}");
Resolver.Log.Info($"Temperature: {sensor.Temperature}");
sensor.ClearInterrupt(Ds323x.Alarm.BothAlarmsRaised);
sensor.SetAlarm(Ds323x.Alarm.Alarm1Raised,
new DateTime(2020, 1, 1, 1, 0, 0),
Ds323x.AlarmType.WhenSecondsMatch);
sensor.DisplayRegisters();
return base.Run();
}
private void Sensor_OnAlarm1Raised(object sender)
{
var rtc = (Ds3231)sender;
Resolver.Log.Info("Alarm 1 has been activated: " + rtc.CurrentDateTime.ToString("dd MMM yyyy HH:mm:ss"));
rtc.ClearInterrupt(Ds323x.Alarm.Alarm1Raised);
}
Sample project(s) available on GitHub
Wiring Example
The DS3231 real time clock module (see image below) requires only four (for simple timekeeping) or five (for alarms) connections
DS323x | Meadow Pin |
---|---|
VCC | 3.3V |
GND | GND |
SCK | SC |
SDA | SD |
Interrupt | SQW |
It should look like the following diagram:
The 32K pin outputs the 32,768 Hz clock signal from the module. This signal is only available when power is supplied by Vcc, it is not available when the module is on battery power.
The orange wire is only required if the alarms are being used to interrupt the Meadow.