#define LED_PIN 23
#define PULS_PIN 34
hw_timer_t * timer = NULL; // estructura de datos del timer
volatile uint32_t tparp;
void IRAM_ATTR ISR_pulsador() {
if(tparp==500e3) tparp=2000e3;
else tparp=500e3;
timerAlarm(timer, tparp, true, 0); // alarma - ISR cada X miliseg
}
// ISR finTimer
void IRAM_ATTR finTimer() {
static int estado_led=HIGH;
estado_led=!estado_led;
digitalWrite(LED_PIN, estado_led);
}
int inicio;
void setup(){
Serial.begin(115200);
inicio=1;
pinMode(LED_PIN, OUTPUT);
attachInterrupt(digitalPinToInterrupt(PULS_PIN), ISR_pulsador, FALLING);
timer = timerBegin(1e6); // 1 useg -> valor freqTimer > 1250 pues configura prescaler => 80e6/ (2 o 65536)
timerAttachInterrupt(timer, &finTimer);
tparp=500e3;
// timerAlarm(hw_timer_t *timer, uint64_t alarm_value, bool autoreload, uint64_t reload_count);
timerAlarm(timer, tparp, true, 0); // alarma - ISR cada medio segundo
}
void loop() {
if (inicio==1) {
Serial.printf("\n\n Ejercicio Cambia Tiempo Parpadeo 500 - 3000 mseg\n");
inicio=0;
}
delay(10);
}