Skip to content

1.2.0 - Bootloader bonanza!

Compare
Choose a tag to compare
@SpenceKonde SpenceKonde released this 09 Oct 08:42
· 2 commits to boardmanager-120 since this release

1.2.0 brings a lot of major bootloader related improvements, as well as a few bugfixes. Please be on the lookout for bugs and report them promptly (via github issue or microcontrollers section of the Arduino forum - if posting on Arduino forum be sure to include "ATTinyCore" in the title of the thread to make sure I see it)

First - all bootloaders are updated to the new Optiboot 8.0 codebase. Secondly, all virtualboot bootloaders (for everything except the tiny828) now use the EE_RDY vector (which is not used by anything in arduino-land - the EEPROM library uses a busywait loop, not the interrupt) instead of WDT interrupt vector, so that you can now freely use that in your applications. No longer must you abandon using the bootloader if you wish to have the chip sleep for a set period of time and wake up using the WDT interrupt! These bootloaders are a drop-in replacement, and no special action is needed to upload to boards with the old or new version of the bootloader (we recommend rebootloading with the new one though, to take advantage of the changes to which vector is used, though).

Second - I am happy to announce that we now have bootloaders that use software serial, so you can upload code using serial even on boards that don't have hardware serial. The pins for this are the same as the builtin software serial "Serial" on these parts. This adds bootloader support for the ATTiny 45, 85, 44, 84, 461, 861, 48 and 88. These all use virtualboot and in all cases virtualboot uses EE_RDY vector as mentioned above. These should not be considered production-ready until people have had a chance to kick the tires and report any bugs.

Additionally, there are a bunch of smaller additions and fixes:

  • More systematic naming of bootloader files.
  • Bootloader support for ATtiny441.
  • For the 441/841 and 1634, which have two serial ports, when bootloading, you can choose from a menu which UART to use - this only changes which bootloader image will be written when doing "burn bootloader" - for normal uploads, this is transparent, and it is the responsibility of the user to ensure that their serial adapter is connected to the UART they had selected when they burned the bootloader. Use UART0 unless you have a reason not to.
  • Fix attiny167 at frequencies other than 12MHz not working correctly for sketches over 8k. (must reburn bootloader to fix issue)
  • Fix attiny841 bootloader at 18.4 MHz not using the correct UART (must reburn bootloader to fix issue)
  • tone() now works for frequencies > 65KHz - note that this will only work when using the pin recommended in the device specific documentation (which will use the hardware output compare functionality). While these frequencies are hardly a "tone" (as they're above the range of human hearing), there are many applications for a high frequency squarewave.
  • tone() now works even when called repeatedly in a loop (eg, void loop() {tone(tone_pin,frequency);} - Now, when you call tone() with no duration, and the same pin and frequency that it was last called with, no glitch is produced.
  • Fix Unified Wire library under 1.8.6 and later (avr board package 1.6.22 and later), which encountered a few problems related to the new GCC compiler version. (thanks @datacute )
  • Fix compatibility issues with Unified Wire when working with libraries that assume the class is named TwoWire. (thanks @tedder )
  • Improve menus for configuring fuses when burning bootloader, allows full advantage to be taken of the feature of x41/1634/828 whereby the BOD can operate in different modes depending on whether the chip is sleeping.
  • Fix PWM issue when ATTiny85 is configured to use Timer1 for millis().
  • Fix compiler warnings (thanks @MCUdude )
  • Improved support for AVR ISP MkII
  • Documentation improvements. (thanks @avandalen and others)