This repository of files is a working collection for a freeRTOS based platform using the AVR-GCC and AVRDUDE platform.
Supports ATmega328p, ATmega1284p, ATmega2560 MCU. Arduino UNO, Arduino Mega 2560, Freetronics and Pololu devices are used for testing.
The development environment used was Eclipse IDE. With Eclipse the AVR plug-in is needed.
It is assumed that the AVR libraries are installed, and avr-gcc is used.
For the retrograde project, it is assumed that Pololu libraries are installed.
The freeRTOS folder contains the most recent version 7.1.1 of freeRTOS, but it has been abridged down to only those files relevant for AVR GCC.
The port.c file has been extensively modified to allow the use of any of the 328p Timer0 or Timer1 timers. And, the use of Timer3 on the Pololu SVP which has uses a ATmega1284p. The Arduino Mega 2560 is also supported, using Timer3.
If you want to use 16bit PWM, then you'll need to enable Timer0 for the freeRTOS tick.
The freeRTOSConfig.h file contains most of the variables that you'll need to change.
There are some relevant and often used libraries added.
lib_digitalAnalog: contains often used routines borrowed from Pololu
lib_i2c: contains the tools to use the TWI or I2C bus. contains interrupt driven multi-master and slave routines, both Master and Slave code tested. Multi-master code (arbitration / back off) is untested.
lib_spi: contains the tools to use the SPI bus.
lib_servo: contains routines to enable accurate PWM using Timer1, used in the retrograde clock example.
lib_serial: contains routines to drive the serial interface. there are two versions; avrSerial for use before the freeRTOS scheduler has been enabled, and xSerial for normal operations. xSerial is interrupt driven.
|-> retrograde: digital & retrograde analogue clock, depends on Pololu libraries.
|-> retrograde_v2: a revised and simplified version, with serial monitor time set & reset temp.
|-> lcd_driver: a driver for the Sparkfun LCD using Nokia 6100
| |-> lcd_demo: a simple demo program, developed from the Arduino version.
|-> microbridge: a driver set for the Sparkfun USB Host interface. UNFINISHED
| |-> danger_adb: using the Danger Shield together with Host USB interface. UNFINISHED
| There is a SRAM limitation that prevents all tasks (threads) from running
|-> ConwayLifePeggy: a simple Life game for the Peggy2
|-> PeggyVideo16: an I2C interrupt driven 4bit Video device. Plays video based on inputs.
|-> PeggyVideoPong: a pong game, with interrupt tones, interrupt I2C to video, and CRC video transmission.
|-> MegaBlink: a simple two task program that will flash a LED on either EtherMega or Arduino.
|-> MegaSDTest: getting the ChaN FatF file system on SDCards to work, including serial monitor.
|-> MegaW5100Test: Wiznet W5100 based http server / dhcp client / ping server client.
PeggyVideoPong depends on Peggy2 using I2C communications with an Arduino compatible (Freetronics) and Danger Shield (for sliders and buttons for control).
The music generation (Buzzer.h & Buzzer.c) in PeggyVideoPong uses Timer 2, and PD3 based on the Danger Shield layout.
PeggyVideoPong, depends on the absence of temperature sensor, and knock sensor from Danger Shield to allow I2C to function properly.
Implemented the HD44780 (LCD) protocol independently (using ChaN again) of Pololu libraries.
Standard printf style formatting.