FreeRTOS Support Archive
The FreeRTOS support forum is used to obtain active support directly from Real
Time Engineers Ltd. In return for using our top quality software and services for
free, we request you play fair and do your bit to help others too! Sign up
to receive notifications of new support topics then help where you can.
This is a read only archive of threads posted to the FreeRTOS support forum.
The archive is updated every week, so will not always contain the very latest posts.
Use these archive pages to search previous posts. Use the Live FreeRTOS Forum
link to reply to a post, or start a new support thread.
[FreeRTOS Home] [Live FreeRTOS Forum] [FAQ] [Archive Top] [November 2013 Threads] Awake a task from a non-maskable interruptPosted by genarisimo23 on November 19, 2013 Hi,
I'm using a non maskable interrupts which priority is above configMAXSYSCALLINTERRUPT_PRIORITY parameter, since interrupt source can't be delayed by the kernel itself. My question is, how can awake or signal a task from a non maskable interrupt? I know that i can't use any Kernel API.
Thanks in advance
Awake a task from a non-maskable interruptPosted by richardbarry on November 19, 2013 You cannot do it safely by using any kernel mechanism, in case a lower priority interrupt or a task was already manipulating the kernel data structures.
You don't say which architecture you are using so I can't give any definitive suggestions, but it may be possible to pend a lower priority interrupt that is at or below configMAXSYSCALLINTERRUPT_PRIORITY, then perform the wake operation from there. The lower priority interrupt should execute after the NMI, before any task level code executes.
Regards.
Awake a task from a non-maskable interruptPosted by genarisimo23 on November 19, 2013 Thanks for your info Richard, i'm using Kinetis K20 based on Cortex-M4 architecture. The NMI interrupt is from a Timer and has "0" priority. How can i pend interrupt from Timer's ISR? This new interrupt is a software interrupt or from another peripheral?
Thanks
Awake a task from a non-maskable interruptPosted by edwards3 on November 19, 2013 All interrupts on Cortex chips can be pended in software. Look up the NVIC hardware manual on the ARM website. It is probably included in the Cortex M3 documentation. You are looking for a Set Pend register, and just need to set a bit in the register then write a handler for the interrupt. There is bound to be lots of interrupts you dont need and can use for this purpose.
Awake a task from a non-maskable interruptPosted by genarisimo23 on November 19, 2013 Lot of thanks MEdwards i'll take a look at Cortex M3 users manual.
Regards
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.
|