by Martin THOMAS
G.d.W. SS2010 FHFFM
You may like to visit my ARM-Projects page too (projects and information for NXP LPC2000,
Atmel AT91SAM7, STmicro STR7, STM32, LMI LM3S and other controllers with an ARM-core). Last update in the ARM-section:
25. Apr. 2012.
Available Projects and Information (Content)
"Last updated" may be just additional information not always a new version of a software-package.
AVR Butterfly Application code port to avr-gcc
The AVR Butterfly (ATAVRBFLY) made by ATMEL comes
with a preloaded application. The application source-code can be downloaded from the
ATMEL Web-Site (AVR Butterfly -
Application Rev07). It is written for the IAR EWAAVR 4.20a C-Compiler.
This is a port of this code to avr-gcc using the avr-libc. Links to avr-gcc, avr-libc and the
Windows-Distribution of the toolset (WINAVR) can be found here.
For german readers: Der Quellcode der auf dem AVR-Butterfly installierten Applikation wird von ATMEL
für den IAR C-Compiler zum Download bereitgestellt. Anwender denen dieser Compiler nicht zur
Verfügung steht, finden auf dieser Seite eine Portierung des Quellcodes auf den frei erhältlichen
Compiler avr-gcc unter Verwendung der ebenfalls freien Bibliothek avr-libc. Falls Sie MS-Windows Anwender sind,
finden Sie alle notwendigen Werkzeuge in der Sammlung WINAVR.
Den gcc-Quellcode der Butterfly Applikation finden Sie zum Download weiter unten. Bitte nutzen Sie die neuste
Version (=Download mit jüngstem Datum).
Even if you do not own an AVR Butterfly you may find usefull information in the BF application code for
general ATMEL AVR development tasks.
- State-machine (Zustandsautomat)
- Using the ATmega169 build-in LCD-controller
- Using a AVR ADC converter with LDR and NTC sensors and general voltage-reading
- AVR Hardware SPI
- Accessing ATMEL Dataflash via Hardware SPI
- Power-Saving and sleep modes
- Sound (beep-music) playback via PWM and piezo
- Integration of a UART-based bootloader
- wake-up on key (pin-change interrupt) and Key-debouncing
- Real Time Clock (RTC)
From the gcc-port of the application code some methodes how to convert IAR-code to avr-gcc/avr-libc-code
can be learned.
- Accessing data in the flash-area with the program-space utilities to work around the missing generic-pointers
- Working around incompatibilities between avr-libc and ATmega169 in eeprom-access and sleep-modes
Butterfly gcc-port history
|Application gcc-Port - last Changes||Date|
|Added patch for GCC 4.7||3. Jul. 2012|
|Release of version 0.7.6||17. Dec. 2009|
|Release of version 0.7.5||15. Aug. 2009|
|Release of version 0.7.3||2. July 2009|
|Link to Joe Pardue's Butterfly Alternate Pin Uses document||28. Aug. 2007|
|Version 0.7.2, see readme-file for details||17. May 2007|
|Minor update in Version 0.7.1 (only comments)||8. Feb. 2007|
|Version 0.7.1||31. Jan. 2007|
|Marked version 0.6.6.1 as latest version||22. Aug. 2006|
|Example-application Joystick/LCD/Variables||24. Apr. 2006|
|Preliminary Release 0.6.6.1 (for avr-libc 1.4.3), modified some examples
to avoid compiler-error with avr-libc 1.4.3 (WinAVR 20060125)||28. Jan 2006|
|uart_echo-Example: Fix in OSCCAL-Calibration||23. Jan 2006|
|Release of Version 0.6.6 (includes AVRStudio-workspace for AVRStudio >= Version 4.12)||9. Jan 2006|
|Link to AvrFlasher for OS X and Linux (Java) in the Programmer/Flashing section||6. Dec 2005|
|Added link to a camera remote control project with a BF||19. Oct 2005|
|Remark about DIDR0 and LCD operational voltage in the Information-Section||24. Aug 2005|
|Update of Joystick-Interfacing with GPIO Demo||5. July 2005|
|Two small Demos: Joystick-Interfacing||30. Jun. 2005|
|Fixed LCD-test example (case sensitive make in WinAVR 2/05). Fixed UART-echo example (SFR labels as in iom169.h of WinAVR 2/05)||25. May 2005|
|Added link to the "AVR Butterfly MP3"-project||15. Feb. 2005|
|Example Application by Chalermphol Thammapalerd using Salvo RTOS on the Butterfly||25. Nov. 2004|
|Added links (book sample chapter, carrier board)||16. Nov. 2004|
|New Version 0.6.5||27. Aug. 2004|
|Interims Version to fix incompatiblity with avr-libc 1.0.4 (as in WinAVR 20040720)||20. Jul. 2004|
|Fixed avrdude command-line example (Thanks to Tobias Jahn)||15. Jun. 2004|
|Anmerkungen zum Artikel im Linux-Magazin 07/04 (in german)||12. Jun. 2004|
|New version of Richard Wynn's application (HVAC) now with SHT11 readout. Fixed power-save issue in old version.||10. Jun. 2004|
|Information about using the JTAG-Pins for general-I/O and AD-conversion||1. Jun. 2004|
- 2.Oct.2003 - 4. Dec. 2003 Older "diary entries" can be found in the Archive
- 9. Jan. 2006 - Version 0.6.6/20060107. Includes an AVRStudio-Workspace for the gcc/WinAVR-plugin tested with AVRStudio V4.12SP1, small
improvements and code-size-reduction (see the readme-file).[Download the old Version 0.6.6].
This version should be used of older avr-libc-versions (as in WinAVR before 1/06).
- 28. Jan. 2006 - Version 0.6.6".1". Small fix so the project can be built
with avr-gcc 3.4.5 and avr-libc 1.4.3 (as in WinAVR 20060125 and later).
Interrupt-service-routines adapted to new style. Tested with the hardware
by Frank Henriquez, thanks for the feedback. [Download the old Version 0.6.6.1]
(zip-archive, timestamp 20060128, hex-File included, all songs activated).
- The gcc-port of the application-code is as free as the code that Atmel provides for the IAR-compiler. There is just one exception: all parts
of the code that include lines that have been created or modified by me for avr-gcc-compatibility must not be published in
the AVRButterfly yahoo-group or in the avr.forumer15-forum.
- 17. May 2007 - Version 0.7.2. Includes bug-fixes from Atmel's REV_07-source (for IAR).
Adapted interrupt-handling, sleep-modes and eeprom-handling to new avr-libc. Fixed possible buffer overrun in vcard. Details in the readme.txt.
Tested with avr-gcc 4.1.1/avr-libc 1.4.5 (as in WinAVR 20070122).[Download the old Version 0.7.2]
(zip-archive, timestamp 20070517)
- 2. July 2009 - Version 0.7.3. Only minor modifications and updates to reduce binary-size and to avoid warnings, new song.
[Download old Version 0.7.3]
- 18. August 2009 - Version 0.7.5 (0.7.4 has never been published). Only minor modifications to increase compatibility with case-sensitive filesystems.
Contributed by Markus Strobl. [Download Version old 0.7.5] (zip-archive, timestamp 20090815).
- 17. December 2009 - Version 0.7.6. Small modification in LCD_clear() contributed by Michael Löffler.
[Download Version 0.7.6]
(latest version, zip-archive, timestamp 20091217).
- 3. July 2012 - Bert Lange kindly provided a patch-file so the example-code
can be compiled with GCC 4.7. His modifications will be included in the next version.
Butterfly resources (local and remote)
- Flashing with AVRPROG (comes with AVRStudio) and the preinstalled bootloader on the AVR Butterfly is documented in
Al Boehnleins guide (see below) and in the Butterfly user-guide (pdf, remote).
Flashing via ISP is possible if you solder a connection and use a programmer that does not exceed the maximum voltage (4,5V).
On the STK500 Vtarget voltage can be set so it's a save way to program via ISP. JTAG programming is described in the ATMEL documents
mentioned below and in the Butterfly manual. Don't use ISP/JTAG if you do not fully understand fuses/lockbits and "chip erase", stay with
AVRPROG (or AVRDUDE) and the serial connection. The bootloader will not work any longer once the chip is erased or some fuse-bits have been changed.
- With avrdude from Version 4.3.0 the Butterfly can be programmed via
serial-port (RS232) and the preinstalled bootloader (programmer-type "butterfly"). With avrdude the Butterfly can be programmed from
a Linux/Unix system or from a Windows systems (avrdude is included in WinAVR). See this short step-by-step guide (local)
how to build avrdude from the source with cygwin or Linux/Unix. Just press
the "joystick" up to leave the bootloader and start the application after the flash upload.
Short guide programming the Butterfly with avrdude:
- Butterfly must be in "Bootloader Mode" either via reset (connect Reset-Pin and GND-Pin at the ISP-Connector), toggle power (remove and insert battery) or
"Jump to bootloader" from the application if this function is supported (in the preinstalled application in the Options-menue). The LCD is blank in
- Type something like: avrdude -p atmega169 -c butterfly -P com1 -U flash:w:foo.hex into the command-shell (in MS-Window's cmd.exe/command.com;
replace com1 with /dev/ttyS[x] in Linux/Unix). If you're using a makefile adapt the setting according to the given parameters.
- Press the joystick ("enter") on the Butterfly
- Hit the enter/return-key on the PC-keyboard to start avrdude (or execute "make program"). The Butterfly joystick must be helt down during the startup of avrdude.
- avrdude should write the flash-memory now.
- push the joystick in the "up"-direction to start your application.
- AvrFlasher for OS-X by Henri-Pierre GARNIR can be found at this link. This software features a graphic
user interface for uploading program-code into the Butterfly's ATmega169 via the serial connection (USB<->serial converter) and the preinstalled Butterfly-bootloader.
Additionaly it offers a "tools-menu" with entries for calling avr-gcc and the avr-binutils and a terminal window for serial communication. Information about using the
gnu-avr-toolchain with Mac OS X and USB-serial converters known to work with the software can be found in the user's manual.
A "reduced version" of AvrFlasher for Linux is also available.
Code and packages derived from the AVR Butterfly gcc-port
- Richard Wynn from Apopka, Florida sent a ported version of the code "Source for US seminars HVAC_SEM.zip" that has been available from the
AVRFREAKS site some time ago. The application is based on the ATMEL(Norway) Butterfly application-code and has been modified by ATMEL(San Jose)
to simulate a temperature controller on the Butterfly. Richard ported this code to gcc using parts from the application-gcc-port. NEW:
Richard has sent an updated version with additional features: reading values from an humidity-sensor
SHT11 (datasheet, pdf, remote).
Additional information from Richard:
"I have 'flattened' the menu structure and tried to open up as much room as possible for additional code.
The beep routine does not use the space of the 'sound' program for simple user feedback. This program has
a 'wake-up' timer that uses the RTC to bring itself awake without user pressing the button."
Download the source-code (local) and see it in in action (jpeg ca.70kB, local). Richards old application (without SHT11) is still available here
(local, power-save fixed).(@SL: Vor Aufnahme in cdk4avr Einverständis von RW einholen.)
- LCD-Test (timestamp, 20060128, local) Small avr-gcc Project to test the Butterfly LCD (aka "Hello World"). Just enough code to let
the line "AVR Butterfly GCC" scroll on the LCD. Based on the Atmel application code.
- UART-echo (timestamp 20060123, local) Small avr-gcc Project to test the Butterfly UART. Just enough code to echo a
char received via UART (set terminal to 9600,8,n,1,no handshake).
- My Butterfly application gcc-port has been included in the cdk4avr collection (remote) as an
example application. Unix/Linux-Users can download a rpm-package from this site.
- There is a patch for the gcc-application code 20031016 that adds a "key-click" at version6.net (section "My AVR stuff", remote).
Stephan Linz (li-pro.net) has sent an updated version of the key-click patch for the version 0.6.4 gcc-code.
Download this patch here (local). Keyclick-functions have been added to the main source-code since version 0.6.5.
- My AVR Butterfly based data-logger
- Chalermphol Thammapalerd from the Faculty of Electrical Engineering at Thammasat University, Thailand has sent a demo-application which uses
Salvo RTOS on the Butterfly. From his comments: ...it creates three tasks ... for handling input from temperature sensor,
show the parameter on LCD and send it through Serial Port by respect. You need the Salvo RTOS demo-distribution to compile and link the code.
Download of source (without Salvo). Please send questions about this code directly to Chalermphol Thammapalerd
( t.chalermphol(at)gmail(dot)com ).
- "Joystick"-interface-demos which print the joystick's position on the LCD. There are two variants available:
- A Dataflash-library for the Arduino project based on the Butterfly example-application's
Dataflash-code is available [here].
- If you are using older versions of the LCD-driver from the gcc-port in own projects: add #include <avr/interrupt.h> to avoid errors with
newer version of the avr-libc (as in WinAVR 20060125). An updated version of the driver which also uses ISR instead of SIGNAL is
available in the application gcc-port version 0.6.6.1 and above.
Butterfly information and documents
- Al Boehnlein has sent his manual "Programming the Butterfly for idiots like me" which describes all steps to bring the
gcc Application code port into the Butterfly using WinAVR and AVR-Studio. Download Al's document (pdf-format, ca. 900kB, local).
I've added some remarks and did a little formating and pdf-conversion, the main text is from Al.
(Text in MS-Word format (ca. 2,1 MB, local)).
- AVR Butterfly "Homepage" at ATMEL
- AVRStudio from Version 4.08 has detailed information
for the Butterfly in the online help. Most of text in the online help is a copy from the Butterfly user-guide (pdf, remote) but the pictures
are of better quality (and not B/W).
- Carsten (www.thelastinstance.de) has made a picture
with all external connectors (ca. 55kB, local) of the Butterfly. This gives a better overview about the
available connections than the Atmel user-guide.
- AVR Butterfly Primer by David Welch (remote). Flash upload via AVRPROG, Assembler code examples, LCD in Assembler.
- App.-Note AVR065: LCD Driver for the STK502 and AVR Butterfly
(Code to App-Note) (remote)
- Some general Butterfly information from ATMEL mirrored here: AVR Butterfly Introduction (pdf-File, ca. 860kB, local).
Butterfly Training (pdf-File, ca. 620kB, local).
- AVR-Freaks Butterfly-Tools-Page (remote)
general information, links to the application source-code for Imagecraft, IAR and GCC (this page).
- Source code of the application-code port to Codevision (remote).
- A little off topic: Some datafash C source code for software SPI found somewhere in the avrfreaks-forum Download Dataflash_Example.zip (zip-Archive, local). Made bei Atmel(TF).
For AVRs without (and of cause with) hardware SPI. The code included in the Butterfly Source is for devices with hardware SPI like the ATmega169V on the BF.
Look into the files dataflash.h, dataflash.c and test.c in the Buttefly Application-Code to see how the dataflash can be accessed via hardware-spi.
- There have been some questions about "free" pins of the ATmega169 on the AVR Butterfly. Please refer
to the schematics in the Butterfly user's guide.
Most of the ATMega pins are blocked by the Butterfly on-board hardware and can not be used without loosing
some functionality (esp. LCD).
With some of these free I/O pins the number of inputs and outputs can be easily increased by using external shift-register
integrated circuits like 74HC595 for outputs and 4021 (i.e. HEF4021B) or 74HC(T)165 for inputs.
- The USI pins are free to use and available thru the USI connector.
- The 4 JTAG-pins are also available for I/O or A/D-conversion if the JTAG-interface is not needed. Before the JTAG-pins can be
used the JTAG-interface of the ATmega169V has to be disabled either by changing the
JTAG-Enable-fuse via ISP of by programming the JTD bit in the MCUSCR register at application startup.
So JTAG can be turned off with the JTD bit without an ISP connection. (Further information)
- If Chip-Select for the Dataflash is kept under control of the application the ISP-Pins might be used.
- Taking the onboard level-shifter for RS232 into account the RX and TX Pins can be used.
- Taking the onboard voltage-divider into account the Voltage-Reader Pin connected to the ATmega ADC-converter may be used
- If setup and user-interaction in the application are separated or configuration is done via RS232 the pins connected to the
joystick may be used (block physical access to the joystick).
Joe "smileymicros" Pardue's Butterfly Alternative Pin Uses (external link to a pdf-file (ca. 800kB)).
- robotgames.net (remote) "Here's a very informative posting to the society mailing list from Craig L.
discussing the port assignments of the ATMEL AVR [Butterfly]..."
- In the german "Linux-Magazin" there is an article about using and programming AVRs esp. the AVR Butterfly.
Im Linux-Magazin Ausgabe 07/04 findet sich unter dem Titel "Vielfältiger Schmetterling" eine Einführung in AVR-Controller,
die gnu-Toolchain und einiger Tools am Beispiel des AVR-Butterfly. Im Artikel wird auf diese Seite verwiesen.
Einige Abmerkungen zu dem Artikel.
- Tobias Jahn's Atmel AVR Butterfly FAQ for Linux Programming with avrdude via RS232/UART,
restore Bootloader, Linux-Magazin 07/04 errata
- A Butterfly "Carrier Board" from ECROS. Sold as bare-board, kit or assembled.
Get the bare-board for around $9+shipping, the needed parts are cheap, easy to solder and you need to solder the pin-headers to the BF anyway even if you buy the assembled board.
- First 30 pages from the book "Quick Start Guide for using the WinAVR Compiler with ATMEL's AVR Butterfly".
I do not own this book. The first pages are more or less like a combination of the WinAVR getting-started from O'Flynn/Weddington and the various BF-guides to which this page links.
The complete book is available at www.smileymicros.com.
- Butterfly-MP3 A MP3-player project using a Butterfly and a VS1001 MP3 decoder.
- The Bootloader sets some bits in DIDR0 which are not reset when the main-application gets started. Be sure to include DIDR0 and DIDR1 in
your application's initialisation-function.
- The AVRStudio online-help to the STK502 mentions a LCD "Operational Voltage" of 3 Volts. The LCD used on the STK502 is the same type
as the one on the Butterfly. Together with the electrical characterstics of the Datafash this is another good reason to keep the
Butterfly's operational voltage well below 5V and even below 4,5V as mentioned in the Butterfly's user-Manual.
- DSLR Timer Remote Control Project by Michael Posavec.
- 'sendhb' has created a stand-alone sound-player based on the Butterfly-Application's sound-playback functions for an ATmega16.
Visit his Sound Bug page for more information.
- Thomas Black's Monarch. A barometric altimeter using the Butterfly and an
external barometric sensor.
- Dean Camera's ButtLoad. A firmware which turns the AVR Butterfly into
an AVRISP compatible device.
AVR Butterfly based Data-Logger
AVR Butterfly: low-power-controller, on-board 4Mbit Dataflash, simple "human-interface", A/D converter on-chip, some free I/O-pins:
predetermined to be used for data-logging. The Data-Logger has its own page.
A modified version of the datalogger is in use as a motor-current logger for a robot. See some pictures on
AVR Butterfly Bootloader code port to avr-gcc
The AVR Butterfly (ATAVRBFLY) made by ATMEL comes
with a preloaded bootloader to upload applications via RS232 from AVRStudio's AVRPROG. The bootloader source-code
can be downloaded from the ATMEL Web-Site (
AVR Butterfly - Bootloader Rev02). It is written for the IAR C-Compiler.
This is a port of the bootloader code to avr-gcc using the avr-libc.
Please use the latest version of the toolchain (avr-gcc 3.3.1 or newer, avr-libc 1.4.x or newer,
WinAVR Jan. 2007 or newer) to compile and link the code. Older versions will cause problems. Make sure
to re-enable the SPM lock for the bootloader section after flashing the bootloader. Please read the text in file
readme.txt included in the archive for more information. Feedback and bug-reports are welcome.
- 17. May 2007 - fixed delay-loop. Download the source-code Archiv (zip-Format) of Version 0.32,
Timestamp 20070517 here
- 23. Jan. 2004 - First release of the bootloader gcc-port. Download the source-code Archiv (zip-Format) of
Version 0.1, Timestamp 20040123 here. The hex-file is included.
- 27. Jan. 2004 - Second release of the bootloader gcc-port. No new functions, code cleanup, commets added.
Download the source-code Archiv (zip-Format) of Version 0.2, Timestamp 20040127 here.
The hex-file is included.
- 3. May 2005 - Fixed Eeprom-Write. Download the source-code Archiv (zip-Format) of Version 0.31,
Timestamp 20050503 here. The hex-file is included.
The bootloader can be used with other AVR devices, just change the "start bootloader" condition and UART
initialisation to your needs. They are adapted to the AVR Butterfly in the given source ("joystick" and calibrated internal
clock from 32kHz clock-quarz). I've tested modified versions of the bootloader with an ATmega16 and ATmega8. Since
block read/write is used the bootloader might be faster than others on uCs which support this method.
Butterfly Bootloader Resources
AVR DB101 example-application gcc-port and DB101 resources
The Atmel AVR DB101 (ordering code ATAVRDB101) is
a small module with an AVR ATmega1281 microcontoller, a 128*64 graphics display and some additional hardware (i.e. joystick,
piezo-"speaker", level-shifters for logic and RS232, Dataflash memory). More information on the hardware can be found in
application-note AVR481. The schematic is
available from the associated files-package (AVR481.zip)
to the application note.
The device comes with a preinstalled demo-application ("production demo A"). A description of the application and the used
driver-library can be found in the software user's guide
(application note AVR482).
The source code is available in the software-package (AVR482.zip)
to this application note. The code provided by Atmel is for the IAR AVR toolset (IAR EWARM/iccavr-compiler).
I (Martin Thomas) have modified/ported the library and demo source-code to be compatible with the AVR "GNU-toolchain"
(avr-gcc using the avr-libc).
Windows users will find all needed tools in the WinAVR package. Atmel's
AVR-Studio can be used as IDE. Since a compiler abstraction layer" (CAL) has been
added the source available here is more than just a gcc-version but offers support for both toolsets, either GNU avr-tools or IAR's
EWAVR toolset can be used without further modifications. The CAL might be useful for other projects where IAR and GNU tools
for (8-bit) AVR are used.
Download the source-package of the DB101 example-application's gcc-port [here].
(timestamp 20080301, All source-files, "stand-alone" makefile, AVR-Studio- and EWAVR workspace-files are included. Please see
included readme_mthomas.txt for further information. )
AVR DB101 links:
- 20080225 - version update. Thanks to Kevin Rosenberg for improving and testing IAR-support in the compiler-abstraction-layer and
Colin O'Flynn for more tests with IAR-EWAVR. Full source of the old version 20071016 still available [here], patch
from diff between Atmel's 20070917-codebase and GNU-port 20071016 [here].
- 20080301 - minor updates to increase "out of the box"-compatibility with IAR-EWAVR. Thanks again to Kevin Rosenberg and Colin O'Flynn for
the IAR tests and Colin O'Flynn for a modifed IAR-settings-file. Full source of the old version 20080225 still available
AVRPROG compatible bootloader for ATMEL ATmega Controllers
This bootloader-code is based on the Butterfly-Bootloader an has been extended and ported to avr-gcc/avr-libc. Programming
Software is AVRPROG (in the tools menue of AVRStudio or as standalone application) or any AVR109/AVR910 compatible programming software (like i.e.
avrdude, the AVR910 and AVR109 protocols are a little different but most commands are the same).
The "Version 0.8"-series of the bootloader has been tested with ATmega8, ATmega16, ATmega169, ATmega32, ATmega128 and AT90CAN128. Support
for other AVRs can be added using the definitions for the supported devices as templates. configuration is done in the makefile and in main.c
- Old version 0.7: Download the old source and a hex-file of Version 0.7 (20050226) here (zip, local).
See the readme.txt-file that comes with the source
for more information.
- Uwe Bonnes contributed a modified source which supports the AT90CAN128. He's also done some modifications in the Makefile and in the UART-baudrate macro.
Get his version (0.74) here.
- Björn Riemer added a startup-wait method. His message (translated):
I have adapted the bootloader so there is no external jumper needed to flash[/start the bootloader]. When STARTUP_WAIT is defined it [the bootloader]
waits 900ms for the command 'S'. If the command is not received the bootloader starts the application. If the application code
resets [the controller by watchdog] when receiving the command ESC [(0x1B), which is sent by AVRProg and avrdude as first character]
no external reset is needed for an update.
Download the old version 0.75 here.
- Olaf Rempel has done a lot of modifications and code-cleanup. The code he has contributed together with some extensions I have added is
has become Version 0.80. Please refer to the readme.txt in the source-archive for further information.
Download the old version 0.80 here.
- Version 0.81 includes a bugfix when UART-doublespeed is selected ("U2X"). Thanks to Bernhard Roth for the report.
Download the old version 0.81 here (timestamp 20061002).
- In Version 0.83 support for ATmega324P, ATmega644P and ATmega644(v) has been added.
Download the version 0.83 here (timestamp 20080412).
- In Version 0.84 support for ATmega64 has been added. Contributed by Pavel Fertser.
Download the version 0.84 here (timestamp 20081106).
- In Version 0.85 baud-rate macros have been modified. Suggested by Alexander Döller.
Download the version 0.85 here (timestamp 20081203, latest version).
- A special version for AVR ATmega1280 which is not yet integrated in the main package is available here. Contributed
by Ilya Antonichev.
- Additional files needed to use the booloader on an ATmega8535 contributed by Adrien Destugues (ENSSAT Robotique) available here.
And yes, this bootloader can be used for "bootice"-boards to program the JTAG firmware to an ATmega16 without verify error.
A non-free version of the bootloader with encryption (XTEA, 128 Bits Key) is also available. This bootloader can be used with
Atmel's AVRProg (comes with AVRStudio but can be used as stand-alone application) and avrdude. The firmware fits into a
1024 Words boot-section. Included in the packed as the full source-code of the bootloader-firmware (avr-gcc) and the PC-application (portable C-Code)
to encrypt the firmware. Please send an e-mail if you are interested. A binary-only demo-version is also available (for ATmega16).
Clock with a character-LCD and large letters
A clock driven by an Atmel AVR which displays the time in larger letters using user-defined characters on a industry-standard
character/textmode-LCD (Hitachi HD44780 or compatible). More on this page.
AVR - SED1520 and ST7565 GLCD-Library
A device driver written in C (avr-gcc) to interface Atmel AVR-mirocontrollers with SED1520- and ST7565- based graphics display-modules. More
on this page
A slightly extended version of Peter Fleury's Text-Mode-LCD library
Peter Fleury has done a very nice and easy-to-use avr-gcc library to drive Hitachi HD44780
and compatible Text-Mode LCD-displays with AVR microcontrollers. I've done some small extensions to make "auto-warp" compatible with
the Displaytech 164A LCD-Module (available e.g. at www.reichelt.de) and added a scroll-up function. With scroll-up and the added
feature auto-scroll you can print e.g. debug-messages on the display without taking care of the cursor position. Get the source-code
here (timestamp 20050602, avr-libc 1.2.3 compatibility-fix). A (crude) demo-program together with a
makefile for avr-gcc (WINAVR) to drive a Displaytech 164A
with an AVR ATmega16 is included. A document how to connect a HD44780 or compatible display to the Atmel STK 500 is included in the
Andreas Heinzen has contributed an extended version of the library. He corrected some timings-issues to make the library
compatible with an at90s2313 and Displaytech162 display-module, added an 8-bit interface and support for 2-line scrolling.
Get Andreas's library here (timestamp 20050818).
Maxim/Dallas DS18x20 Temperature-Sensors readout with AVR
Demo application to read DS1820, DS18S20 and DS18B20 temperature-sensors with an Atmel AVR controller. More information and
source-code on this page.
Timer-based AVR Software-UART
Some AVRs do not have a hardware-UART others have one or two. In case a UART is needed on "non-UART" AVRs
or the available hardware-UARTS are not enough to fullfill the project-needs a software-UART can be used.
The software-UART available here is based on the "gerneric software uart" by Colin Gittins which can be downloaded from
the iar.com website in the application-notes section.
I have ported/adapted this code to AVRs using avr-gcc/avr-libc and fixed some smaller mistakes. This code does not need an external interrupt-pin for the
RX-line - any input-pin will do. But the RX pin gets sampled three times the baudrate so more process-time is needed compared
to an "external-int" approach as presented in various Atmel Application-Notes.
Get the latest version of this "softuart-library" including a demo-application here (timestamp 20101010).
- 20070319: fixed handling of start- and stopbit in receiver-section, code-cleanup, extended example-applciation
- 20070430: added more configuation options for easier adaption to other AVRs, this time tested with an ATtiny85
- 20101010: different minor modifications, included settings for ATmega164(P|PV|PA), ATmega324, ATmega644
VT100 Terminal Driver
This is a port of the Atmel VT100 terminal-driver to avr-gcc/avr-libc. Nothing special but maybe useful. I've extended the example-application a
little bit too. Get the library's source including a demo-application here (timestamp 20050821).
Eversmith - AVRSMS
Firmware to send and receive Short Messages (SMS) in a GSM-Network using an AVR-ATmega microcontroller from ATMEL
and an AT-command compatible GSM-Phone/Module. The software supports the SMS-PDU-Mode. Written in Assembler using AVRStudio4.
Proceed to this page
to get more information and code.
The Blinky Toys - "Fun with LEDs"
Some "light-toys" I made mainly as xmas or birthday gifts. So far these are:
- Blinky44 - 4*4 LED-Matrix with 10mm LED showing patterns
- Blinky^3 - 3 20mm LEDs fading in and out.
CAN-CAN AVR and Controller Area Network
AVR "dances the CAN-CAN". CAN (Controller Area Network) projects with Atmel AVR microcontrollers
can be found on this page.
AV/Rf Wireless/RF-Data-Link between AVRs
Preliminary - more Information on this page.
Interfacing Atmel AVR microcontrollers with RFM22 ISM transceivers
More Information on this page.
Port of the Atmel BC100 example code to avr-gcc/avr-libc
The BC100 [ATAVRBC100] is a reference design that demonstrates charging and discharging of two batteries/battery packs with a programmable charge voltage up to 40V. Futher information can be found on the BC100-page at atmel.com. Atmel
provides two demo-applications which demonstrate charging for NiMH- and LiION-batteries (Application notes AVR463 and AVR 458). The code available from Atmel has
been created for the IAR EWAVR toolset. Kevin Rosenberg created the initial avr-gcc/avr-libc-port of this code and I have made some modifications and extension. I also
created a small demo-application for the second AVR on the board which is an ATmega644 connected to the ATtiny861 that is as chargeing-controller.
Kevin Rosenberg's avrcode-site hosts a git-repository and there is also a souce-package available. Here I just host
a backup-archive which may not be the latest version and just reflects the state when I have modified the code the last time.
- The "official" gcc-port from avrcode.com
- A local (="unofficial") and maybe outdated copy from [here] (zip-Archive, timestamp 20080612)
Digitally Addressable Lighting Interface (DALI)
Interfacing the Digitally Addressable Lighting Interface (DALI). More Information on this page.
Experimental avrdude Versions
Some experimental versions of the AVR programming software avrdude
This versions are for testing only and not supported by the main avrdude developers. Please do not send bug-reports or
questions about this versions to the avrdude-dev- or other mailing-lists.
Please send feedback and bug-reports to the e-mail address given at the end of this page.
- Older experimental avrdude-versions can be found in the Archive.
- Download avrdudew32 Version 0.6 for CYGWIN build environment here,
based on avrdude 4.3.0 CVS checkout 29. Jun. 04). Cygwin is only needed to compile and build from the source.
The produced exe-file does not depend on cygwin-dlls. Changes: butterfly-programmer login-procedure changed, RS232-drain-timeout on RS232,
- An experimental version of avrdude with STK500/Atmel AVRISP Firmware 2.0-support is available
here (based on CVS-checkout 29. Jan. 2005, timestamp 20050222).
This version does support autodetection of the STK500 firmware. When using programmer option stk500 the software will
try to detect firmware version 1.x, if the STK500 is already updated to firmware-version 2 the software will continue
with the new code. To use the new code directly use programmer option (-c) stk500v2 instead of stk500.
In terminal-mode the command sck is not available for STK500V2. It has been replaced by the command
fisp which is used to set the ISP-frequency. The STK500V2-code will
automaticly set the ISP-frequency to the nearest possible value same or slower than the frequency given as parameter.
The code does not use values from the XML partdefinitions provided by Atmel with AVRStudio. The official avrdude-
release will use these. The archive does include all sources to build with gcc on Unix/Linux/BSD/cygwin and a
MS Visual-Studio 6.0 workspace to compile/debug with MS Visual C.
The stk500v2-module has been tested with AT90S8515, ATmega8, ATmega16, ATmega162, ATmega169, ATmega32 and ATmega128.
- An updated Version with STK500/AVRISP Firmware 2.0-support is available
here (timestamp 20050314, latest version).
ISP-frequency output in the STK500v2-module has been fixed (for sck_duration 3).
Additional tests with ATtiny2313 and ATmega48 have been successfull.
All packages include the source-code and a Win32-binary so you can test avrdude without compiling from source.
Make sure that you have installed give-io if you test the software with printer-port "dongles" (i.e. STK200-adapter) on
Windows NT/2000/XP. give-io is included in the source archive, see subdirectory windows.
Evertool: An AVR In-System Programmer (ISP) and JTAG Programmer/Debugger
Evertool is an all-in-one AVR programming and debugging device. It is compatible with the ATMEL AVRISP programmer
(and mostly with the STK500 in low-voltage-serial-programming) and the ATMEL JTAGICE
debugger/programmer. Evertool uses the original ATMEL firmware code supplied with AVRStudio on an ATmega16 (JTAG) and ATmega8535 (ISP).
Read more about the Evertool on this page.
ispRE: Self-made AVR In-System Programmer (ISP)
A programmer compatible with the original AVRISP device (and mostly with the STK500 in low-volatage-serial-programming).
The programmer is based on an ATmega8535 controller and the original ATMEL AVRISP/STK500 firmware is used. An ATtiny2313 serves
as internal update-controller for the ATmega8535 firmware.
Read more about this project on this page.
Selbstbau AVR Mikrocontroller Programmiergerät, kompatibel zum original ATMEL AVRISP. Mehr dazu auf
PonyProg und STK200-ISP-Programmieradapter
Kurzanleitung im Wiki von mikrocontroller.net
(sorry, only available in German language).
avr-gcc Tutorial wiki.mikrocontroller.net PDF-Version
PDF-Version des avr-gcc Tutorials aus dem
mikrocontroller.net Wiki. Stand 12. Okt. 2009. (sorry, only available in German language).
The ARM-projects and WinARM moved to the ARM-Projects-Page.