Given the implementation of portYIELD_FROM_ISR() in FreeRTOS 8.2.2, it is
not necessary to call this macro at the end of the interrupt handler. This
allows us to centralize the call of this macro and keep target specific
files unmodified.
#include "drv/drv.h"
#include "drv/port.h"
#include "drv/drv.h"
#include "drv/port.h"
+#include "os/portmacro.h"
// Binary semaphores for finish notifications
static xSemaphoreHandle sem[2][2];
// Binary semaphores for finish notifications
static xSemaphoreHandle sem[2][2];
void adcNotification(adcBASE_t *adc, uint32_t group)
{
if (adcIsConversionComplete(adc, group) == ADC_CONVERSION_IS_FINISHED) {
void adcNotification(adcBASE_t *adc, uint32_t group)
{
if (adcIsConversionComplete(adc, group) == ADC_CONVERSION_IS_FINISHED) {
- signed portBASE_TYPE dummy;
int adc_idx = (adc == adcREG1) ? 0 : 1;
int grp_idx = (group == adcGROUP1) ? 0 : 1;
int adc_idx = (adc == adcREG1) ? 0 : 1;
int grp_idx = (group == adcGROUP1) ? 0 : 1;
- xSemaphoreGiveFromISR(sem[adc_idx][grp_idx], &dummy);
+ portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;
+
+ xSemaphoreGiveFromISR(sem[adc_idx][grp_idx], &xHigherPriorityTaskWoken);
+ portYIELD_FROM_ISR(xHigherPriorityTaskWoken); /* Cause context switch after return from interrupt */