Compare commits
3 Commits
v1.0.0
...
196398ac6f
Author | SHA1 | Date | |
---|---|---|---|
196398ac6f | |||
dfebb15213 | |||
8c6460a1d1 |
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.DS_Store
|
@@ -9,7 +9,7 @@
|
||||
## Note
|
||||
|
||||
1. Enable interrupt support only if input GPIO's are used.
|
||||
2. All the INT GPIO's on the extenders must be connected to the one GPIO on AVR. Only PORTD4 - PORTD7 are acceptable!
|
||||
2. All the INT GPIO's on the extenders must be connected to the one GPIO on AVR. Only PORTD0 - PORTD7 are acceptable!
|
||||
3. The input GPIO's are always pullup to the power supply.
|
||||
|
||||
## Dependencies
|
||||
@@ -118,7 +118,7 @@ int main(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
void zh_avr_pcf8574_event_handler(zh_avr_pcf8574_event_on_isr_t *event) // Required only if used input GPIO interrupts.
|
||||
void zh_avr_pcf8574_event_handler(zh_avr_pcf8574_event_on_isr_t *event) // Do not delete! Leave blank if interrupts are not used.
|
||||
{
|
||||
printf("Interrupt happened on device address 0x%02X on GPIO number %d at level %d.\n", event->i2c_address, event->gpio_number, event->gpio_level);
|
||||
printf("Interrupt Task Remaining Stack Size %d.\n", uxTaskGetStackHighWaterMark(NULL));
|
||||
|
@@ -133,7 +133,7 @@ extern "C"
|
||||
/**
|
||||
* @brief PCF8574 ISR handler.
|
||||
*/
|
||||
void zh_avr_pcf8574_isr_handler(void);
|
||||
BaseType_t zh_avr_pcf8574_isr_handler(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
@@ -1 +1 @@
|
||||
1.0.0
|
||||
1.2.0
|
@@ -81,7 +81,7 @@ static avr_err_t _zh_avr_pcf8574_validate_config(const zh_avr_pcf8574_init_confi
|
||||
ZH_ERROR_CHECK(config != NULL, AVR_ERR_INVALID_ARG);
|
||||
ZH_ERROR_CHECK((config->i2c_address >= 0x20 && config->i2c_address <= 0x27) || (config->i2c_address >= 0x38 && config->i2c_address <= 0x3F), AVR_ERR_INVALID_ARG);
|
||||
ZH_ERROR_CHECK(config->task_priority > tskIDLE_PRIORITY && config->stack_size >= 124, AVR_ERR_INVALID_ARG);
|
||||
ZH_ERROR_CHECK(config->interrupt_gpio == 0xFF || config->interrupt_gpio == PORTD4 || config->interrupt_gpio == PORTD5 || config->interrupt_gpio == PORTD6 || config->interrupt_gpio == PORTD7, AVR_ERR_INVALID_ARG);
|
||||
ZH_ERROR_CHECK(config->interrupt_gpio == 0xFF || (config->interrupt_gpio >= PORTD0 && config->interrupt_gpio <= PORTD7), AVR_ERR_INVALID_ARG);
|
||||
return AVR_OK;
|
||||
}
|
||||
|
||||
@@ -129,17 +129,14 @@ static avr_err_t _zh_avr_pcf8574_configure_interrupts(const zh_avr_pcf8574_init_
|
||||
return AVR_OK;
|
||||
}
|
||||
|
||||
void zh_avr_pcf8574_isr_handler(void)
|
||||
BaseType_t zh_avr_pcf8574_isr_handler(void)
|
||||
{
|
||||
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
||||
if ((PIND & (1 << _interrupt_gpio)) == 0)
|
||||
{
|
||||
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
||||
xSemaphoreGiveFromISR(_interrupt_semaphore, &xHigherPriorityTaskWoken);
|
||||
if (xHigherPriorityTaskWoken == pdTRUE)
|
||||
{
|
||||
portYIELD();
|
||||
};
|
||||
}
|
||||
return xHigherPriorityTaskWoken;
|
||||
}
|
||||
|
||||
static void _zh_avr_pcf8574_isr_processing_task(void *pvParameter)
|
||||
|
Reference in New Issue
Block a user