]> rtime.felk.cvut.cz Git - pes-rpp/rpp-lib.git/blobdiff - rpp/src/drv/adc.c
Trigger context switch after ADC interrupts - simpler version
[pes-rpp/rpp-lib.git] / rpp / src / drv / adc.c
index e2ecd3bb77f9c54bc4409e557b115e733829ede8..e8f8fca3367b8efd0421abf6f96e5de60af875d1 100644 (file)
@@ -57,12 +57,15 @@ void drv_adc_init()
  *              - adcGROUP1: ADC group 1
  *              - adcGROUP2: ADC group 2
  */
-void adcNotification(adcBASE_t *adc, uint32_t group, portBASE_TYPE* xHigherPriorityTaskWoken)
+void adcNotification(adcBASE_t *adc, uint32_t group)
 {
        if (adcIsConversionComplete(adc, group) == ADC_CONVERSION_IS_FINISHED) {
                int adc_idx = (adc == adcREG1) ? 0 : 1;
                int grp_idx = (group == adcGROUP1) ? 0 : 1;
-               xSemaphoreGiveFromISR(sem[adc_idx][grp_idx], xHigherPriorityTaskWoken);
+               portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;
+
+               xSemaphoreGiveFromISR(sem[adc_idx][grp_idx], &xHigherPriorityTaskWoken);
+               portYIELD_FROM_ISR(xHigherPriorityTaskWoken); /* Cause context switch after return from interrupt */
        }
 }