1.4.0 - Micronucleus support! 16MHz internal 841! Tons more!
This release introduces the long-awaited, oft-requested support for the Micronucleus VUSB bootloader! When installed through board manager, (manual installs require having already installed micronucleus-using package through board manager), you can now upload to those USB ATtiny85 "Digispark", ATtiny167 "Digispark Pro", ATtiny841 "Nanite", ATtiny88 "MH Tiny" and ATtiny84 boards! This has been a huge update - and there's much more planned to further enhance this functionality. You can also load the Micronucleus bootloader onto these using an ISP programmer, or upgrade the bootloader to the version included with ATTinyCore via USB. All the usual ATTinyCore features and options are available too (provided they make sense)!
This also introduces improvements to the bootloaders for the 841, 441, 828, and 1634 that should help alleviate the issues with the the internal oscillator's voltage dependence, and the >4.5v version no longer requires a different bootloader, and achieves approximately 8 MHz by nudging OSCCAL down, instead of by compiling for a slightly faster clock speed. Adventurous users of the ATtiny841 can now crank the internal oscillator all the way up to approximately 16MHz - some parts can juuuust barely make it - but so far all the ones I've tested were able to do it. There are some significant caveats to this (beyond the fact that we can't guarantee that we actually got right on 16MHz - it's not tuned... serial receiving and transmission won't work while writing the EEPROM).
Finally, we have a MASSIVE backlog of small (and not-so-small) fixes:
- Servo was almost certainly broken on some parts, and should now work on them. Please report and emergent issues on Servo - breakage is not impossible, and I'm not well set up for testing it.
- Servo now works parts with the PLL when the PLL is used to ramp up the speed of Timer1 (though this provides no benefit when it's being used for Servo).
- The option to use the PLL for Timer1 on parts with a PLL (x61 and x5) now actually works.
- noTone() now cleans up after itself.
- Bootloaders have been rebuilt to correct the inverted LED flash.
- The longstanding bug in the ATtiny861 optiboot bootloader's LED flash is fixed, finally.
- A small number of missing bootloaders are no longer missing.
- The PIN_Pxn notation which I have been promoting to refer to pins by port and bit now works. Previously I had added PIN_xn defines to do the same thing... and then Arduino added PIN_An constants that refer to the digital pin number of the specified analog pin.
- pulseIn() now honors the timeout parameter correctly (previously, a bug in the assembly routine - which was or is present in all versions of Arduino that I haven't gotten this fix into and always had been - caused the timeout to count down 16/11ths as fast as it was supposed to before the pulse it was measuring started.
- pulseInLong() added.
- digitalRead() no longer turns off PWM. (this differs from the official core behavior, but it's dumb behavior - "read" should not alter the thing it's reading)
- Improved handling of the oddly named registers in the ATtiny2313 (vs the much more common ATtiny2313A)
- Removed some useless code that still got compiled in and took up space from several places in the core.
- Major housecleaning in wiring.c and some other libraries.
There is also more to come for ATTinyCore - a long overdue migration of the four parts that currently use the "tinymodern" core to the main core is coming, there are a number of optimizations to reduce flash usage in the works, plus the "fast digital I/O" functions. The USB libraries to support the micronucleus boards acting as keyboards, mice, and serial ports is coming, as is a suite of new micronucleus bootloader binaries with support for all the entry conditions that look useful, including combinations of them.
Further in the future, you can expect micronucleus bootloader support for all the parts that don't have it, along with hardware from my Tindie store to use it with! Take it for a spin, see what I broke in the process, and report them to me so I can unbreak them in 1.4.1 :-)
This is the version for manual installation.