Unit DS1307
From Ultibo.org
Return to Unit Reference
Description
The Maxim DS1307 is an I2C interface, battery backed real time clock chip with full BCD clock and calendar and 56 bytes of software accessible NVRAM. The chip supports 12 or 24 hour format and is widely used in low cost RTC devices available from a range of suppliers.
This driver extends the real time clock API to include functions for directly reading and writing the NVRAM which could be used for storing device specific information and configuration or for non volatile storage of keys, passwords or tokens.
Constants
DS1307 specific constants
DS1307_*
DS1307_RTC_DESCRIPTION = 'Maxim DS1307 Real Time Clock';
|
Description of DS1307 device |
DS1307_MIN_TIME = 125911584000000000;
|
Time starts at 01/01/2000 00:00:00 (MM/DD/YY HH:MM:SS) |
DS1307_MAX_TIME = 157469183990000000;
|
Time ends at 12/31/2099 23:59:59 (MM/DD/YY HH:MM:SS) |
DS1307 chip constants
DS1307_CHIP_*
DS1307_CHIP_DS1307 = 0;
|
|
DS1307_CHIP_DS1337 = 1;
|
|
DS1307_CHIP_DS1338 = 2;
|
|
DS1307_CHIP_DS1339 = 3;
|
|
DS1307_CHIP_DS1340 = 4;
|
|
DS1307_CHIP_DS1388 = 5;
|
|
DS1307_CHIP_DS3231 = 6;
|
|
DS1307_CHIP_M41T00 = 7;
|
|
DS1307_CHIP_MCP794XX = 8;
|
|
DS1307_CHIP_RX8025 = 9;
|
DS1307 RTC register constants
DS1307_REG_*
DS1307_REG_SECONDS = $00;
|
00-59 |
DS1307_REG_MINUTE = $01;
|
00-59 |
DS1307_REG_HOUR = $02;
|
00-23 (or 1-12am,pm) |
DS1307_REG_WEEKDAY = $03;
|
01-07 |
DS1307_REG_DAY = $04;
|
01-31 |
DS1307_REG_MONTH = $05;
|
01-12 |
DS1307_REG_YEAR = $06;
|
00-99 |
DS1307 control and status register constants
DS1307_REG_*
DS1307_REG_CONTROL = $07;
|
Also DS1338 |
DS1337_REG_CONTROL = $0e;
|
|
DS1340_REG_CONTROL = $07;
|
|
DS1340_REG_FLAG = $09;
|
|
DS1337_REG_STATUS = $0f;
|
|
DS1339_REG_ALARM1_SECONDS = $07;
|
|
RX8025_REG_CONTROL1 = $0e;
|
|
RX8025_REG_CONTROL2 = $0f;
|
DS1307 seconds register constants
DS1307_REG_SECONDS_*
DS1307_REG_SECONDS_CH = $80;
|
Clock Halt bit (1 to Disable / 0 to Enable the clock) |
DS1340_REG_SECONDS_nEOSC = $80;
|
|
MCP794XX_REG_SECONDS_ST = $80;
|
Clock Stop Bit (1 to Enable / 0 to Disable the clock) |
DS1307 hour register constants
DS1307_REG_HOUR_*
DS1307_REG_HOUR_12HR = $40;
|
12/24 hour bit (1 = 12 hour mode / 0 = 24 hour mode) |
DS1307_REG_HOUR_PM = $20;
|
AM/PM bit (1 = PM / 0 = AM) (Only in 12 hour mode) |
DS1340_REG_HOUR_CENTURY_EN = $80;
|
|
DS1340_REG_HOUR_CENTURY = $40;
|
MCP794XX weekday register constants
MCP794XX_REG_WEEKDAY_*
MCP794XX_REG_WEEKDAY_VBATEN = $08;
|
Battery Backup Enabled (1 to Enable / 0 to Disable) |
DS1337 month register constants
DS1337_REG_MONTH_*
DS1337_REG_MONTH_CENTURY = $80;
|
DS1307 control register constants
DS1307_REG_CONTROL_*
DS1307_REG_CONTROL_OUT = $80;
|
Output Control (Output level of SQW/OUT pin when SQWE = 0) |
DS1338_REG_CONTROL_OSF = $20;
|
|
DS1307_REG_CONTROL_SQWE = $10;
|
Square-Wave Enable (When set to 1, enables the oscillator output) |
DS1307_REG_CONTROL_RS1 = $02;
|
Rate Select 1 (See datasheet for values) |
DS1307_REG_CONTROL_RS0 = $01;
|
Rate Select 2 (See datasheet for values) |
DS1337 control register constants
DS1337_REG_CONTROL_*
DS1337_REG_CONTROL_nEOSC = $80;
|
|
DS1339_REG_CONTROL_BBSQI = $20;
|
|
DS3231_REG_CONTROL_BBSQW = $40;
|
same as BBSQI |
DS1337_REG_CONTROL_RS2 = $10;
|
|
DS1337_REG_CONTROL_RS1 = $08;
|
|
DS1337_REG_CONTROL_INTCN = $04;
|
|
DS1337_REG_CONTROL_A2IE = $02;
|
|
DS1337_REG_CONTROL_A1IE = $01;
|
DS1340 control register constants
DS1340_REG_CONTROL_*
DS1340_REG_CONTROL_OUT = $80;
|
|
DS1340_REG_CONTROL_FT = $40;
|
|
DS1340_REG_CONTROL_CALIB_SIGN = $20;
|
|
DS1340_REG_CONTROL_M_CALIBRATION = $1f;
|
DS1340 flag register constants
DS1340_REG_FLAG_*
DS1340_REG_FLAG_OSF = $80;
|
DS1337 status register constants
DS1337_REG_STATUS_*
DS1337_REG_STATUS_OSF = $80;
|
|
DS1337_REG_STATUS_A2I = $02;
|
|
DS1337_REG_STATUS_A1I = $01;
|
RX8025 control1 register constants
RX8025_REG_CONTROL1_*
RX8025_REG_CONTROL1_2412 = $20;
|
RX8025 control2 register constants
RX8025_REG_CONTROL2_*
RX8025_REG_CONTROL2_PON = $10;
|
|
RX8025_REG_CONTROL2_VDET = $40;
|
|
RX8025_REG_CONTROL2_XST = $20;
|
Type definitions
To be documented
Public variables
To be documented
Function declarations
Initialization functions
procedure DS1307Init;
Description: To be documented
Note | None documented |
---|
DS1307 RTC functions
function DS1307RTCStart(RTC:PRTCDevice):LongWord;
Description: To be documented
Note | None documented |
---|
function DS1307RTCStop(RTC:PRTCDevice):LongWord;
Description: To be documented
Note | None documented |
---|
function DS1307RTCGetTime(RTC:PRTCDevice):Int64;
Description: To be documented
Note | None documented |
---|
function DS1307RTCSetTime(RTC:PRTCDevice; const Time:Int64):Int64;
Description: To be documented
Note | None documented |
---|
DS1307 helper functions
function DS1307ReadRTC(RTC:PRTCDevice; Buffer:Pointer; Size:LongWord):LongWord;
Description: To be documented
Note | None documented |
---|
function DS1307WriteRTC(RTC:PRTCDevice; Buffer:Pointer; Size:LongWord):LongWord;
Description: To be documented
Note | None documented |
---|
function DS1307ReadNVRAM(RTC:PRTCDevice; Offset:Byte; Buffer:Pointer; Size:LongWord):LongWord;
Description: To be documented
Note | None documented |
---|
function DS1307WriteNVRAM(RTC:PRTCDevice; Offset:Byte; Buffer:Pointer; Size:LongWord):LongWord;
Description: To be documented
Note | None documented |
---|
function DS1307ReadControl(RTC:PRTCDevice; var Control:Byte):LongWord;
Description: To be documented
Note | None documented |
---|
function DS1307WriteControl(RTC:PRTCDevice; Control:Byte):LongWord;
Description: To be documented
Note | None documented |
---|
function DS1307DefaultRTCTime(RTC:PRTCDevice; Buffer:Pointer; Size:LongWord):Boolean;
Description: To be documented
Note | None documented |
---|
function DS1307FileTimeToRTCTime(RTC:PRTCDevice; const FileTime:Int64; Buffer:Pointer; Size:LongWord):Boolean;
Description: To be documented
Note | None documented |
---|
function DS1307RTCTimeToFileTime(RTC:PRTCDevice; Buffer:Pointer; Size:LongWord; var FileTime:Int64):Boolean;
Description: To be documented
Note | None documented |
---|
Return to Unit Reference