relay_control.c 900 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #include "freertos/FreeRTOS.h"
  2. #include "freertos/task.h"
  3. #include "freertos/queue.h"
  4. #include "driver/ledc.h"
  5. #include "driver/pcnt.h"
  6. #include "esp_attr.h"
  7. #include "esp_log.h"
  8. #include "relay_control.h"
  9. #ifdef ENABLE_RELAY_OUTPUT
  10. void relayControlTask(void *pvParameters) {
  11. ESP_LOGI("RELAY", "relayControlTask starting. Core:%d",xPortGetCoreID());
  12. uint8_t relayState = 0;
  13. while( 1 ) {
  14. relayState = !relayState;
  15. ESP_LOGI("RELAY", "Change relay state: %u",relayState);
  16. gpio_set_level(VVB_RELAY_OUTPUT_IO, relayState);
  17. vTaskDelay(5000 / portTICK_PERIOD_MS);
  18. }
  19. }
  20. void relay_control_init()
  21. {
  22. ESP_LOGI("RELAY", "relay_control_init()");
  23. gpio_reset_pin(VVB_RELAY_OUTPUT_IO);
  24. gpio_set_direction(VVB_RELAY_OUTPUT_IO, GPIO_MODE_OUTPUT);
  25. xTaskCreate(relayControlTask, "relayControlTask", 1024*10, NULL, 2, NULL);
  26. }
  27. #endif