Releases: solariun/CorePartition
Improved context switch engine + memory consuption + scheduler interface for specialised tick counter and sleep and Demo improvements and tests
The first ever Universal nanoCore cooperative multithread with scheduler (includes sleep interface for idle times) and interface to specialise how scheduler will treat ticks (to work with microseconds, nanoseconds, ticks, etc). This version supports Interrupt request from timers or signals without any problem.
But, it is a cooperative Thread , it relies on yield () to change context. For Arduino boards based on official Arduino code it will work like preemptive, since every IO block function or sleep will trigger yield. Some ported boards will also offer this capabilities like STM32F01, but you can always use yield on your code
There is a ready to use Arduino example, since it will help test among different targets.
Tested for: Arduinos MEGA 2506, 1280, Genuino Zero, Nano, MKR ZERO MKR 1010, STM32F01, ESP8266-ESP-01, ESP8266, ESP32 (in a single core), Linux, Windows e MacOS terminal program, embedded linux for PI. For all I have used the same example codes here (the main or the Thread.ino at resources)
With this release I am proving some image of a Demo using AMG8833 thermal camera unit (8x8) I2C, plus 2 red dot 8x8 matrix with ISP chain interface, The code works with 3 threads with a Atmega328p, with 1.2k available (the Arduino boot loader took part of the memory) and 32K of ROM. Each thread is consuming around 47 bytes for the thread context plus the stack page.
Added GNU v3 License
Improved context switch engine + memory consuption + scheduler interface for specialised tick counter and sleep
The first ever Universal nanoCore cooperative multithread with scheduler (includes sleep interface for idle times) and interface to specialise how scheduler will treat ticks (to work with microseconds, nanoseconds, ticks, etc). This version supports Interrupt request from timers or signals without any problem.
But, it is a cooperative Thread , it relies on yield () to change context. For Arduino boards based on official Arduino code it will work like preemptive, since every IO block function or sleep will trigger yield. Some ported boards will also offer this capabilities like STM32F01, but you can always use yield on your code
There is a ready to use Arduino example, since it will help test among different targets.
Tested for: Arduinos MEGA 2506, 1280, Genuino Zero, Nano, MKR ZERO MKR 1010, STM32F01, ESP8266-ESP-01, ESP8266, ESP32 (in a single core), Linux, Windows e MacOS terminal program, embedded linux for PI. For all I have used the same example codes here (the main or the Thread.ino at resources)
With this release I am proving some image of a Demo using AMG8833 thermal camera unit (8x8) I2C, plus 2 red dot 8x8 matrix with ISP chain interface, The code works with 3 threads with a Atmega328p, with 1.2k available (the Arduino boot loader took part of the memory) and 32K of ROM. Each thread is consuming around 47 bytes for the thread context plus the stack page.
Added GNU v3 License