Quality RTOS & Embedded Software

 Real time embedded FreeRTOS RSS feed 
Quick Start Supported MCUs PDF Books Trace Tools Ecosystem


Loading

Context swicht on PIC32

Posted by Ariel Montero on February 5, 2009
How can I force a context swicht after xSemaphoreGiveFromISR funtion return value equal pdTRUE in interrup handler on PIC32?.

What happens if the return value equal pdFALSE?. What does mean?.What should I do in this case?.

RE: Context swicht on PIC32

Posted by Richard on February 5, 2009
> How can I force a context swicht after xSemaphoreGiveFromISR
> funtion return value equal pdTRUE in interrup handler on PIC32?.


A context switch should be forced if the last parameter to the xSemaphoreGiveFromISR() function is set to true within the function itself. On the PIC32 this is done using the portEND_SWITCHING_ISR() macro as follows:


/////////////////
/* Initialise xHigherPriorityTaskWoken to false. */
xHigherPriorityTaskWoken = pdFALSE;

/* Call the API function, passing in the address of
xHigherPriorityTaskWoken. */
xSemaphoreGiveFromISR( xSemaphore, &xHigherPriorityTaskWoken );

/* Call the macro, passing in the value of xHigherPriorityTaskWoken.
If the semaphore caused a task to unblock, and the task that unblocked
Has a priority greater than the current task, then
xHigherPriorityTaskWoken will now be true and the macro will cause a
context switch. */
portEND_SWITCHING_ISR( xHigherPriorityTaskWoken );
/////////////////

See the file FreeRTOS\Demo\PIC32MX_MPLAB\serial\serial.c for a full example.


>
> What happens if the return value equal pdFALSE?. What does
> mean?.What should I do in this case?.

If pdFALSE is returned from the function itself then the semaphore could not be given because the semaphore already existed. In other words, nothing had taken the semaphore so the semaphore was already there. This is talking about the function return value though, not the value returned in xHigherPriorityTaskWoken. See http://www.freertos.org/a00124.html for an example, but note in this example the macro used to yield is called something else.

Regards.


[ Back to the top ]    [ About FreeRTOS ]    [ Privacy ]    [ Sitemap ]    [ ]


Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.

Latest News

NXP tweet showing LPC5500 (ARMv8-M Cortex-M33) running FreeRTOS.

Meet Richard Barry and learn about running FreeRTOS on RISC-V at FOSDEM 2019

Version 10.1.1 of the FreeRTOS kernel is available for immediate download. MIT licensed.

View a recording of the "OTA Update Security and Reliability" webinar, presented by TI and AWS.


Careers

FreeRTOS and other embedded software careers at AWS.



FreeRTOS Partners

ARM Connected RTOS partner for all ARM microcontroller cores

Espressif ESP32

IAR Partner

Microchip Premier RTOS Partner

RTOS partner of NXP for all NXP ARM microcontrollers

Renesas

STMicro RTOS partner supporting ARM7, ARM Cortex-M3, ARM Cortex-M4 and ARM Cortex-M0

Texas Instruments MCU Developer Network RTOS partner for ARM and MSP430 microcontrollers

OpenRTOS and SafeRTOS

Xilinx Microblaze and Zynq partner