61#define TR_HAL_RTC_YEAR_MINIMUM 2000
62#define TR_HAL_RTC_YEAR_MAXIMUM 2099
64#define TR_HAL_RTC_MONTH_MINIMUM 1
65#define TR_HAL_RTC_MONTH_MAXIMUM 12
67#define TR_HAL_RTC_DAY_MINIMUM 1
68#define TR_HAL_RTC_DAY_MAXIMUM 31
70#define TR_HAL_RTC_SHORT_MONTH_DAY_MAXIMUM 30
71#define TR_HAL_RTC_FEB_DAY_MAXIMUM 28
72#define TR_HAL_RTC_FEB_LEAP_YEAR_DAY_MAXIMUM 29
74#define TR_HAL_RTC_HOUR_MINIMUM 0
75#define TR_HAL_RTC_HOUR_MAXIMUM 23
77#define TR_HAL_RTC_MINUTE_MINIMUM 0
78#define TR_HAL_RTC_MINUTE_MAXIMUM 59
80#define TR_HAL_RTC_SECOND_MINIMUM 0
81#define TR_HAL_RTC_SECOND_MAXIMUM 59
83#define TR_HAL_RTC_MILLISECOND_MINIMUM 0
84#define TR_HAL_RTC_MILLISECOND_MAXIMUM 999
90#define TR_HAL_MONTH_JANUARY 1
91#define TR_HAL_MONTH_FEBRUARY 2
92#define TR_HAL_MONTH_MARCH 3
93#define TR_HAL_MONTH_APRIL 4
94#define TR_HAL_MONTH_MAY 5
95#define TR_HAL_MONTH_JUNE 6
96#define TR_HAL_MONTH_JULY 7
97#define TR_HAL_MONTH_AUGUST 8
98#define TR_HAL_MONTH_SEPTEMBER 9
99#define TR_HAL_MONTH_OCTOBER 10
100#define TR_HAL_MONTH_NOVEMBER 11
101#define TR_HAL_MONTH_DECEMBER 12
154#define TR_HAL_INVALID_DATE_TIME_VALUE 255
202 #define CHIP_MEMORY_MAP_RTC_BASE (0x50004000UL)
204 #define CHIP_MEMORY_MAP_RTC_BASE (0x40004000UL)
215 __IO uint32_t seconds_value;
216 __IO uint32_t minutes_value;
217 __IO uint32_t hours_value;
218 __IO uint32_t days_value;
219 __IO uint32_t months_value;
220 __IO uint32_t years_value;
223 __IO uint32_t control;
226 __IO uint32_t clock_divisor;
230 __IO uint32_t seconds_event_trigger;
231 __IO uint32_t minutes_event_trigger;
232 __IO uint32_t hours_event_trigger;
233 __IO uint32_t days_event_trigger;
234 __IO uint32_t months_event_trigger;
235 __IO uint32_t years_event_trigger;
238 __IO uint32_t interrupt_enable;
239 __IO uint32_t interrupt_status;
240 __IO uint32_t interrupt_clear;
256#define TR_HAL_RTC_CONTROL_REG_ENABLE_BIT 0x100
275#define TR_HAL_DEFAULT_CLOCK_DIVISOR 2110000
280#define TR_HAL_REG_SETTING_EVENT_OFF 0x0000
281#define TR_HAL_REG_SETTING_EVENT_ON_CHANGE 0x0100
282#define TR_HAL_REG_SETTING_EVENT_ON_VALUE 0x0000
283#define TR_HAL_REG_SETTING_COMBO_EVENT 0x0200
289#define TR_HAL_RTC_INTERRUPT_NONE 0x00
290#define TR_HAL_RTC_INTERRUPT_SECONDS 0x01
291#define TR_HAL_RTC_INTERRUPT_MINUTES 0x02
292#define TR_HAL_RTC_INTERRUPT_HOURS 0x04
293#define TR_HAL_RTC_INTERRUPT_DAYS 0x08
294#define TR_HAL_RTC_INTERRUPT_MONTHS 0x10
295#define TR_HAL_RTC_INTERRUPT_YEARS 0x20
296#define TR_HAL_RTC_INTERRUPT_COMBINED_EVENT 0x40
297#define TR_HAL_RTC_INTERRUPT_MILLISECONDS 0x80
298#define TR_HAL_RTC_INTERRUPT_ALL 0xFF
303#define TR_HAL_RTC_UPDATE_TIME_VALUES 0x01
304#define TR_HAL_RTC_UPDATE_EVENT_TRIGGER 0x02
305#define TR_HAL_RTC_UPDATE_CLOCK_DIVISOR 0x04
312#define RTC_REGISTERS ((RTC_REGISTERS_T *) CHIP_MEMORY_MAP_RTC_BASE)
334#define TR_HAL_RTC_EVENT_TRIGGERED_SECONDS 0x00000001
335#define TR_HAL_RTC_EVENT_TRIGGERED_MINUTES 0x00000002
336#define TR_HAL_RTC_EVENT_TRIGGERED_HOURS 0x00000004
337#define TR_HAL_RTC_EVENT_TRIGGERED_DAYS 0x00000008
338#define TR_HAL_RTC_EVENT_TRIGGERED_MONTHS 0x00000010
339#define TR_HAL_RTC_EVENT_TRIGGERED_YEARS 0x00000020
340#define TR_HAL_RTC_EVENT_TRIGGERED_COMBINED_EVENT 0x00000040
341#define TR_HAL_RTC_EVENT_TRIGGERED_MILLISECONDS 0x00000080
349#define TR_HAL_RTC_MILLISECOND_TRIGGER_OFF_VALUE 1001
350#define TR_HAL_RTC_SECOND_TRIGGER_OFF_VALUE 62
351#define TR_HAL_RTC_MINUTE_TRIGGER_OFF_VALUE 62
352#define TR_HAL_RTC_HOUR_TRIGGER_OFF_VALUE 25
353#define TR_HAL_RTC_DAY_TRIGGER_OFF_VALUE 32
354#define TR_HAL_RTC_MONTH_TRIGGER_OFF_VALUE 0
355#define TR_HAL_RTC_YEAR_TRIGGER_OFF_VALUE 0
368 uint32_t clock_divisor;
379 bool enable_chip_interrupts;
387 bool wake_on_interrupt;
393 uint8_t seconds_trigger_value;
395 uint8_t minutes_trigger_value;
397 uint8_t hours_trigger_value;
399 uint8_t days_trigger_value;
401 uint8_t months_trigger_value;
403 uint16_t years_trigger_value;
409 bool combo_event_enabled;
423#define DEFAULT_RTC_CONFIG \
425 .rtc_date_time.time.milliseconds = 0, \
426 .rtc_date_time.time.seconds = 0, \
427 .rtc_date_time.time.minutes = 0, \
428 .rtc_date_time.time.hours = 0, \
429 .rtc_date_time.date.days = 1, \
430 .rtc_date_time.date.months = 1, \
431 .rtc_date_time.date.years = 2025, \
432 .clock_divisor = TR_HAL_DEFAULT_CLOCK_DIVISOR, \
433 .event_handler_fx = NULL, \
434 .enable_chip_interrupts = true, \
435 .interrupt_priority = TR_HAL_INTERRUPT_PRIORITY_5, \
436 .wake_on_interrupt = false, \
437 .seconds_event_trigger = TR_HAL_EVENT_TRIGGER_OFF, \
438 .minutes_event_trigger = TR_HAL_EVENT_TRIGGER_OFF, \
439 .hours_event_trigger = TR_HAL_EVENT_TRIGGER_OFF, \
440 .days_event_trigger = TR_HAL_EVENT_TRIGGER_OFF, \
441 .months_event_trigger = TR_HAL_EVENT_TRIGGER_OFF, \
442 .years_event_trigger = TR_HAL_EVENT_TRIGGER_OFF, \
443 .milliseconds_event_trigger = TR_HAL_EVENT_TRIGGER_OFF, \
444 .combo_event_enabled = false, \
tr_hal_status_t
Definition tr_hal_common.h:25
tr_hal_rtc_speedup_unit_t
Definition T32CM11_rtc.h:241
tr_hal_rtc_event_trigger_t
this enum is the trigger setting for time unit events OFF = not enabled ON_CHANGE = whenever the time...
Definition T32CM11_rtc.h:176
uint32_t convert_int_to_bcd(uint32_t int_value)
void(* tr_hal_rtc_event_callback_t)(uint32_t event_bitmask, tr_hal_rtc_date_time current_date_time)
Definition T32CZ20_rtc.h:325
tr_hal_rtc_speedup_unit_t
Definition T32CZ20_rtc.h:259
tr_hal_rtc_event_trigger_t
this enum is the trigger setting for time unit events OFF = not enabled ON_CHANGE = whenever the time...
Definition T32CZ20_rtc.h:183
uint32_t convert_bcd_to_int(uint32_t register_value)
RTC_REGISTERS_T * tr_hal_rtc_get_register_address(void)
tr_hal_rtc_time_unit_t
this enum is used when we set up a time unit event, to tell which units we are using
Definition T32CZ20_rtc.h:162
tr_hal_status_t tr_hal_rtc_speedup_for_testing(tr_hal_rtc_speedup_unit_t speedup_unit)
@ TR_HAL_RTC_SPEEDUP_YEARS
Definition T32CZ20_rtc.h:265
@ TR_HAL_RTC_SPEEDUP_MINUTES
Definition T32CZ20_rtc.h:261
@ TR_HAL_RTC_SPEEDUP_NONE
Definition T32CZ20_rtc.h:260
@ TR_HAL_RTC_SPEEDUP_HOURS
Definition T32CZ20_rtc.h:262
@ TR_HAL_RTC_SPEEDUP_DAYS
Definition T32CZ20_rtc.h:263
@ TR_HAL_RTC_SPEEDUP_MONTHS
Definition T32CZ20_rtc.h:264
@ TR_HAL_EVENT_TRIGGER_OFF
Definition T32CZ20_rtc.h:184
@ TR_HAL_EVENT_TRIGGER_INVALID
Definition T32CZ20_rtc.h:187
@ TR_HAL_EVENT_TRIGGER_ON_SPECIFIC_VALUE
Definition T32CZ20_rtc.h:186
@ TR_HAL_EVENT_TRIGGER_ON_UNIT_CHANGE
Definition T32CZ20_rtc.h:185
@ TR_HAL_RTC_TIME_UNIT_MONTHS
Definition T32CZ20_rtc.h:168
@ TR_HAL_RTC_TIME_UNIT_MINUTES
Definition T32CZ20_rtc.h:165
@ TR_HAL_RTC_TIME_UNIT_INVALID
Definition T32CZ20_rtc.h:170
@ TR_HAL_RTC_TIME_UNIT_YEARS
Definition T32CZ20_rtc.h:169
@ TR_HAL_RTC_TIME_UNIT_MILLISECONDS
Definition T32CZ20_rtc.h:163
@ TR_HAL_RTC_TIME_UNIT_DAYS
Definition T32CZ20_rtc.h:167
@ TR_HAL_RTC_TIME_UNIT_SECONDS
Definition T32CZ20_rtc.h:164
@ TR_HAL_RTC_TIME_UNIT_HOURS
Definition T32CZ20_rtc.h:166
the struct we use so we can address registers using field names
Definition T32CM11_rtc.h:201
__IO uint32_t milliseconds_value
Definition T32CZ20_rtc.h:247
__IO uint32_t milliseconds_event_trigger
Definition T32CZ20_rtc.h:248
Definition T32CM11_rtc.h:135
convenience structs for use when passing around dates, times, or both
Definition T32CM11_rtc.h:107
Definition T32CM11_rtc.h:327
uint16_t milliseconds_trigger_value
Definition T32CZ20_rtc.h:405
tr_hal_rtc_event_trigger_t milliseconds_event_trigger
Definition T32CZ20_rtc.h:404
Definition T32CM11_rtc.h:121
uint16_t milliseconds
Definition T32CZ20_rtc.h:135