Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
io
 
 
 
 
 
 
 
 
 
 
ui
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README

SYNOPSIS
________

avrilx is a collection of peripheral drivers and utility routines for the AVR
XMega family. Contrary to many libraries out there, it is based on C++
templates and policy-based design (vs run-time parameter
passing to general purpose drivers ; and callbacks). The benefits are smaller
and faster code - which is specialized and inlined at compile time  ; and a much
smaller overhead when layering or glueing together layers of drivers.

Supported peripherals:
- GPIO, bit-level and parallel
- SPI, slave and master
- USART
- USART in SPI mode, master
- TWI master
- ADC
- DAC, single and dual channel
- Timers, PWM
- Various delay and timing functions (using RTC, timers, timed busy loops)

Drivers and utility routines for:
- DMA setups for background data reception into a FIFO, and background data
writes from a FIFO (eg: waveform generation, audio playback)
- ADC multichannel scanning and filtering
- Input (165) and output (595) shift registers
- LEDs arrays
- HD44780 compatible LCDs
- Rotary encoder decoder
- Switch debouncing
- TWI eeprom
- MMC/SD/SDHC card on SPI port, FAT/FAT32 formated, 8.3 filenames,
through two different drivers:
  + A simple, read-only driver suitable for bootloaders (< 2kb of code).
  + A complete interface based on ChaN's FatFS.

Bells and whistles:
- makefile template
- Bootloader allowing firmware updates by MIDI ; and utilities for converting .hex files into .syx files
- Resources system for generating string and lookup tables with python scripts
- A collection of assembly-optimized code for arithmetic operations on fixed
point numbers or unusually-sized integers (4 bit, 24 bits...)


LICENCING
_________

This library is released under a GPL3.0 license. Developed by Emilie Gillet (emilie.o.gillet@gmail.com) for Mutable Instruments.

Credits:

* third_party/sp_driver contains the self-programming code provided by Atmel.
* third_party/ff contains a slightly modified version of ChaN's FatFS library
and MMC drivers.


SETUP
_____

This code has been tested with Boston Android EVAL-USB-128
(http://www.bostonandroid.com/EVAL-USB-128.html) and EVAL-04
(http://www.bostonandroid.com/EVAL-04.html) boards. See the examples/README file
for more information about the hardware setup used for some of the examples.

The build system is configured for the following setup:
- MCU: XMega 128a3
- Programmer: AVR ISP mkII from Atmel.
- Toolchain: avr-gcc 4.3.3 on Mac OS X (CrossPack-AVR).

The toolchain and avrdude paths, along with the port/type of AVR programmer can
be modified in avrlibx/config.mk.

The MCU and crystal frequency can be modified on a per-project basis in the
makefile.

You can use examples/blink as a code and makefile skeleton for new projects!

About

C++ template library for AVR XMega peripherals

Resources

Releases

No releases published

Packages

No packages published