This port is based on freeRTOS 7.02, and it has been filtered specifically for Arduino ATmega328p and Pololu Orangutan ATmega1284p platforms.
- It is possible to use any Timer on the AVR as the system Tick. In practice this means Timer0 on 328p (Arduino) and Timer3 on 1284p (Pololu SVP) are preferred. Timer 1 (16 bit) is too useful as high resolution pwm driver to consume with Tick activities on the 328p. On the 1284p Timer 3 is not connected to any external pins, so it is ideal for an internal system Tick.
- Included is an I2C code base that can simultaneously be Master and Slave, and is fully interrupt driven. I hope that the code can do MultiMaster too, but I haven't fully tested it. Examples of how to use the code are in PeggyVideoPong (Master) and PeggyVideo16 (Slave). This is derived from Atmel libraries.
- There is an SPI library, a CRC8 library, and a digitalAnalog library for simple macros and routines, used often.
- There is a serial port library that has alternative routines avrSerial for polled operation (before initiation of the freeRTOS scheduler, useful for debugging memory usage during initiation), and also for interrupt driven operations called xSerial.
- A Buzzer routine that can play melodies, with real notes, again fully interrupt driven, using Timer 2 (the Danger Shield buzzer is connected to PD3). This is derived from Pololu libraries.
Most defines are found in freeRTOSConfig.h
More example applications (using this code base), on Sourceforge AVRfreeRTOS Project. https://sourceforge.net/p/avrfreertos/home/Home/