@@ -90,17 +90,10 @@ typedef void (*voidFuncPtr)(void);
90
90
static voidFuncPtr __timerInterruptHandlers [4 ] = {0 ,0 ,0 ,0 };
91
91
92
92
void ARDUINO_ISR_ATTR __timerISR (void * arg ){
93
- #if CONFIG_IDF_TARGET_ESP32
94
93
uint32_t s0 = TIMERG0 .int_st_timers .val ;
95
94
uint32_t s1 = TIMERG1 .int_st_timers .val ;
96
95
TIMERG0 .int_clr_timers .val = s0 ;
97
96
TIMERG1 .int_clr_timers .val = s1 ;
98
- #else
99
- uint32_t s0 = TIMERG0 .int_st .val ;
100
- uint32_t s1 = TIMERG1 .int_st .val ;
101
- TIMERG0 .int_clr .val = s0 ;
102
- TIMERG1 .int_clr .val = s1 ;
103
- #endif
104
97
uint8_t status = (s1 & 3 ) << 2 | (s0 & 3 );
105
98
uint8_t i = 4 ;
106
99
//restart the timers that should autoreload
@@ -238,19 +231,19 @@ hw_timer_t * timerBegin(uint8_t num, uint16_t divider, bool countUp){
238
231
}
239
232
timer -> dev -> config .enable = 0 ;
240
233
if (timer -> group ) {
241
- TIMERG1 .int_ena .val &= ~BIT (timer -> timer );
242
234
#if CONFIG_IDF_TARGET_ESP32
243
- TIMERG1 .int_clr_timers .val |= BIT (timer -> timer );
235
+ TIMERG1 .int_ena .val &= ~ BIT (timer -> timer );
244
236
#else
245
- TIMERG1 .int_clr .val = BIT (timer -> timer );
237
+ TIMERG1 .int_ena_timers .val &= ~ BIT (timer -> timer );
246
238
#endif
239
+ TIMERG1 .int_clr_timers .val |= BIT (timer -> timer );
247
240
} else {
248
- TIMERG0 .int_ena .val &= ~BIT (timer -> timer );
249
241
#if CONFIG_IDF_TARGET_ESP32
250
- TIMERG0 .int_clr_timers .val |= BIT (timer -> timer );
242
+ TIMERG0 .int_ena .val &= ~ BIT (timer -> timer );
251
243
#else
252
- TIMERG0 .int_clr .val = BIT (timer -> timer );
244
+ TIMERG0 .int_ena_timers .val &= ~ BIT (timer -> timer );
253
245
#endif
246
+ TIMERG0 .int_clr_timers .val |= BIT (timer -> timer );
254
247
}
255
248
#ifdef TIMER_GROUP_SUPPORTS_XTAL_CLOCK
256
249
timer -> dev -> config .use_xtal = 0 ;
@@ -288,19 +281,19 @@ void timerAttachInterrupt(hw_timer_t *timer, void (*fn)(void), bool edge){
288
281
timer -> dev -> config .edge_int_en = 0 ;
289
282
timer -> dev -> config .alarm_en = 0 ;
290
283
if (timer -> num & 2 ){
291
- TIMERG1 .int_ena .val &= ~BIT (timer -> timer );
292
284
#if CONFIG_IDF_TARGET_ESP32
293
- TIMERG1 .int_clr_timers .val |= BIT (timer -> timer );
285
+ TIMERG1 .int_ena .val &= ~ BIT (timer -> timer );
294
286
#else
295
- TIMERG1 .int_clr .val = BIT (timer -> timer );
287
+ TIMERG1 .int_ena_timers .val &= ~ BIT (timer -> timer );
296
288
#endif
289
+ TIMERG1 .int_clr_timers .val |= BIT (timer -> timer );
297
290
} else {
298
- TIMERG0 .int_ena .val &= ~BIT (timer -> timer );
299
291
#if CONFIG_IDF_TARGET_ESP32
300
- TIMERG0 .int_clr_timers .val |= BIT (timer -> timer );
292
+ TIMERG0 .int_ena .val &= ~ BIT (timer -> timer );
301
293
#else
302
- TIMERG0 .int_clr .val = BIT (timer -> timer );
294
+ TIMERG0 .int_ena_timers .val &= ~ BIT (timer -> timer );
303
295
#endif
296
+ TIMERG0 .int_clr_timers .val |= BIT (timer -> timer );
304
297
}
305
298
__timerInterruptHandlers [timer -> num ] = NULL ;
306
299
} else {
@@ -332,9 +325,17 @@ void timerAttachInterrupt(hw_timer_t *timer, void (*fn)(void), bool edge){
332
325
intr_matrix_set (esp_intr_get_cpu (intr_handle ), intr_source , esp_intr_get_intno (intr_handle ));
333
326
}
334
327
if (timer -> group ){
328
+ #if CONFIG_IDF_TARGET_ESP32
335
329
TIMERG1 .int_ena .val |= BIT (timer -> timer );
330
+ #else
331
+ TIMERG1 .int_ena_timers .val |= BIT (timer -> timer );
332
+ #endif
336
333
} else {
334
+ #if CONFIG_IDF_TARGET_ESP32
337
335
TIMERG0 .int_ena .val |= BIT (timer -> timer );
336
+ #else
337
+ TIMERG0 .int_ena_timers .val |= BIT (timer -> timer );
338
+ #endif
338
339
}
339
340
}
340
341
if (intr_handle ){
0 commit comments