#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
#include "esp_task_wdt.h" // Para el Task Watchdog Timer
//nombro los pines con un nombre
#define VERDE 2
#define ROJO 4
uint8_t led_valor = 0; //00000000
//00000001
void ledVerde(){
esp_task_wdt_add(NULL); // Registra la tarea actual (LED) en el WDT
while(1){
// Alimentar el Watchdog para evitar reinicios
esp_task_wdt_reset();
gpio_set_level(VERDE,!led_valor);
vTaskDelay(500 / portTICK_PERIOD_MS);
gpio_set_level(VERDE,led_valor);
vTaskDelay(500 / portTICK_PERIOD_MS);
}
}
void ledRojo(){
esp_task_wdt_add(NULL); // Registra la tarea actual (LED) en el WDT
while(1){
// Alimentar el Watchdog para evitar reinicios
esp_task_wdt_reset();
gpio_set_level(ROJO,!led_valor);
vTaskDelay(2000 / portTICK_PERIOD_MS);
gpio_set_level(ROJO,led_valor);
vTaskDelay(2000 / portTICK_PERIOD_MS);
}
}
void app_main() {
// Configuración del Watchdog (5 segundos como ejemplo)
esp_task_wdt_init(5, true); // Tiempo límite de 5 segundos, reinicio automático habilitado
gpio_set_direction(VERDE,GPIO_MODE_OUTPUT);
gpio_set_level(VERDE,0);
gpio_set_direction(ROJO,GPIO_MODE_OUTPUT);
gpio_set_level(ROJO,0);
//FUNCIONES QUE SE EJECUTAN AL MISMO TIEMPO (funcion ledVerde y funcion ledRojo)
xTaskCreate(ledVerde, "Tarea 1", 2048, NULL, 2, NULL);
xTaskCreate(ledRojo, "Tarea 2", 2048, NULL, 2, NULL);
}