Amazon Video

Introduction to RTOS Part 9 – Hardware Interrupts | Digi-Key Electronics

Hardware interrupts are important in many embedded systems. They allow us to respond to external events (such as a button being pressed) or internal events (such as a timer expiring) in an asynchronous manner, which means that the processor can stop whatever it was doing to run an interrupt service routine (ISR).

The solution to the challenge in the video can be found here: https://www.digikey.com/en/maker/projects/introduction-to-rtos-solution-to-part-9-hardware-interrupts/3ae7a68462584e1eb408e1638002e9ed

Code for this video series (including demonstrations, challenges, and solutions) can be found here: https://github.com/ShawnHymel/introduction-to-rtos

In most RTOSes, such as FreeRTOS, hardware interrupts occur at a higher priority than all other tasks. This means, unless specifically disabled, hardware interrupts will halt the execution of any currently running task. The CPU will be forced to handle the interrupt before returning to the task.

A few tips when working with interrupts:
ISRs should never block, which means you should only use FreeRTOS kernel function calls that end in “FromISR”
You should keep ISRs as short as possible to avoid delaying tasks longer than necessary
Any global variables that get updated in an ISR should be declared with the “volatile” qualifier

Rather than perform processing inside an ISR, you can “defer processing” by collecting data into a buffer and letting a task do the processinging. In the video, we look at how to accomplish deferred processing using semaphores (note that you can also use queues and task notifications).

When an ISR is done, it can set a lock (e.g. “give” a semaphore), which will unblock a task. This task can then use any data collected by the ISR (e.g. a new ADC value, a buffer filled with data from the serial port, etc.). With this method, you can keep ISRs short while relying on a task to perform any necessary processing.

Product Links:
https://www.digikey.com/en/products/d…​

Related Videos:
Introduction to RTOS Part 1 – What is a Real-Time Operating System (RTOS)? – https://youtu.be/F321087yYy4​

Introduction to RTOS Part 2 – Getting Started with FreeRTOS – https://youtu.be/JIr7Xm_riRs​

Introduction to RTOS Part 3 – Task Scheduling – https://youtu.be/95yUbClyf3E​

Introduction to RTOS Part 4 – Memory Management – https://youtu.be/Qske3yZRW5I​

Introduction to RTOS Part 5 – Queue – https://youtu.be/pHJ3lxOoWeI​

Introduction to RTOS Part 6 – Mutex – https://youtu.be/I55auRpbiTs​

Introduction to RTOS Part 7 – https://youtu.be/5JcMtbA9QEE​

Introduction to RTOS Part 8 – https://youtu.be/b1f1Iex0Tso

Introduction to RTOS Part 9 – https://youtu.be/qsflCf6ahXU

Related Project Links:
https://www.digikey.com/en/maker/projects/introduction-to-rtos-solution-to-part-9-hardware-interrupts/3ae7a68462584e1eb408e1638002e9ed

Related Articles:
https://www.digikey.com/en/maker/videos/shawn-hymel/getting-started-with-stm32-and-nucleo-part-3-how-to-run-multiple-threads-with-cmsis-rtos-interface

Learn more:
Maker.io – https://www.digikey.com/en/maker

Digi-Key’s Blog – TheCircuit https://www.digikey.com/en/blog

Connect with Digi-Key on Facebook https://www.facebook.com/digikey.electronics/

And follow us on Twitter https://twitter.com/digikey

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.