hw_timer_t * timer0 = NULL;
hw_timer_t * timer1 = NULL;
portMUX_TYPE timerMux0 = portMUX_INITIALIZER_UNLOCKED;
portMUX_TYPE timerMux1 = portMUX_INITIALIZER_UNLOCKED;
volatile uint8_t led1stat = 0;
volatile uint8_t led2stat = 0;
void IRAM_ATTR onTimer0(){
portENTER_CRITICAL_ISR(&timerMux0);
led1stat=1-led1stat;
digitalWrite(15, led1stat);
portEXIT_CRITICAL_ISR(&timerMux0);
}
void IRAM_ATTR onTimer1(){
// Critical Code here
portENTER_CRITICAL_ISR(&timerMux1);
led2stat=1-led2stat;
digitalWrite(2, led2stat);
portEXIT_CRITICAL_ISR(&timerMux1);
}
void setup() {
Serial.begin(115200);
pinMode(2, OUTPUT);
pinMode(15, OUTPUT);
digitalWrite(2, LOW);
digitalWrite(15, LOW);
Serial.println("start timer 1");
timer1 = timerBegin(1, 80, true);
timerAttachInterrupt(timer1, &onTimer1, true);
timerAlarmWrite(timer1, 250000, true);
Serial.println("start timer 0");
timer0 = timerBegin(0, 80, true);
timerAttachInterrupt(timer0, &onTimer0, true);
timerAlarmWrite(timer0, 2000000, true);
timerAlarmEnable(timer0);
timerAlarmEnable(timer1);
}
void loop() {
vTaskDelay(portMAX_DELAY);
}