AVR peripheral Drivers by Infidigm


Description

The AVR peripheral drivers provided by Infidigm are free, open source drivers for embedded designers / hobbyists to use on all their AVR projects. The drivers have been written for the ATmega128, but can easily be ported to most of the AVR family, specifically easy to the MegaAVR family. Most of the Infidigm projects that use AVR micro's will use these drivers or variations of them. The AVR Drivers were written to be complied under the free AVR-GCC C compiler ( WinAVR 3.4.3 February 14, 2005).

Links

ATMEL AVR product page
AvrFreaks

AVR specific peripheral Drivers

Description
Version
Files
Analog-to-Digital Peripheral Driver. Interrupt based. Rolling Average filter - size controlled by a #define. 8 channels. 1.1
adc.c
adc.h
EEprom polled read / write Driver. Block Writes Interrupt based.
1.1
eeprom.c
eeprom.h
System Timers Module. Acquire, Check and Release timers. Tick time selectable by a #define. Max time = 0xFFFF * tick time. Timers automatically release after 3x the maximum time.
1.3
tim.c
tim.h
Timer / Counter1 Driver. Input Capture pulse width measurement and pulse counting. PWM for OCR A,B,C. Three selectable pwm frequencies.
1.0
timer1.c
timer1.h
UART Interrupt based Driver. Functions for communicating with a Terminal (HyperTerminal). Print Strings, signed and unsigned numbers.
2.0
uart.c
uart.h
Input Debounce Filter. Debounce filtering can be on the rising or falling edge, or both. Debounce time can be pin specific or Global.
1.0
debounce.c
debounce.h
Watchdog Driver. Functions for servicing "kicking" the AVR internal watchdog.
1.0
watchdog.c
watchdog.h
Simple CAN bus Driver. Functions to send and receive CAN messages. It uses two interrupt based FIFO buffers for RX and TX..
1.0
can.c
can.h
can_readme.txt


Non specific AVR files

Description
Version
Files
Functions for controlling a text 16x2 LCD. Architecture is state-machine based, so time is not lost waiting for the LCD. Can be easily adapted for other sizes of LCDs. Uses 1 full 8-bit port plus 2 extra IO pins. Requires above Timer Module.
1.0
lcd.c
lcd.h
Functions for reading from a 4x4 keypad. Architecture is state-machine based, so time is not lost waiting for button debonce filtering. Uses 1 full 8-bit port. Requires above Timer Module. Requires pull-ups on all 8 IO lines. (~10K) 1.0
keypad.c
keypad.h
key_example.zip
Proportional, Integral, and Derivative Controller. #define selects between floating point or char PID gains. Execution Time at 15.36 Mhz is 24uS for char gains and 385uS for float gains. To learn more about PID control, see Control Tutorials for Matlab.
1.1
pid.c
pid.h
RF Communications Module Driver for the BiM2 or BiM3 by Radiometrix. Uses UART and two IO pins. Encodes / Decode packets with checksum, even 01 balance, TX and RX buffers, Interrupt Based. Typical Baud rate of 19,200 kbps. See the header file for a detailed description of the Packet Structure.
1.0
rf.c
rf.h

Please send questions / comments to "drwho at infidigm dot net". I may not respond to all questions / comments.