Releases: SpenceKonde/ATTinyCore
1.2.0 - Bootloader bonanza!
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)
1.1.5 (Manual Installation Version)
This is the version of 1.1.5 for manual installation (as opposed to board manager installation). See above for detailed changelog.
1.1.5 - Expanded board options, improved USI SPI, many fixes
The long awaited (and long overdue) 1.1.5 release adds a number of exciting new features - the tools menu now has an increased level of granularity w/regards to BOD and EESAVE options (particularly on parts where the BOD can run in sampled mode, and in different modes if it's sleeping to help save power). The recently added unified SPI library has been improved as well. This also includes a large number of bug fixes, including a programming issue on the Tiny1634 that impacted users of some USBTinyISP clones, leading to verification errors.
New Features
- Bunch of improvements for SPI on chips with a USI. Features like clock speed and such should work now.
- Added menu options for EESAVE, and advanced BOD modes on parts that have them.
- Added new clock options for attiny841 to use internal ULP oscillator
- Add UART-speed crystal options for more parts.
Fixes
- Fix issue with avrdragon programmer
- Fix issue programming tiny1634 with some ISP programmers
- Fix issue with yield() not compiling due to missing function prototypes.
- Fix issue with !Serial not compiling on 441/841/828/1634.
- Fix issue with missing 'new'
- Fix issue with some String conversions not working (note: String is bad, I strongly recommend not using it)
- Fix many documentation issues
- Fix pin mapping on x4
- Corrected issue with digitalPinToInterrupt on 2313/4313
- Fix minor issue with fusebit settings.
- Added -g flag so that .elf files can be used to get intermixed source + assembly with objdump.
- Remove a few duplicate definitions of true/false.
- Clean up boards.txt
1.1.4 manual installation version
This is the version of 1.1.4 for manual installation (as opposed to board manager installation). See below for details on the 1.1.4 release.
Analog pin bugfixes
This is a bugfix release to resolve a regression involving the analog pin numbers in 1.1.3 - the pin names of the form A# would all read pin A0, regardless of which pin name was used. This has been resolved, and all A# pin names now work.
This also fixes an issue with printing strings from flash using the F() macro, programming the attiny167, and use of "ponyserial" type programmers.
1.1.3 - Unified Wire and SPI libraries, fixes for analog/digital pin name issues and much more
Huge update - this brings the long-awaited Unified SPI and Wire libraries - Now, finally, you can use SPI and Wire on parts with a USI instead of the full SPI/TWI hardware without having to use a special USI-based library and adjust your libraries to refer to it - you can just use the SPI or Wire libraries, and it will determine which implementation to use, and the libraries you're including will pull in this unified library automatically (since it has the same name and implements the same interface).
A partial list of new features and fixes:
- Unified SPI/USI library. You don't have to mess around with alternate USI SPI libraries. Just #include <SPI.h> and use it normally, and the new unified SPI library will pick the appropriate library.
- Unified Wire library - same deal; just #include <Wire.h> and you'll get a wire-compatible library using either the USI or TWI hardware, or software I2C master / hardware I2C slave for the 841 and 828.
- You can now use analog pin names (ex, A10 ) with pinMode() and digitalWrite().
- __cxa_pure_virtual issue fixed - classes with virtual functions will now compile.
- Exporting compiled binaries with bootloader is now only done for platforms where this results in a usable binary (ie, the Tiny828 only).
- Added support for yield()
- Added arduino stream files to improve compatibility of stream classes.
- Many minor part-specific fixes
- Stopped spurious compiler warnings
- AVR Dragon programmer supported (with the usual caveats)
v1.1.2 - LTO support, improved boards menu, many bugfixes
This release adds the much-anticipated support for Link Time Optimization that was added to the Arduino IDE starting in AVR boards 1.6.13 (ships with IDE 1.6.11) - this can be enabled from the tools menu, and will reduce the size of your sketches by 10~15% under most circumstances!
Other changes:
- Fix AVRDude 3.0 compatibility issues
- Add "internal oscillator at 5v" option so that Optiboot will work on the 841 and 1634 off the internal oscillator at 5v.
- Modify upload recipe to not set lockbits, since none of the board defs use them.
- Fix USBAsp compatibility issue in 1.6.12
- Fix issues with the ADC on some ATTiny's
- Support use of the differential ADC channels (use the channel number from the datasheet)
- Improved documentation including beautiful pinout diagrams by @MCUdude
- Added PIN_xx #defines (ex, PIN_B2 is defined to the arduino pin number of PIN_B2
- Added LED_BUILTIN define (on the LED that Optiboot assumes, where applicable) to restore compatibility with latest version of Blink and other example code.
- Many minor bug fixes
v1.1.1 - Improved documentation - pinout diagrams, bugfixes
This release introduces improved documentation including new pinout diagrams by @MCUdude, who also maintains several cores for the larger ATmega microcontrollers.
Additional changes and fixes:
- Fixed issues with avrisp and avrispmkii programmers
- Added missing digitalPinToInterrupt() macro
- New bootloader for ATtiny828 @ 5v to work around voltage dependence of internal oscillator frequency.
- Removed unsupported material from board manager release ("old" optiboot and nomillis core)
- Removed unused "empty bootloaders" - all devices now use the same "empty_all.hex" which contains just a couple of bytes (as avrdude will refuse to write the fuses if you tell it to write an empty file to the flash).
1.1.0 - Grand merger, adds 841, 1634, 828 support
This version merges in support for the ATtiny 441, 841, 828, and 1634 from my ATTiny Modern core. Some other exciting features and fixes:
- Tone works on ATtiny85, as does the third PWM.
- Optiboot for ATtiny167. 87
- Option to initialize secondary timer on x313
- Option to clock timer1 off the PLL on ATtiny x5, x61.
- Menu option for alternate pin mapping on ATtiny84 for compatibility with the damellis core.
1.0.6 - support v1.6.6 of IDE, improved support for weird clock frequencies
- Fixed issues in 1.6.6 of the IDE (such as including avr libraries failing to compile and spurious library warnings)
- Added support for enabling compiler warnings.
- Added support for more clock frequencies.
- Fixed micros() and delay() at weird frequencies. (note - micros() takes a bit longer to return on weird frequencies)
- Fixed micros() and delay() at < 1 mhz