2.0.4 - New toolchain version, tons of fixes and enhancements!
The biggest change here is the switch to new and improved compiler toolchain. This fixes a few odd errors, most notably the 'relocation truncated to fit: R_AVR_13_PCREL against symbol tablejump2' error shown when a sketch was too large on a part that used RJMP (ie, 8k or less of flash). This also includes a bugfix for eeprom.h (this is the builtin <avr/eeprom.h>
one, not EEPROM.h) where the eeprom_is_busy() macro it provided would throw a compile error on these parts because it referred to registers that don't exist here. We have also updated the datasheets to the latest versions. The header files and datasheets contained another big surprise - a bunch of the BOD settings were removed! According to Microchip ATpack release notes, these were "unqualified" BOD settings. Now, only 1.8, 2.7 and 4.3 are "official" - these correspond to 5 MHz, 10 MHz and 20 MHz guaranteed operating speeds. Accordingly, the menu was updated to list the official ones and the speeds they are guaranteed for; the "unqualified" ones (which seemed to work for me!) were marked as such. They are not guaranteed to work, and may vanish in future silicon revisions.
This version also introduced improved naming of exported binaries and assembler listings - the name now includes everything that could effect the .hex output. As part of this initiative, it was discovered that the attempt to delete merged hex files could result in failure to export compiled binary on some linux platforms (#201) because such merged hex files were not created for non-optiboot board definitions (and never got deleted on optiboot ones, by design).
And some other assorted fixes:
- Significant documentation improvements, including a page listing errata and table of which applies to what parts... as there are unfortunately a lot of errata in some of these parts!
- Improve backwards compatibility of Wire.h (#203)
- Fix strange bug in EEPROM.h that was somehow missed (note that there is still #200 which I don't know how to fix)
- Possibly fix #189 (timing glitches when TCA0 used as millis timing source)
- Fix problem with millis not being entirely disabled when set to be disabled.
- Ever so slightly improve baud rate accuracy, reduce space taken by Serial.begin() by a few bytes.
- Fix compile error from Tone() on parts without a second type B timer (ie, everything not a 1614, 3216, 1616, 3217, or 1617) when TCB0 was selected as a millis source. (part of #189)
- Correct bug in micros() timekeeping when TCA0 is used as millis() timing source (introduced in 1.1.9 - after the exhausive testing for these sorts of issues) (#189)
2.0.4? Apparently I thought I'd released 2.0.3 over a month ago! Oops...
This is the version for board manager installation.