Quality RTOS & Embedded Software

 Real time embedded FreeRTOS RSS feed 
Real time embedded FreeRTOS mailing list 
Quick Start Supported MCUs PDF Books Trace Tools Ecosystem TCP & FAT Training


Awake a task from a non-maskable interrupt

Posted by genarisimo23 on November 19, 2013


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 interrupt

Posted 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.


Awake a task from a non-maskable interrupt

Posted 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?


Awake a task from a non-maskable interrupt

Posted 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 interrupt

Posted by genarisimo23 on November 19, 2013

Lot of thanks MEdwards i'll take a look at Cortex M3 users manual.


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

Copyright (C) 2004-2010 Richard Barry. Copyright (C) 2010-2016 Real Time Engineers Ltd.
Any and all data, files, source code, html content and documentation included in the FreeRTOSTM distribution or available on this site are the exclusive property of Real Time Engineers Ltd.. See the files license.txt (included in the distribution) and this copyright notice for more information. FreeRTOSTM and FreeRTOS.orgTM are trade marks of Real Time Engineers Ltd.

Latest News:

FreeRTOS V9.0.0 is now available for download.

Free TCP/IP and file system demos for the RTOS

Sponsored Links

⇓ Now With No Code Size Limit! ⇓
⇑ Free Download Without Registering ⇑

FreeRTOS Partners

ARM Connected RTOS partner for all ARM microcontroller cores

Renesas Electronics Gold Alliance RTOS Partner.jpg

Microchip Premier RTOS Partner

RTOS partner of NXP for all NXP ARM microcontrollers

Atmel RTOS partner supporting ARM Cortex-M3 and AVR32 microcontrollers

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

Xilinx Microblaze and Zynq partner

Silicon Labs low power RTOS partner

Altera RTOS partner for Nios II and Cortex-A9 SoC

Freescale Alliance RTOS Member supporting ARM and ColdFire microcontrollers

Infineon ARM Cortex-M microcontrollers

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

Cypress RTOS partner supporting ARM Cortex-M3

Fujitsu RTOS partner supporting ARM Cortex-M3 and FM3

Microsemi (previously Actel) RTOS partner supporting ARM Cortex-M3

Atollic Partner

IAR Partner

Keil ARM Partner

Embedded Artists