58 #define __TIMER_CODE_TEST__ 0
60 #if __TIMER_CODE_TEST__
61 #define __USE_TIMER__ 1
62 #define __USE_TIMER_1__ 1
63 #define __USE_TIMER_2__ 1
64 #define __USE_TIMER_3__ 1
65 #define __USE_TIMER_4__ 1
66 #define __USE_TIMER_5__ 1
67 #define __USE_TIMER_23__ 1
68 #define __USE_TIMER_45__ 1
83 #define TIMERN_16(XX, TT, PP) \
85 pic32_timer##XX##_enable_irq(void) \
87 IFS0CLR = _IFS0_T##XX##IF_MASK; \
88 IEC0SET = _IEC0_T##XX##IE_MASK; \
92 pic32_timer##XX##_disable_irq(void) \
94 IEC0CLR = _IEC0_T##XX##IE_MASK; \
95 IFS0CLR = _IFS0_T##XX##IF_MASK; \
99 pic32_timer##XX##_init(uint32_t frequency) \
101 uint32_t prd = pic32_clock_get_peripheral_clock() / frequency; \
105 if(prd <= UINT16_MAX) { \
106 tckps = TIMER_##TT##_PRESCALE_1; \
113 if(prd <= UINT16_MAX) { \
114 tckps = TIMER_##TT##_PRESCALE_8; \
122 if(prd <= UINT16_MAX) { \
123 tckps = TIMER_##TT##_PRESCALE_64; \
131 if(prd <= UINT16_MAX) { \
132 tckps = TIMER_##TT##_PRESCALE_256; \
134 return -TIMER_ERR_BAD_ARGS; \
138 pic32_timer##XX##_disable_irq(); \
140 IPC##XX##CLR = _IPC##XX##_T##XX##IP_MASK | _IPC##XX##_T##XX##IS_MASK; \
141 IPC##XX##SET = (7 << _IPC##XX##_T##XX##IP_POSITION) | (PP << _IPC##XX##_T##XX##IS_POSITION); \
143 T##XX##CONSET = tckps << _T##XX##CON_TCKPS_POSITION; \
147 return TIMER_NO_ERRORS; \
151 pic32_timer##XX##_start(void) \
153 T##XX##CONSET = _T##XX##CON_ON_MASK; \
157 pic32_timer##XX##_stop(void) \
159 T##XX##CONCLR = _T##XX##CON_ON_MASK; \
163 pic32_timer##XX##_get_val(void) \
168 #define TIMERN_32(XX, YY, PP) \
171 pic32_timer##XX##YY##_enable_irq(void) \
173 pic32_timer##YY##_enable_irq(); \
177 pic32_timer##XX##YY##_disable_irq(void) \
179 pic32_timer##YY##_disable_irq(); \
183 pic32_timer##XX##YY##_init(uint32_t frequency) \
185 uint32_t prd = pic32_clock_get_peripheral_clock() / frequency; \
189 if(prd <= UINT16_MAX) { \
190 tckps = TIMER_B_PRESCALE_1; \
197 if(prd <= UINT16_MAX) { \
198 tckps = TIMER_B_PRESCALE_8; \
206 if(prd <= UINT16_MAX) { \
207 tckps = TIMER_B_PRESCALE_64; \
215 if(prd <= UINT16_MAX) { \
216 tckps = TIMER_B_PRESCALE_256; \
218 return -TIMER_ERR_BAD_ARGS; \
222 pic32_timer##XX##_disable_irq(); \
224 IPC##YY##CLR = _IPC##YY##_T##YY##IP_MASK | _IPC##YY##_T##YY##IS_MASK; \
225 IPC##YY##SET = (7 << _IPC##YY##_T##YY##IP_POSITION) | (PP << _IPC##YY##_T##YY##IS_POSITION); \
227 T##XX##CONSET = _T##XX##CON_T32_MASK | (tckps << _T##XX##CON_TCKPS_POSITION); \
231 return TIMER_NO_ERRORS; \
235 pic32_timer##XX##YY##_start(void) \
237 T##XX##CONSET = _T##XX##CON_ON_MASK; \
241 pic32_timer##XX##YY##_stop(void) \
243 T##XX##CONCLR = _T##XX##CON_ON_MASK; \
247 pic32_timer##XX##YY##_get_val(void) \
253 #ifdef __USE_TIMER_1__
257 #if defined(__USE_TIMER_2__) || defined(__USE_TIMER_23__)
261 #if defined(__USE_TIMER_3__) || defined(__USE_TIMER_23__)
265 #if defined(__USE_TIMER_4__) || defined(__USE_TIMER_45__)
269 #if defined(__USE_TIMER_5__) || defined(__USE_TIMER_45__)
273 #ifdef __USE_TIMER_23__
277 #ifdef __USE_TIMER_45__
INTERRUPT interface for PIC32MX (pic32mx795f512l)
CLOCK interface for PIC32MX (pic32mx795f512l)
TIMER interface for PIC32MX (pic32mx795f512l)