feat: added gpio interrupt time

This commit is contained in:
2026-02-23 21:27:35 +03:00
parent e82612895e
commit 8f1a394355
4 changed files with 5 additions and 2 deletions

View File

@@ -1 +1 @@
idf_component_register(SRCS "zh_pcf8574.c" INCLUDE_DIRS "include" REQUIRES driver esp_event zh_vector) idf_component_register(SRCS "zh_pcf8574.c" INCLUDE_DIRS "include" REQUIRES driver esp_timer esp_event zh_vector)

View File

@@ -6,6 +6,7 @@
#include "esp_log.h" #include "esp_log.h"
#include "driver/gpio.h" #include "driver/gpio.h"
#include "esp_timer.h"
#include "driver/i2c_master.h" #include "driver/i2c_master.h"
#include "freertos/FreeRTOS.h" #include "freertos/FreeRTOS.h"
#include "freertos/task.h" #include "freertos/task.h"
@@ -112,6 +113,7 @@ extern "C"
*/ */
typedef struct typedef struct
{ {
uint64_t interrupt_time; /*!< Interrupt time. */
zh_pcf8574_gpio_num_t gpio_number; /*!< The GPIO that caused the interrupt. */ zh_pcf8574_gpio_num_t gpio_number; /*!< The GPIO that caused the interrupt. */
uint8_t i2c_address; /*!< The i2c address of PCF8574 expander that caused the interrupt. */ uint8_t i2c_address; /*!< The i2c address of PCF8574 expander that caused the interrupt. */
bool gpio_level; /*!< The GPIO level that caused the interrupt. */ bool gpio_level; /*!< The GPIO level that caused the interrupt. */

View File

@@ -1 +1 @@
2.5.1 2.6.0

View File

@@ -328,6 +328,7 @@ static void IRAM_ATTR _zh_pcf8574_isr_processing_task(void *pvParameter)
{ {
event.gpio_number = j; event.gpio_number = j;
event.gpio_level = new_reg & _gpio_matrix[j]; event.gpio_level = new_reg & _gpio_matrix[j];
event.interrupt_time = esp_timer_get_time();
err = esp_event_post(ZH_PCF8574, 0, &event, sizeof(event), 1000 / portTICK_PERIOD_MS); err = esp_event_post(ZH_PCF8574, 0, &event, sizeof(event), 1000 / portTICK_PERIOD_MS);
if (err != ESP_OK) if (err != ESP_OK)
{ {