Menu

V1.2 Release Notes Log in to Edit

Release Notes for AVR-Ada V1.2

Here is a brief description of the changes compared to V1.1. Special thanks to Tero Koskinen and Warren W. Gay for contributing most of the new code.

Compiler and Tools

  • The compiler is based on FSF gcc-4.7.2.
  • The binutils are based on binutils-2.20.1.
  • Run Time System
    • The RTS is configured and extended to support local exceptions, ie. as long as the exceptions are handled in a local block, you can use exceptions now.
    • Added (the types of) Interfaces.C to the RTS.
    • new System.GCC_Builtins to import all AVR specific builtin functions.
  • The compile environment (Makefiles, gpr-files) always use the inline preprocessor with a symbol of the MCU. No explicit preprocessing and explicit intermediate files needed anymore.
  • Removed hardcoded recursive make calls and replaced them with MAKE variable, so building with make named as gmake should work.

Supported Controllers

  • Added primary device support for Attiny13, Attiny2313, Attiny4313, Attiny85 and Atmega2560

AVR Support Library

  • The old avr.gpr is now separated into two files avr_tools.gpr and avr_app.gpr. New applications can now be built as an extension project of avr_app.gpr.
  • We have some initial support for boards, ie. you don't specify the MCU but the board like e.g. Arduino2009 and the MCU and clock frequency are automatically set.
  • AVR.ADC. Package for using the built-in A/D converters
  • AVR.SPI. Packages for using SPI communication for master and slave modes.
  • AVR.Threads. Import of Dean Ferreyra's avr-threads library and provide an Ada binding.
  • AVR.TimerX. Synchronized the specs for Timer0, Timer1, and Timer2. Completed basic functionality for the primary MCUs.
  • AVR.UART.
    • Lots of named constants provide more readable configuration at the initialization of a serial line.
    • The standard package supports both polled and interrupt driven receive mode depending on the Init routine that you call. In an actual application you either manually remove the part that you don't need or you declare Reveive_Mode as a constant at the top of avr-uart.adb. The compiler is smart enough to automatically remove the parts that are not needed anymore.

External Support Libraries

The following libraries were contributed to AVR-Ada:

  • CRC. Code for calculating 8 and 32 bit checksums. Moved existing code from the 1-Wire lib and added Warren's CRC32 code.
  • SLIP. This package provides a generalized SLIP interface for a communication link lacking "packet boundaries". While it was designed primarily for asynchronous serial connections, it has broader application. All you need is one Transmit and Receive byte procedure for this SLIP interface to use.
  • FATFS. This package provides a FAT16/32 file system capability, targeted for SD/MMC memory cards.
  • Midi. Accessing Midi devices as receiver or transmitter.
  • MCP4922. This package is for sending SPI data to the MCP4922 DAC chip.

Changes in the V1.2.1 Release

  • The build script uses gcc-4.7.2. The problem with a missing environment variable during build time is fixed by a patch.
  • The build script also supports building on Darwin.
  • The AVR.Timer? packages also support attiny85 and attiny4313.
  • The config file for gprbuild avr.cgpr gets created dynamically during install as it contains hard coded paths.

Changes in the V1.2.2 Release

  • The Run Time System now has optimized assembler code to generate string images of integer variables. The code is based on new code of the upcoming avr libc 1.8.1. You can directly access the function as System.Int_Img.U32_Img.
  • The compile environment (Makefiles, gpr-files) received a long due overhaul, contributed by Jedi.
  • The part specifications for the primary devices (attiny2313 atmega8 atmega168 atmega169 atmega32 atmega328p atmega644p atmega2560) were regenerated from the latest available AVR Studio 4 release XML files.
  • AVR.Serial is a drop in replacement for the existing AVR.UART. It acually is a renaming of a generic instantiation of the new AVR.Generic_Text_IO.
  • AVR.Generic_Text_IO factors out the reusable parts of the input and output routines. You still have to provide routines for sending and receiving single bytes as generic parameters.
  • AVR.Strings.Text is an adoption of Dmitry Kazakov's Strings_Edit packages for the small AVR processors.
  • A new example shows the use of the relatively cheap humidity sensors DHT.
  • A command interpreter makes use of the new support packages AVR.Serial and AVR.Strings.Text.

Related

Wiki: News

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.