@@ -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
@@ -239,19 +232,19 @@ hw_timer_t * timerBegin(uint8_t num, uint16_t divider, bool countUp){
239
232
}
240
233
timer -> dev -> config .enable = 0 ;
241
234
if (timer -> group ) {
242
- TIMERG1 .int_ena .val &= ~BIT (timer -> timer );
243
235
#if CONFIG_IDF_TARGET_ESP32
244
- TIMERG1 .int_clr_timers .val |= BIT (timer -> timer );
236
+ TIMERG1 .int_ena .val &= ~ BIT (timer -> timer );
245
237
#else
246
- TIMERG1 .int_clr .val = BIT (timer -> timer );
238
+ TIMERG1 .int_ena_timers .val &= ~ BIT (timer -> timer );
247
239
#endif
240
+ TIMERG1 .int_clr_timers .val |= BIT (timer -> timer );
248
241
} else {
249
- TIMERG0 .int_ena .val &= ~BIT (timer -> timer );
250
242
#if CONFIG_IDF_TARGET_ESP32
251
- TIMERG0 .int_clr_timers .val |= BIT (timer -> timer );
243
+ TIMERG0 .int_ena .val &= ~ BIT (timer -> timer );
252
244
#else
253
- TIMERG0 .int_clr .val = BIT (timer -> timer );
245
+ TIMERG0 .int_ena_timers .val &= ~ BIT (timer -> timer );
254
246
#endif
247
+ TIMERG0 .int_clr_timers .val |= BIT (timer -> timer );
255
248
}
256
249
#ifdef TIMER_GROUP_SUPPORTS_XTAL_CLOCK
257
250
timer -> dev -> config .use_xtal = 0 ;
@@ -289,19 +282,19 @@ void timerAttachInterrupt(hw_timer_t *timer, void (*fn)(void), bool edge){
289
282
timer -> dev -> config .edge_int_en = 0 ;
290
283
timer -> dev -> config .alarm_en = 0 ;
291
284
if (timer -> num & 2 ){
292
- TIMERG1 .int_ena .val &= ~BIT (timer -> timer );
293
285
#if CONFIG_IDF_TARGET_ESP32
294
- TIMERG1 .int_clr_timers .val |= BIT (timer -> timer );
286
+ TIMERG1 .int_ena .val &= ~ BIT (timer -> timer );
295
287
#else
296
- TIMERG1 .int_clr .val = BIT (timer -> timer );
288
+ TIMERG1 .int_ena_timers .val &= ~ BIT (timer -> timer );
297
289
#endif
290
+ TIMERG1 .int_clr_timers .val |= BIT (timer -> timer );
298
291
} else {
299
- TIMERG0 .int_ena .val &= ~BIT (timer -> timer );
300
292
#if CONFIG_IDF_TARGET_ESP32
301
- TIMERG0 .int_clr_timers .val |= BIT (timer -> timer );
293
+ TIMERG0 .int_ena .val &= ~ BIT (timer -> timer );
302
294
#else
303
- TIMERG0 .int_clr .val = BIT (timer -> timer );
295
+ TIMERG0 .int_ena_timers .val &= ~ BIT (timer -> timer );
304
296
#endif
297
+ TIMERG0 .int_clr_timers .val |= BIT (timer -> timer );
305
298
}
306
299
__timerInterruptHandlers [timer -> num ] = NULL ;
307
300
} else {
@@ -333,9 +326,17 @@ void timerAttachInterrupt(hw_timer_t *timer, void (*fn)(void), bool edge){
333
326
intr_matrix_set (esp_intr_get_cpu (intr_handle ), intr_source , esp_intr_get_intno (intr_handle ));
334
327
}
335
328
if (timer -> group ){
329
+ #if CONFIG_IDF_TARGET_ESP32
336
330
TIMERG1 .int_ena .val |= BIT (timer -> timer );
331
+ #else
332
+ TIMERG1 .int_ena_timers .val |= BIT (timer -> timer );
333
+ #endif
337
334
} else {
335
+ #if CONFIG_IDF_TARGET_ESP32
338
336
TIMERG0 .int_ena .val |= BIT (timer -> timer );
337
+ #else
338
+ TIMERG0 .int_ena_timers .val |= BIT (timer -> timer );
339
+ #endif
339
340
}
340
341
}
341
342
if (intr_handle ){
0 commit comments