Author | Rob Jansen, Copyright © 2021..2021, all rights reserved. |
Adapted-by | |
Compiler | 2.5r5 |
Library for controlling the SD3231 Real Time Clock IC. The chip uses an IIC interface. The library provides all functions and procedures to support the rtc_common.jal library and includes extra functions and procedures specific for the DS3231. For all common rtc procedures and functions see rtc_common.jal.
Maxim datasheet rtc. 19-5170; Rev 10; 3/15
This library supports the control of the DS3231 via IIC. The default is hardware IIC control but this can be overruled using software IIC control by defining the following constant: -) const RTC_SOFTWARE_IIC = TRUE
const byte RTC_SQUARE_WAVE_8_KHZ = 0b0001_1000
const byte RTC_ALARM_1_SECONDS_ADDRESS = 0x07
const byte RTC_ALARM_2_DAY_DATE_ADDRESS = 0x0D
const RTC_HW = 3231
const byte RTC_STATUS_ADDRESS = 0x0F
const byte RTC_TIME_SECONDS_ADDRESS = 0x00
const byte RTC_SQUARE_WAVE_1_HZ = 0b0000_0000
const byte RTC_IIC_WR_ADDRESS = 0b1101_0000
const byte RTC_TIME_YEAR_ADDRESS = 0x06
const byte RTC_IIC_RD_ADDRESS = 0b1101_0001
const byte RTC_ALARM_1_DATE_HOUR_MIN_SEC_MATCH = 4
const byte RTC_ALARM_2_ONCE_PER_MIN = 0
const byte RTC_SQUARE_WAVE_1_KHZ = 0b0000_1000
const byte RTC_SQUARE_WAVE_4_KHZ = 0b0001_0000
const byte RTC_ALARM_1_DAY_DATE_ADDRESS = 0x0A
const byte RTC_TIME_HOUR_ADDRESS = 0x02
const byte RTC_ALARM_1_MINUTES_ADDRESS = 0x08
const byte RTC_ALARM_1_SEC_MATCH = 1
const byte RTC_AGING_ADDRESS = 0x10
const byte RTC_TIME_DATE_ADDRESS = 0x04
const byte RTC_ALARM_1_ONCE_PER_SEC = 0
const byte RTC_ALARM_1_HOUR_MIN_SEC_MATCH = 3
const byte RTC_ALARM_1_HOUR_ADDRESS = 0x09
const byte RTC_ALARM_2_MIN_MATCH = 1
const byte RTC_TIME_MINUTES_ADDRESS = 0x01
const word _i2c_bus_speed = 4
const byte RTC_CONTROL_ADDRESS = 0x0E
const byte RTC_TIME_DAY_ADDRESS = 0x03
const byte RTC_ALARM_1_MIN_SEC_MATCH = 2
const byte RTC_ALARM_2_HOUR_MIN_MATCH = 2
const byte RTC_ALARM_2_HOUR_ADDRESS = 0x0C
const byte RTC_ALARM_1_DAY_HOUR_MIN_SEC_MATCH = 5
const byte RTC_TEMP_MSB_ADDRESS = 0x11
const byte RTC_ALARM_2_MINUTES_ADDRESS = 0x0B
const byte RTC_ALARM_2_DATE_HOUR_MIN_MATCH = 3
const byte RTC_TEMP_LSB_ADDRESS = 0x12
const byte RTC_TIME_MONTH_ADDRESS = 0x05
const byte RTC_ALARM_2_DAY_HOUR_MIN_MATCH = 4
rtc_write_month(byte in month)
rtc_write_full_year(word in year)
rtc_set_square_wave(byte in frequency)
rtc_set_alarm_1_day(byte in day)
rtc_alarm_1_flag'put(bit in set_flag)
rtc_alarm_2_flag'put(bit in set_flag)
rtc_write_register(byte in register, byte in data)
rtc_write_hour(byte in hour)
rtc_write_minute(byte in minute)
rtc_disable_alarm_2_interrupt()
rtc_enable_alarm_1_interrupt()
rtc_write_year(byte in year)
rtc_disable_32_khz()
rtc_init()
rtc_set_alarm_2_time_bin(byte in hour, byte in minutes)
rtc_set_alarm_1_time_bin(byte in hour, byte in minutes, byte in seconds)
rtc_set_alarm_1_date(byte in date)
rtc_enable_32_khz()
rtc_disable_alarm_1_interrupt()
rtc_read_register(byte in register, byte out data)
rtc_set_alarm_1_rate(byte in rate)
rtc_enable_alarm_2_interrupt()
rtc_set_alarm_1_time_bcd(byte in hour, byte in minutes, byte in seconds)
rtc_write_dayofweek(byte in dayofweek)
rtc_set_alarm_2_rate(byte in rate)
rtc_stop()
rtc_start()
rtc_write_second(byte in second)
rtc_write_dayofmonth(byte in dayofmonth)
rtc_set_alarm_2_time_bcd(byte in hour, byte in minutes)
rtc_alarm_1_flag'get() return bit
rtc_read_hour() return byte
rtc_read_dayofmonth() return byte
rtc_read_year() return byte
rtc_read_month() return byte
rtc_read_second() return byte
rtc_read_dayofweek() return byte
rtc_read_minute() return byte
rtc_alarm_2_flag'get() return bit
rtc_read_full_year() return word
const byte RTC_SQUARE_WAVE_8_KHZ = 0b0001_1000
No documentation found
const byte RTC_ALARM_1_SECONDS_ADDRESS = 0x07
No documentation found
const byte RTC_ALARM_2_DAY_DATE_ADDRESS = 0x0D
No documentation found
const RTC_HW = 3231
Realtime clock hardware identification needed for the rtc_common.jal library,
const byte RTC_STATUS_ADDRESS = 0x0F
No documentation found
const byte RTC_TIME_SECONDS_ADDRESS = 0x00
Address constants of the RTC rtc chip. Shown here in case the user wants to write the register using the advanced procedures to control the registers.
const byte RTC_SQUARE_WAVE_1_HZ = 0b0000_0000
Sqare wave frequency definitions.
const byte RTC_IIC_WR_ADDRESS = 0b1101_0000
IIC address, read and write
const byte RTC_TIME_YEAR_ADDRESS = 0x06
No documentation found
const byte RTC_IIC_RD_ADDRESS = 0b1101_0001
No documentation found
const byte RTC_ALARM_1_DATE_HOUR_MIN_SEC_MATCH = 4
No documentation found
const byte RTC_ALARM_2_ONCE_PER_MIN = 0
Alarm rates of alarm 2.
const byte RTC_SQUARE_WAVE_1_KHZ = 0b0000_1000
No documentation found
const byte RTC_SQUARE_WAVE_4_KHZ = 0b0001_0000
No documentation found
const byte RTC_ALARM_1_DAY_DATE_ADDRESS = 0x0A
No documentation found
const byte RTC_TIME_HOUR_ADDRESS = 0x02
No documentation found
const byte RTC_ALARM_1_MINUTES_ADDRESS = 0x08
No documentation found
const byte RTC_ALARM_1_SEC_MATCH = 1
No documentation found
const byte RTC_AGING_ADDRESS = 0x10
No documentation found
const byte RTC_TIME_DATE_ADDRESS = 0x04
No documentation found
const byte RTC_ALARM_1_ONCE_PER_SEC = 0
Alarm rates of alarm 1.
const byte RTC_ALARM_1_HOUR_MIN_SEC_MATCH = 3
No documentation found
const byte RTC_ALARM_1_HOUR_ADDRESS = 0x09
No documentation found
const byte RTC_ALARM_2_MIN_MATCH = 1
No documentation found
const byte RTC_TIME_MINUTES_ADDRESS = 0x01
No documentation found
const word _i2c_bus_speed = 4
Use IIC control. Set the clock speed to 400kHz which is the absolute maximum for this chip.
const byte RTC_CONTROL_ADDRESS = 0x0E
No documentation found
const byte RTC_TIME_DAY_ADDRESS = 0x03
No documentation found
const byte RTC_ALARM_1_MIN_SEC_MATCH = 2
No documentation found
const byte RTC_ALARM_2_HOUR_MIN_MATCH = 2
No documentation found
const byte RTC_ALARM_2_HOUR_ADDRESS = 0x0C
No documentation found
const byte RTC_ALARM_1_DAY_HOUR_MIN_SEC_MATCH = 5
No documentation found
const byte RTC_TEMP_MSB_ADDRESS = 0x11
No documentation found
const byte RTC_ALARM_2_MINUTES_ADDRESS = 0x0B
No documentation found
const byte RTC_ALARM_2_DATE_HOUR_MIN_MATCH = 3
No documentation found
const byte RTC_TEMP_LSB_ADDRESS = 0x12
No documentation found
const byte RTC_TIME_MONTH_ADDRESS = 0x05
No documentation found
const byte RTC_ALARM_2_DAY_HOUR_MIN_MATCH = 4
No documentation found
rtc_write_month(byte in month)
Write month value in bcd notation to the rtc.
rtc_write_full_year(word in year)
Write year full value in bcd notation to the rtc. The high byte of the parameter contains the year hunderds in bcd, the low byte the tens years in bcd.
rtc_set_square_wave(byte in frequency)
Set the square wave frequency and output. Note: This will disable the interrupt functionality on the INT/SQW pin. The M version of the DS3231 can only generate the 1 Hz signal.
rtc_set_alarm_1_day(byte in day)
Set alarm 1 day (day of the week) in bcd notation.
rtc_alarm_1_flag'put(bit in set_flag)
No documentation found
rtc_alarm_2_flag'put(bit in set_flag)
No documentation found
rtc_write_register(byte in register, byte in data)
Write a byte to the given register of the SSD1306.
rtc_write_hour(byte in hour)
Write 24-hour value in bcd notation to the rtc.
rtc_write_minute(byte in minute)
Write minute value in bcd notation to the rtc.
rtc_disable_alarm_2_interrupt()
Disable alarm 2 interrupt. Note: This will also disable the square wave output on the INT/SQW pin.
rtc_enable_alarm_1_interrupt()
Enable alarm 1 interrupt. Note: This will disable the square wave output on the INT/SQW pin.
rtc_write_year(byte in year)
Write year value in bcd notation to the rtc.
rtc_disable_32_khz()
Disable the 32 kHz output pin.
rtc_init()
Intialize the rtc by initializing the IIC interface and setting the clock to 24-hour mode and setting the year above the year 2000. All the device interrupts will be disabled.
rtc_set_alarm_2_time_bin(byte in hour, byte in minutes)
Set alarm 2 time in hours and minutes in binary notation. Hours must be in 24-hours format. When the alarm time matches then rtc_alarm_2_flag will be set and must be cleared by the user.
rtc_set_alarm_1_time_bin(byte in hour, byte in minutes, byte in seconds)
Set alarm 1 time in hours, minutes and seconds in binary notation. Hours must be in 24-hours format. When the alarm time matches then rtc_alarm_1_flag will be set and must be cleared by the user.
rtc_set_alarm_1_date(byte in date)
Set alarm 1 date (day of the month) in bcd notation.
rtc_enable_32_khz()
Enable the 32 kHz output pin.
rtc_disable_alarm_1_interrupt()
Disable alarm 1 interrupt. Note: This will also disable the square wave output on the INT/SQW pin.
rtc_read_register(byte in register, byte out data)
Read a byte from the given register of the SSD1306.
rtc_set_alarm_1_rate(byte in rate)
Set alarm 1 rate according to the given parameter. Note: When using RTC_ALARM_1_DATE_HOUR_MIN_SEC_MATCH or RTC_ALARM_1_DAY_HOUR_MIN_SEC_MATCH make sure to have set the alarm date or alarm day accordingly.
rtc_enable_alarm_2_interrupt()
Enable alarm 2 interrupt. Note: This will disable the square wave output on the INT/SQW pin.
rtc_set_alarm_1_time_bcd(byte in hour, byte in minutes, byte in seconds)
Set alarm 1 time in hours, minutes and seconds in bcd notation. Hours must be in 24-hours format. When the alarm time matches then rtc_alarm_1_flag will be set and must be cleared by the user.
rtc_write_dayofweek(byte in dayofweek)
Write day of week value to the rtc.
rtc_set_alarm_2_rate(byte in rate)
Set alarm 2 rate according to the given parameter. Note: When using RTC_ALARM_2_DATE_HOUR_MIN_MATCH or RTC_ALARM_2_DAY_HOUR_MIN_MATCH make sure to have set the alarm date or alarm day accordingly.
rtc_stop()
Stop the rtc.
rtc_start()
Start the rtc.
rtc_write_second(byte in second)
Write second value in bcd notation to the rtc.
rtc_write_dayofmonth(byte in dayofmonth)
Write day of month value in bcd notation to the rtc.
rtc_set_alarm_2_time_bcd(byte in hour, byte in minutes)
Set alarm 2 time in hours and minutes in bcd notation. Hours must be in 24-hours format. When the alarm time matches then rtc_alarm_2_flag will be set and must be cleared by the user.
rtc_alarm_1_flag'get() return bit
Alarm 1 flag pseudo variables
rtc_read_hour() return byte
Read hour value from rtc in 24-hour bcd notation.
rtc_read_dayofmonth() return byte
Read day of month value from rtc in bcd notation.
rtc_read_year() return byte
Read year value from rtc in bcd notation.
rtc_read_month() return byte
Read month value from rtc in bcd notation.
rtc_read_second() return byte
Read second value from rtc in bcd notation.
rtc_read_dayofweek() return byte
Read day of week value from rtc. Note: In rct_common.jal this is calculated using rtc_calc_dayofweek()
rtc_read_minute() return byte
Read minute value from rtc in bcd notation.
rtc_alarm_2_flag'get() return bit
Alarm 2 flag pseudo variables
rtc_read_full_year() return word
Read the full year value from rtc in bcd notation. The high byte of the return value contains the year hunderds in bcd, the low byte the tens years in bcd.
16f1825 | 16f1825_rtc_ds3231.jal |