avr-libc: AVR Libc

AVR Libc Home Page |  | AVR Libc Development Pages
Main Page | FAQ | Library Reference | Additional Documentation | Example Projects

# AVR Libc

### 1.4.4

## Introduction

The latest version of this document is always available from http://savannah.nongnu.org/projects/avr-libc/

The AVR Libc package provides a subset of the standard C library for Atmel AVR 8-bit RISC microcontrollers. In addition, the library provides the basic startup code needed by most applications.

There is a wealth of information in this document which goes beyond simply describing the interfaces and routines provided by the library. We hope that this document provides enough information to get a new AVR developer up to speed quickly using the freely available development tools: binutils, gcc avr-libc and many others.

If you find yourself stuck on a problem which this document doesn't quite address, you may wish to post a message to the avr-gcc mailing list. Most of the developers of the AVR binutils and gcc ports in addition to the devleopers of avr-libc subscribe to the list, so you will usually be able to get your problem resolved. You can subscribe to the list at http://lists.nongnu.org/mailman/listinfo/avr-gcc-list . Before posting to the list, you might want to try reading the Frequently Asked Questions chapter of this document.

Note:
  If you think you've found a bug, or have a suggestion for an improvement, either in this documentation or in the library itself, please use the bug tracker at https://savannah.nongnu.org/bugs/?group=avr-libc to ensure the issue won't be forgotten.

## General information about this library

In general, it has been the goal to stick as best as possible to established standards while implementing this library. Commonly, this refers to the C library as described by the ANSI X3.159-1989 and ISO/IEC 9899:1990 ("ANSI-C") standard, as well as parts of their successor ISO/IEC 9899:1999 ("C99"). Some additions have been inspired by other standards like IEEE Std 1003.1-1988 ("POSIX.1"), while other extensions are purely AVR-specific (like the entire program-space string interface).

Unless otherwise noted, functions of this library are not guarenteed to be reentrant. In particular, any functions that store local state are known to be non-reentrant, as well as functions that manipulate IO registers like the EEPROM access routines. If these functions are used within both, standard and interrupt context, undefined behaviour will result.

## Supported Devices

The following is a list of AVR devices currently supported by the library. Note that actual support for some newer devices depends on the ability of the compiler/assembler to support these devices at library compile-time.

AT90S Type Devices:

- at90s1200 [1]
- at90s2313
- at90s2323
- at90s2333
- at90s2343
- at90s4414
- at90s4433
- at90s4434
- at90s8515
- at90c8534
- at90s8535

ATmega Type Devices:

- atmega8
- atmega103
- atmega128
- atmega1280
- atmega1281
- atmega16
- atmega161
- atmega162
- atmega163
- atmega164p
- atmega165
- atmega168
- atmega169
- atmega32
- atmega323
- atmega324p
- atmega325
- atmega3250
- atmega329
- atmega3290
- atmega48
- atmega406
- atmega64
- atmega640
- atmega644
- atmega644p
- atmega645
- atmega6450
- atmega649
- atmega6490
- atmega8515
- atmega8535
- atmega88

ATtiny Type Devices:

- attiny11 [1]
- attiny12 [1]
- attiny13
- attiny15 [1]
- attiny22
- attiny24
- attiny25
- attiny26
- attiny261
- attiny28 [1]
- attiny2313
- attiny44
- attiny45
- attiny461
- attiny84
- attiny85
- attiny861

Misc Devices:

- at94K [2]
- at76c711 [3]
- at43usb320
- at43usb355
- at86rf401
- at90can32
- at90can64
- at90can128
- at90pwm2
- at90pwm3
- at90usb646
- at90usb647
- at90usb1286
- at90usb1287

Note:
  [1] Assembly only. There is no direct support for these devices to be programmed in C since they do not have a RAM based stack. Still, it could be possible to program them in C, see the FAQ for an option.

Note:
  [2] The at94K devices are a combination of FPGA and AVR microcontroller. [TRoth-2002/11/12: Not sure of the level of support for these. More information would be welcomed.]

Note:
  [3] The at76c711 is a USB to fast serial interface bridge chip using an AVR core.

Automatically generated by Doxygen 1.4.6 on 20 Apr 2006.