EU1KY AA
RTC.h
Go to the documentation of this file.
1 /* Definitions for RTC Module */
2 
3 
4 //Miscellaneous
5 
6 #define enable 0x01
7 #define disable 0x00
8 
9 #define true 0x01
10 #define false 0x00
11 
12 #define high 0x01
13 #define low 0x00
14 
15 
16 //Bitwise Operations
17 
18 #define bit_set(reg, bit_val) reg |= (1 << bit_val)
19 #define bit_clr(reg, bit_val) reg &= (~(1 << bit_val))
20 #define bit_tgl(reg, bit_val) reg ^= (1 << bit_val)
21 #define get_bit(reg, bit_val) (reg & (1 << bit_val))
22 #define get_reg(reg, msk) (reg & msk)
23 
24 
25 //Definitions for RTC Control Registers
26 
27 #define enable_RTC_overflow_interrupt(mode) RTC_CRHbits.OWIE = mode
28 #define enable_RTC_alarm_interrupt(mode) RTC_CRHbits.ALRIE = mode
29 #define enable_RTC_second_interrupt(mode) RTC_CRHbits.SECIE = mode
30 
31 #define get_RTC_operation_state() get_bit(RTC_CRL, 5)
32 
33 #define get_RTC_configuration_state() get_bit(RTC_CRL, 4)
34 #define set_RTC_configuration_flag(mode) RTC_CRLbits.CNF = mode
35 
36 #define get_RTC_register_sync_state() get_bit(RTC_CRL, 3)
37 #define clear_RTC_register_sync_state_flag() bit_clr(RTC_CRL, 3)
38 
39 #define get_RTC_overflow_flag_state() get_bit(RTC_CRL, 2)
40 #define clear_RTC_overflow_flag() bit_clr(RTC_CRL, 2)
41 
42 #define get_RTC_alarm_flag_state() get_bit(RTC_CRL, 1)
43 #define clear_RTC_alarm_flag() bit_clr(RTC_CRL, 1)
44 
45 #define get_RTC_second_flag_state() get_bit(RTC_CRL, 0)
46 #define clear_RTC_second_flag() bit_clr(RTC_CRL, 0)
47 
48 
49 //Definitions for RTC Prescalar Load Registers
50 
51 #define set_RTC_prescalar(value) do{RTC_PRLL = 0; RTC_PRLH = 0; RTC_PRLL = (0xFFFF & value); RTC_PRLH = (value >> 16); }while(0)
52 
53 
54 //Definitions for RTC Prescalar Divider Registers
55 
56 #define set_RTC_prescalar_divider(value) do{RTC_DIVL = 0; RTC_DIVH = 0; RTC_DIVL = (0xFFFF & value); RTC_DIVH = (value >> 16); }while(0)
57 
58 
59 //Definitions for RTC Counter Registers
60 
61 #define set_RTC_counter(value) do{RTC_CNTL = 0; RTC_CNTH = 0; RTC_CNTL = (0xFFFF & value); RTC_CNTH = (value >> 16); }while(0)
62 
63 
64 //Definitions for RTC Alarm Registers
65 
66 #define set_RTC_alarm(value) do{RTC_ALRL = 0; RTC_ALRH = 0; RTC_ALRL = (0xFFFF & value); RTC_ALRH = (value >> 16); }while(0)
67 
68 
69 //Other defintions (related to RCC)
70 
71 #define enable_LSI(mode) RCC_CSRbits.LSION = mode
72 #define LSI_ready() get_bit(RCC_CSR, 1)
73 
74 #define set_backup_domain_software_reset(mode) RCC_BDCRbits.BDRST = mode
75 #define enable_RTC_clock(mode) RCC_BDCRbits.RTCEN = mode
76 
77 #define no_clock 0x00
78 #define LSE_clock 0x01
79 #define LSI_clock 0x02
80 #define HSE_by_128_clock 0x03
81 
82 #define select_RTC_clock_source(value) do{RCC_BDCR &= (~(0x3 << 8)); RCC_BDCR |= (value << 8);}while(0)
83 #define bypass_LSE_with_external_clock(mode) RCC_BDCRbits.LSEBYP = mode
84 #define LSE_ready() get_bit(RCC_BDCR, 1)
85 #define enable_LSE(mode) RCC_BDCRbits.LSEON = mode