diff options
| author | hassless <85612141+hassless@users.noreply.github.com> | 2021-06-18 17:17:26 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-06-18 17:17:26 +0200 |
| commit | 84a6c88e98d8b1420edbddd7b67a38737bf5cbb2 (patch) | |
| tree | b10cab7ef1a7645fa897aabb179c2e8849a919d7 /src/drivers/SpiMaster.cpp | |
| parent | d0df278b0be2aae0493d901569a094dba221ce99 (diff) | |
| parent | e90e8c7426f9a44e696b208a5b393a60476a3d43 (diff) | |
Merge branch 'JF002:develop' into improve-battery-percentage-to-battery-icon-mapping
Diffstat (limited to 'src/drivers/SpiMaster.cpp')
| -rw-r--r-- | src/drivers/SpiMaster.cpp | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/drivers/SpiMaster.cpp b/src/drivers/SpiMaster.cpp index 34fcc08a..c45e1294 100644 --- a/src/drivers/SpiMaster.cpp +++ b/src/drivers/SpiMaster.cpp @@ -7,11 +7,14 @@ using namespace Pinetime::Drivers; SpiMaster::SpiMaster(const SpiMaster::SpiModule spi, const SpiMaster::Parameters& params) : spi {spi}, params {params} { - mutex = xSemaphoreCreateBinary(); - ASSERT(mutex != NULL); } bool SpiMaster::Init() { + if(mutex == nullptr) { + mutex = xSemaphoreCreateBinary(); + ASSERT(mutex != nullptr); + } + /* Configure GPIO pins used for pselsck, pselmosi, pselmiso and pselss for SPI0 */ nrf_gpio_pin_set(params.pinSCK); nrf_gpio_cfg_output(params.pinSCK); @@ -53,6 +56,7 @@ bool SpiMaster::Init() { break; case BitOrder::Lsb_Msb: regConfig = 1; + break; default: return false; } @@ -132,17 +136,17 @@ void SpiMaster::OnEndEvent() { spiBaseAddress->TASKS_START = 1; } else { + BaseType_t xHigherPriorityTaskWoken = pdFALSE; if (taskToNotify != nullptr) { - BaseType_t xHigherPriorityTaskWoken = pdFALSE; vTaskNotifyGiveFromISR(taskToNotify, &xHigherPriorityTaskWoken); portYIELD_FROM_ISR(xHigherPriorityTaskWoken); } nrf_gpio_pin_set(this->pinCsn); currentBufferAddr = 0; - BaseType_t xHigherPriorityTaskWoken = pdFALSE; - xSemaphoreGiveFromISR(mutex, &xHigherPriorityTaskWoken); - portYIELD_FROM_ISR(xHigherPriorityTaskWoken); + BaseType_t xHigherPriorityTaskWoken2 = pdFALSE; + xSemaphoreGiveFromISR(mutex, &xHigherPriorityTaskWoken2); + portYIELD_FROM_ISR(xHigherPriorityTaskWoken | xHigherPriorityTaskWoken2); } } |
