• Stars
    star
    185
  • Rank 208,271 (Top 5 %)
  • Language
    C
  • Created over 11 years ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

AVR ATmega port of freeRTOS

Description

AVR ATmega port of freeRTOS A port of freeRTOS which can be flexibly flexibly configured use almost any available Timer on AVR ATmega devices and will operate with almost any classic Arduino device from Arduino, SeeedStudio, Sparkfun, Freetronics or Pololu.

The Goldilocks Analogue story of adding a dual channel DAC to a 1284p classic Arduino board is told here. The Goldilocks Analogue - Kickstarter Campaign was successfully funded. It was also a Hackaday Prize 2015 Quarter Finalist.

Goldilocks Analogue

The first Goldilocks 1284p story is here. Ths idea was launched as a Pozible campaign in 2013. It was successfully funded and the Goldilocks was developed and supported by Freetronics.

This repo has been hosted on Sourceforge avrfreertos since 2011, and has been downloaded over 35,000 times.

Over the past few years freeRTOS development has become increasingly 32-bit orientated, with little change or improvement for the 8-bit world. As such I'm treating this 1st January 2022 10.4.6 snapshot as my LTS release.

Going forward Sourceforge will be updated less often and only with major releases.

Follow @_feilipu on Twitter.

Getting Started

To get started, follow the instructions on freeRTOS & libraries for AVR ATmega. Then do some further reading on the freeRTOS Quick Start Guide.

If this repository is too complicated to get started, a minimum AVR freeRTOS configured using the Watchdog Timer and Heap 3 is also also available. This option is without libraries, and is configured to get started with simple applications.

Also, for the Arduino platform, there is an Arduino freeRTOS Library available in the Arduino IDE Library manager, or by directly downloading the ZIP file and importing it into your Arduino IDE.

Features

The freeRTOS scheduler can be driven by any of the AVR ATmega timers, down to one millisecond (or less) time slices, depending on the application requirements. By using Timer2 for scheduling timing can be linked with a RTC capability with up to millisecond accuracy. By using the Watchdog Timer for scheduling no externally useful system resources are consumed, but time slicing is limited to 15 millisecond increments. Generally, I use the freeRTOS scheduler for loose timing (15ms) and hardware timers for tight (microsecond) timing, but each application is different.

There are multiple options for configuring the heap in freeRTOS. Please read the freeRTOS descriptions for the appropriate solution relevant to the application. Heap versions 1, 2, 3, and 4 have been implemented for this repository.

An integrated RTC providing Standard C90 system_time using the 32.768kHz crystal attached to Timer2 on 1284p Goldilocks or other RTC equipped boards. Standard C90 system_time is also available as an approximate RTC off other timers using 16MHz and other crystals.

Further Reading

The canonical source for information is the freeRTOS Web Site. Within this site, the Getting Started page is very useful. It is worth having a view from another user, and manicbug has some interesting examples. This AVRfreeRTOS Repository has plenty of examples, ranging from Blink through to a Synthesiser for the Goldilocks Analogue.

More Repositories

1

Arduino_FreeRTOS_Library

A FreeRTOS Library for all Arduino ATmega Devices (Uno R3, Leonardo, Mega, etc).
C
838
star
2

miniAVRfreeRTOS

Minimum FreeRTOS implementation - for all AVR ATmega MCU variants.
C
63
star
3

NASCOM_BASIC_4.7

Z80 8085 MS BASIC Version 4.7 - (C) 1978 Microsoft
Assembly
50
star
4

yaz180

YAZ180 - Modern Single Board Z180 Computer
Assembly
50
star
5

z88dk-libraries

A collection of z80 libraries integrated with z88dk
C
24
star
6

LLL-Floating-Point

Floating-Point Package for Intel 8008 and 8080 Microprocessors
Assembly
14
star
7

ux_module

User Experience Module - RC2014
Propeller Spin
11
star
8

ReGIS

ReGIS, short for Remote Graphic Instruction Set, is a vector graphics markup language.
C
10
star
9

Goldilocks_Analogue_DAC_Library

Firmware for the MCP4822 12-bit, dual channel, SPI interface, DAC integrated into the Goldilocks Analogue, a ATmega1284p MCU classic Arduino board.
C
10
star
10

Arduino_RTC_Library

Real Time functions for AVR (Goldilocks Analogue, Arduino Mega). The underlying avr-libc time implementation aspires to conform with ISO/IEC 9899 (C90). However, due to limitations of the target processor and the nature of its development environment, a practical AVR implementation must of necessity deviate from the C90 standard time.h.
C
9
star
11

Arduino_Goldilocks_Variant

Variant files for Goldilocks AVR ATmega1284p Boards under Arduino IDE. STK500v2 boot-loader including debug monitor.
C
7
star
12

Goldilocks_Analogue_SPIRAM_Library

This library implements firmware to control SPI SRAM, FRAM, and EEPROM as implemented in the Goldilocks Analogue, a ATmega1284p MCU classic Arduino board.
C
4
star
13

planet-motion

Graphical planetary motion calculator
C
2
star
14

planets

A rough calculation of planetary motion - to test floating point solutions
C
2
star
15

rcm2024

RabbitCoreยฎ Module - Designed for RC2014 Standard Bus
1
star
16

8085-opcodes

8085 instructions (including undocumented) in Zilog mnemonics
HTML
1
star