Activities & Challenges from https://www.youtube.com/playlist?list=PLEBQazB0HUyQ4hAPU1cJED6t3DU0h34bz
- Part 2 - Blink
- Part 3 - Task Schedulling
- Part 4 - Memory, static, stack, heap
- Part 5 - Queue, Queue_full, atomic operation, kernel objects...
- Part 6 - Mutex, race condition, shared resources, restroom key analogy
- Part 7 - Semaphores, binary semaphores, counting semaphores
- Part 8 - Software Timers, one-shot timer, auto-reload timer
- Part 9 - Hardware Interrupts, ISR
- Part 10 - Deadlock, Livelock, Starvation, timeout, hierarchy, arbitrator
- Part 11 - Priority Inversion (PI), Bounded PI, Unbounded PI, Priority Ceiling Protocol, Priority Inheritance
- Part 12
- Part 2 - Blink LED at different rates
- Part 3 - Blink LED at given rate (from serial)
- Part 4 - Send and receive message using heap memory (with LED notification)
- Part 5 - Applying two queues (send & receive messages) + struct
- Part 6 - Passing parameters through task creation
- Part 7 - Writing (0-4) three times with Producer-Consumer design
- Part 8 - Turn on LED when entering serial commands and off if serial is inactive, Code link
- Part 9
- Part 10 - Solve for Deadlock of 5 philosophores eating with 2 chopsticks
- Part 11
- Part 12
-
Arduino UNO
- In this code, the arduino was only able to run one task at a time. When attempting to press two buttons, the first task needs to finish before any buttons can be read again.
- There are probably workarounds in Arduino to be able to multitask.
- Video of Sequential LED using Arduino
-
ESP32
- Using ESP32, while a task is running, we can also run other tasks. This shows the ability to multitask with ESP32.
- Video of ESP32 (Running one task at a time)
- Video of ESP32 (Running multiple sequence tasks)