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




Loading

Interrupt during context switch

Posted by Nobody/Anonymous on September 12, 2006
Hi

I'm developing a small communication device with Atmel AVR ATMega 2560. I use as IAR C compiler as development tool.

In my application I have very strict timing restrictions during serial communication, so I need that USART interrupt have to be ALLWAYS active.

Unfortunately RTOS during context switch disable interrut. This cause in my application lost or Rxed bytes or many jitter on Txed bytes.

It's possible to keep interrupt active during context switch ?

Someone can help me and give me some directions about this issue ?

Thank you in advice

RE: Interrupt during context switch

Posted by Nobody/Anonymous on September 12, 2006
You can re-enable interrupts within an ISR once the context is saved provided that you keep a count of the interrupt nesting depth, and only restore a context once the nesting depth is zero again. You will have to disable interrupts again while you restore the context.

Consider other options first - like using FIFOs, organizing your ISR to trigger a high priority task to handle the data with interrupts enabled, etc.

RE: Interrupt during context switch

Posted by Nobody/Anonymous on September 12, 2006
If you are not using the isr to wake blocked tasks you can also speed things up by using a simple circular buffer instead of queues/semaphores. You still need to keep a count of the interrupt nesting depth but don't need to save and restore the context which will speed things up a lot. You can renable interrupt immediately after incrementing the nesting depth, then disable again immediately before decrementing the nesting depth.

RE: Interrupt during context switch

Posted by Nobody/Anonymous on September 12, 2006
The AVR port does not save the context until a switch is actually required. You can enable interrupts prior to this point provided the interrupt source is cleared first. Disable again for the switch.


[ 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