bugfix IRQ masking
This commit is contained in:
parent
bdbf2db409
commit
1bc63bad94
@ -17,8 +17,8 @@
|
|||||||
#include "timekeeper.h"
|
#include "timekeeper.h"
|
||||||
|
|
||||||
void irqHandler(void *pvParameters);
|
void irqHandler(void *pvParameters);
|
||||||
int mask_user_IRQ();
|
bool mask_user_IRQ();
|
||||||
int unmask_user_IRQ();
|
bool unmask_user_IRQ();
|
||||||
|
|
||||||
#ifdef HAS_DISPLAY
|
#ifdef HAS_DISPLAY
|
||||||
void IRAM_ATTR DisplayIRQ();
|
void IRAM_ATTR DisplayIRQ();
|
||||||
|
@ -119,18 +119,18 @@ void IRAM_ATTR GpsIRQ() {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int mask_user_IRQ() {
|
bool mask_user_IRQ() {
|
||||||
// begin of time critical section: lock I2C bus to ensure accurate timing
|
// begin of time critical section: lock I2C bus to ensure accurate timing
|
||||||
if (I2C_MUTEX_LOCK()) {
|
if (I2C_MUTEX_LOCK()) {
|
||||||
xTaskNotify(irqHandlerTask, MASK_IRQ, eSetBits);
|
xTaskNotify(irqHandlerTask, MASK_IRQ, eSetBits);
|
||||||
return 0;
|
return true;
|
||||||
} else
|
} else
|
||||||
return 1; // failure
|
return false; // failure
|
||||||
}
|
}
|
||||||
|
|
||||||
int unmask_user_IRQ() {
|
bool unmask_user_IRQ() {
|
||||||
// end of time critical section: release I2C bus
|
// end of time critical section: release I2C bus
|
||||||
I2C_MUTEX_UNLOCK();
|
I2C_MUTEX_UNLOCK();
|
||||||
xTaskNotify(irqHandlerTask, UNMASK_IRQ, eSetBits);
|
xTaskNotify(irqHandlerTask, UNMASK_IRQ, eSetBits);
|
||||||
return 0;
|
return true;
|
||||||
}
|
}
|
@ -116,10 +116,9 @@ void setup() {
|
|||||||
|
|
||||||
// create some semaphores for syncing / mutexing tasks
|
// create some semaphores for syncing / mutexing tasks
|
||||||
I2Caccess = xSemaphoreCreateMutex(); // for access management of i2c bus
|
I2Caccess = xSemaphoreCreateMutex(); // for access management of i2c bus
|
||||||
if (I2Caccess)
|
assert(I2Caccess != NULL);
|
||||||
xSemaphoreGive(I2Caccess); // Flag the i2c bus available for use
|
|
||||||
|
|
||||||
// disable brownout detection
|
// disable brownout detection
|
||||||
#ifdef DISABLE_BROWNOUT
|
#ifdef DISABLE_BROWNOUT
|
||||||
// register with brownout is at address DR_REG_RTCCNTL_BASE + 0xd4
|
// register with brownout is at address DR_REG_RTCCNTL_BASE + 0xd4
|
||||||
(*((uint32_t volatile *)ETS_UNCACHED_ADDR((DR_REG_RTCCNTL_BASE + 0xd4)))) = 0;
|
(*((uint32_t volatile *)ETS_UNCACHED_ADDR((DR_REG_RTCCNTL_BASE + 0xd4)))) = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user