58 #ifndef INCLUDE_PIC32_TIMER_H_
59 #define INCLUDE_PIC32_TIMER_H_
69 #define TIMER_NO_ERRORS 0
70 #define TIMER_ERR_BAD_ARGS 1
72 #define TIMER_A_PRESCALE_1 0b00
73 #define TIMER_A_PRESCALE_8 0b01
74 #define TIMER_A_PRESCALE_64 0b10
75 #define TIMER_A_PRESCALE_256 0b11
77 #define TIMER_B_PRESCALE_1 0b000
78 #define TIMER_B_PRESCALE_2 0b001
79 #define TIMER_B_PRESCALE_4 0b010
80 #define TIMER_B_PRESCALE_8 0b011
81 #define TIMER_B_PRESCALE_16 0b100
82 #define TIMER_B_PRESCALE_32 0b101
83 #define TIMER_B_PRESCALE_64 0b110
84 #define TIMER_B_PRESCALE_256 0b111
86 #define TIMERN_16_DEF(X) \
87 uint8_t pic32_timer##X##_init(uint32_t frequency); \
88 void pic32_timer##X##_enable_irq(void); \
89 void pic32_timer##X##_disable_irq(void); \
90 void pic32_timer##X##_start(void); \
91 void pic32_timer##X##_stop(void); \
92 uint16_t pic32_timer##X##_get_val(void);
94 #define TIMERN_32_DEF(XY) \
95 uint8_t pic32_timer##XY##_init(uint32_t frequency);\
96 void pic32_timer##XY##_enable_irq(void); \
97 void pic32_timer##XY##_disable_irq(void); \
98 void pic32_timer##XY##_start(void); \
99 void pic32_timer##XY##_stop(void); \
100 uint32_t pic32_timer##XY##_get_val(void);
102 #define TIMER_INTERRUPT(XX, CALLBACK) \
103 TIMER_ISR(_TIMER_##XX##_VECTOR) \
105 ENERGEST_ON(ENERGEST_TYPE_IRQ); \
107 ENERGEST_OFF(ENERGEST_TYPE_IRQ); \
108 IFS0CLR = _IFS0_T##XX##IF_MASK; \
111 #ifdef __USE_TIMER_1__
115 #if defined(__USE_TIMER_2__) || defined(__USE_TIMER_23__)
119 #if defined(__USE_TIMER_3__) || defined(__USE_TIMER_23__)
123 #if defined(__USE_TIMER_4__) || defined(__USE_TIMER_45__)
127 #if defined(__USE_TIMER_5__) || defined(__USE_TIMER_45__)
131 #ifdef __USE_TIMER_23__
135 #ifdef __USE_TIMER_45__
INTERRUPT interface for PIC32MX (pic32mx795f512l)