diff --git a/Downloads/package_femtocow_attiny_index.json b/Downloads/package_femtocow_attiny_index.json new file mode 100644 index 0000000..d506ece --- /dev/null +++ b/Downloads/package_femtocow_attiny_index.json @@ -0,0 +1,61 @@ +{ + "packages":[ + { + "name":"FemtoCow-attiny", + "maintainer":"FemtoCow", + "websiteURL":"https://github.com/FemtoCow", + "email":"tinycore@femtocow.com", + "help":{ + "online":"https://github.com/FemtoCow" + }, + "platforms":[ + { + "name":"FemtoCow ATTiny", + "architecture":"avr", + "version":"1.1.0", + "category":"Contributed", + "url":"https://github.com/FemtoCow/ATTinyCore/raw/master/Downloads/tiny2.zip", + "archiveFileName":"tiny2.zip", + "checksum":"SHA-256:1411faa314e039054ef518e4299251653cb5f720165fe9c5798c5399a685e19a", + "size":"279287", + "help":{ + "online":"https://github.com/FemtoCow" + }, + "boards":[ + { + "name":"ATtiny84" + }, + { + "name":"ATtiny85" + }, + { + "name":"ATtiny2313" + }, + { + "name":"ATtiny861" + }, + { + "name":"ATtiny167" + }, + { + "name":"ATtiny88" + } + ], + "toolsDependencies":[ + { + "packager":"arduino", + "name":"avr-gcc", + "version":"4.8.1-arduino5" + }, + { + "packager":"arduino", + "name":"avrdude", + "version":"6.0.1-arduino5" + } + ] + } + ], + "tools":[] + } + ] +} diff --git a/Downloads/tiny2.zip b/Downloads/tiny2.zip new file mode 100644 index 0000000..340c359 Binary files /dev/null and b/Downloads/tiny2.zip differ diff --git a/README b/README.MD similarity index 61% rename from README rename to README.MD index be2e94f..2d8f7f0 100644 --- a/README +++ b/README.MD @@ -1,25 +1,22 @@ -BETA Arduino 1.0+ core for ATTiny's - -Note: Beta testers are needed to try out the core and find any bugs! - -The core along with the PCREL patch files can be downloaded in ZIP format here: -https://github.com/TCWORLD/ATTinyCore/tree/master/Downloads +###### Arduino 1.6.4+ core for ATTiny's +To install just add this URL to your board manager: https://github.com/FemtoCow/ATTinyCore/raw/master/Downloads/package_femtocow_attiny_index.json Based on the arduino-tiny core here: http://code.google.com/p/arduino-tiny/ The core is largely rewritten from the original to bring it inline with the latest version of the IDE and to make the addition of new processors easier by moving all configuration to additional pins_arduino.h files in keeping with the main arduino core. It also features an up to date Print class from the standard Arduino core, plus a fixed String class courtesy of the Teensy core. -Currently the following processors are supported: +###### Currently the following processors are supported: -ATtiny84,44,24 -ATtiny85,45,25 -ATtiny861 -ATtiny87/167 -ATtiny2313 -Attiny88 (Now Supported. Report problems in Issue #22) +* ATtiny84,44,24 +* ATtiny85,45,25 +* ATtiny861 +* ATtiny87/167 +* ATtiny2313 +* Attiny88 (Now Supported. Report problems in Issue #22) You can identify the core using the following: +``` #define ATTINY_CORE - Attiny Core #define ATTINY_CORE_NM - No-Millis Attiny Core @@ -34,12 +31,12 @@ The following identify board variants: #define ATTINYX61 #define ATTINYX7 #define ATTINYX313 +``` - -This core is still in Beta as I haven't fully tested it out yet. I know that the main functions work such as Serial (software), SPI (software), Digital/Analog read/write, millis(), micros(), delay(), delayMicroseconds(), print(), println(). However on some processors, functions such as Tone() are still not fully functional. -There is also a certain amount of optimisation required to make the compile size smaller for the those chips with severly limited Flash (such as the tiny24). +>This core is still in Beta as I haven't fully tested it out yet. I know that the main functions work such as Serial (software), SPI (software), Digital/Analog read/write, millis(), micros(), delay(), delayMicroseconds(), print(), println(). However on some processors, functions such as Tone() are still not fully functional. +>There is also a certain amount of optimisation required to make the compile size smaller for the those chips with severly limited Flash (such as the tiny24). Also included for the Tiny84 and Tiny85 is a functioning Optiboot bootloader. There are two versions of this: -> The first is one which is the normal optiboot which can be compiled using the "make attiny84.bat" and "make attiny85.bat" files. This can be hit and miss whether it works due to the fact that the internal oscillator of the ATtiny's is not well calibrated. -> The second is optiboot but it comes with the TinyTuner sketch built in. The bootloader takes up no additional space as the tuning sketch is overwritten by any uploaded program, however it allows the oscillator to be fully calibrated before sketches are downloaded. This is the version supplied (can be recompiled with "make attiny84_tuned.bat" and "make attiny85_tuned.bat" files). See the readme in the tiny\bootloades\optiboot\ folder for more info. +* The first is one which is the normal optiboot which can be compiled using the "make attiny84.bat" and "make attiny85.bat" files. This can be hit and miss whether it works due to the fact that the internal oscillator of the ATtiny's is not well calibrated. +* The second is optiboot but it comes with the TinyTuner sketch built in. The bootloader takes up no additional space as the tuning sketch is overwritten by any uploaded program, however it allows the oscillator to be fully calibrated before sketches are downloaded. This is the version supplied (can be recompiled with "make attiny84_tuned.bat" and "make attiny85_tuned.bat" files). See the readme in the tiny\bootloades\optiboot\ folder for more info. diff --git a/tiny/boards.txt b/tiny/boards.txt index 093b735..98fe4e0 100644 --- a/tiny/boards.txt +++ b/tiny/boards.txt @@ -1,5 +1,4 @@ -########################################################################### # # Example boards.txt from... # @@ -7,82 +6,31 @@ # http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1274754985/6#6 # http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1274820597/49#49 # -########################################################################### - -attiny84at16.name=ATtiny84 @ 16 MHz (external crystal; 4.3 V BOD) - -# The following do NOT work... -# attiny84at16.upload.using=avrispv2 -# attiny84at16.upload.using=Pololu USB AVR Programmer +# http://www.engbedded.com/fusecalc/ +# -# The following DO work (pick one)... -attiny84at16.upload.using=arduino:arduinoisp -# attiny84at16.upload.protocol=avrispv2 -# attiny84at16.upload.using=pololu +menu.clock=Clock -attiny84at16.upload.maximum_size=8192 -# Frequency 8.0- MHz; Start-up time PWRDWN/RESET: 16K CK/14 CK + 65 ms; [CKSEL=1111 SUT=11] -# Brown-out detection level at VCC=4.3 V; [BODLEVEL=100] -# Preserve EEPROM memory through the Chip Erase cycle; [EESAVE=0] -# Serial program downloading (SPI) enabled; [SPIEN=0] - -attiny84at16.bootloader.low_fuses=0xFF -attiny84at16.bootloader.high_fuses=0xD4 -attiny84at16.bootloader.extended_fuses=0xFF -attiny84at16.bootloader.path=empty -attiny84at16.bootloader.file=empty84at16.hex - -attiny84at16.build.mcu=attiny84 -attiny84at16.build.f_cpu=16000000L -attiny84at16.build.core=tiny -attiny84at16.build.variant=tinyX4 - ########################################################################### - -attiny84at8.name=ATtiny84 @ 8 MHz (internal oscillator; BOD disabled) - -# The following do NOT work... -# attiny84at8.upload.using=avrispv2 -# attiny84at8.upload.using=Pololu USB AVR Programmer - -# The following DO work (pick one)... -attiny84at8.upload.using=arduino:arduinoisp -# attiny84at8.upload.protocol=avrispv2 -# attiny84at8.upload.using=pololu - -attiny84at8.upload.maximum_size=8192 - -# Default clock (slowly rising power; long delay to clock; 8 MHz internal) -# Int. RC Osc. 8 MHz; Start-up time PWRDWN/RESET: 6 CK/14 CK + 64 ms; [CKSEL=0010 SUT=10]; default value -# Brown-out detection disabled; [BODLEVEL=111] -# Preserve EEPROM memory through the Chip Erase cycle; [EESAVE=0] - -attiny84at8.bootloader.low_fuses=0xE2 -attiny84at8.bootloader.high_fuses=0xD7 -attiny84at8.bootloader.extended_fuses=0xFF -attiny84at8.bootloader.path=empty -attiny84at8.bootloader.file=empty84at8.hex - -attiny84at8.build.mcu=attiny84 -attiny84at8.build.f_cpu=8000000L -attiny84at8.build.core=tiny -attiny84at8.build.variant=tinyX4 - +############################ A T T I N Y 8 4 ############################ ########################################################################### -attiny84at1.name=ATtiny84 @ 1 MHz (internal oscillator; BOD disabled) -# The following do NOT work... -# attiny84at1.upload.using=avrispv2 -# attiny84at1.upload.using=Pololu USB AVR Programmer +attiny84.name=ATTiny84 +attiny84.upload.tool=arduino:avrdude +attiny84.upload.maximum_size=8192 +attiny84.bootloader.tool=arduino:avrdude +attiny84.bootloader.file=empty/empty84at16.hex +#attiny84.bootloader.path=empty + +attiny84.build.mcu=attiny84 +attiny84.build.core=tiny +attiny84.build.variant=tinyX4 +attiny84.build.board=ATTINY84 -# The following DO work (pick one)... -attiny84at1.upload.using=arduino:arduinoisp -# attiny84at1.upload.protocol=avrispv2 -# attiny84at1.upload.using=pololu +########################### define clocks ################################# -attiny84at1.upload.maximum_size=8192 # Default clock (slowly rising power; long delay to clock; 8 MHz internal; divide clock by 8) # Int. RC Osc. 8 MHz; Start-up time PWRDWN/RESET: 6 CK/14 CK + 64 ms; [CKSEL=0010 SUT=10]; default value @@ -90,63 +38,36 @@ attiny84at1.upload.maximum_size=8192 # Brown-out detection disabled; [BODLEVEL=111] # Preserve EEPROM memory through the Chip Erase cycle; [EESAVE=0] -attiny84at1.bootloader.low_fuses=0x62 -attiny84at1.bootloader.high_fuses=0xD7 -attiny84at1.bootloader.extended_fuses=0xFF -attiny84at1.bootloader.path=empty -attiny84at1.bootloader.file=empty84at1.hex - -attiny84at1.build.mcu=attiny84 -attiny84at1.build.f_cpu=1000000L -attiny84at1.build.core=tiny -attiny84at1.build.variant=tinyX4 - -########################################################################### - -attiny44at8.name=ATtiny44 @ 8 MHz (internal oscillator; BOD disabled) - -# The following do NOT work... -# attiny44at8.upload.using=avrispv2 -# attiny44at8.upload.using=Pololu USB AVR Programmer - -# The following DO work (pick one)... -attiny44at8.upload.using=arduino:arduinoisp -# attiny44at8.upload.protocol=avrispv2 -# attiny44at8.upload.using=pololu +attiny84.menu.clock.internal1=1 MHz (internal oscillator; BOD disabled) +attiny84.menu.clock.internal1.bootloader.low_fuses=0x62 +attiny84.menu.clock.internal1.bootloader.high_fuses=0xD7 +attiny84.menu.clock.internal1.bootloader.extended_fuses=0xFF +attiny84.menu.clock.internal1.build.f_cpu=1000000L -attiny44at8.upload.maximum_size=4096 # Default clock (slowly rising power; long delay to clock; 8 MHz internal) # Int. RC Osc. 8 MHz; Start-up time PWRDWN/RESET: 6 CK/14 CK + 64 ms; [CKSEL=0010 SUT=10]; default value # Brown-out detection disabled; [BODLEVEL=111] # Preserve EEPROM memory through the Chip Erase cycle; [EESAVE=0] -attiny44at8.bootloader.low_fuses=0xE2 -attiny44at8.bootloader.high_fuses=0xD7 -attiny44at8.bootloader.extended_fuses=0xFF -attiny44at8.bootloader.path=empty -attiny44at8.bootloader.file=empty44at8.hex - -attiny44at8.build.mcu=attiny44 -attiny44at8.build.f_cpu=8000000L -attiny44at8.build.core=tiny -attiny44at8.build.variant=tinyX4 -# attiny44at8.build.core=empty - -########################################################################### +attiny84.menu.clock.internal8=8 MHz (internal oscillator; BOD disabled) +attiny84.menu.clock.internal8.bootloader.low_fuses=0xE2 +attiny84.menu.clock.internal8.bootloader.high_fuses=0xD7 +attiny84.menu.clock.internal8.bootloader.extended_fuses=0xFF +attiny84.menu.clock.internal8.build.f_cpu=8000000L -attiny44at1.name=ATtiny44 @ 1 MHz (internal oscillator; BOD disabled) -# The following do NOT work... -# attiny44at1.upload.using=avrispv2 -# attiny44at1.upload.using=Pololu USB AVR Programmer +# Frequency 8.0- MHz; Start-up time PWRDWN/RESET: 16K CK/14 CK + 65 ms; [CKSEL=1111 SUT=11] +# Brown-out detection level at VCC=4.3 V; [BODLEVEL=100] +# Preserve EEPROM memory through the Chip Erase cycle; [EESAVE=0] +# Serial program downloading (SPI) enabled; [SPIEN=0] -# The following DO work (pick one)... -attiny44at1.upload.using=arduino:arduinoisp -# attiny44at1.upload.protocol=avrispv2 -# attiny44at1.upload.using=pololu +attiny84.menu.clock.external16=16 MHz (external crystal; 4.3 V BOD) +attiny84.menu.clock.external16.bootloader.low_fuses=0xFF +attiny84.menu.clock.external16.bootloader.high_fuses=0xD4 +attiny84.menu.clock.external16.bootloader.extended_fuses=0xFF +attiny84.menu.clock.external16.build.f_cpu=16000000L -attiny44at1.upload.maximum_size=4096 # Default clock (slowly rising power; long delay to clock; 8 MHz internal; divide clock by 8) # Int. RC Osc. 8 MHz; Start-up time PWRDWN/RESET: 6 CK/14 CK + 64 ms; [CKSEL=0010 SUT=10]; default value @@ -154,202 +75,78 @@ attiny44at1.upload.maximum_size=4096 # Brown-out detection disabled; [BODLEVEL=111] # Preserve EEPROM memory through the Chip Erase cycle; [EESAVE=0] -attiny44at1.bootloader.low_fuses=0x62 -attiny44at1.bootloader.high_fuses=0xD7 -attiny44at1.bootloader.extended_fuses=0xFF -attiny44at1.bootloader.path=empty -attiny44at1.bootloader.file=empty44at1.hex - -attiny44at1.build.mcu=attiny44 -attiny44at1.build.f_cpu=1000000L -attiny44at1.build.core=tiny -attiny44at1.build.variant=tinyX4 -# attiny44at1.build.core=empty +attiny84.menu.clock.internal128=TODO: 128 kHz (watchdog oscillator; BOD disabled) +attiny84.menu.clock.internal128.bootloader.low_fuses=0x62 +attiny84.menu.clock.internal128.bootloader.high_fuses=0xD7 +attiny84.menu.clock.internal128.bootloader.extended_fuses=0xFF +attiny84.menu.clock.internal128.build.f_cpu=1000000L + +##### Optiboots ##### + +attiny84.menu.clock.ob12e=Optiboot @ 12 MHz (external osc) +attiny84.menu.clock.ob12e.bootloader.low_fuses=0xE0 +attiny84.menu.clock.ob12e.bootloader.high_fuses=0xD7 +attiny84.menu.clock.ob12e.bootloader.extended_fuses=0xFE +attiny84.menu.clock.ob12e.build.f_cpu=12000000L +attiny84.menu.clock.ob12e.upload.maximum_size=7616 +attiny84.menu.clock.ob12e.upload.speed=19200 +attiny84.menu.clock.ob12e.bootloader.file=optiboot/optiboot_attiny84_12.hex +attiny84.menu.clock.ob12e.build.variant=tinyX4optiboot + + +attiny84.menu.clock.ob12enm=Optiboot @12 MHz (external osc - NO MILLIS!) +attiny84.menu.clock.ob12enm.upload.speed=19200 +attiny84.menu.clock.ob12enm.upload.maximum_size=7616 +attiny84.menu.clock.ob12enm.bootloader.low_fuses=0xE0 +attiny84.menu.clock.ob12enm.bootloader.high_fuses=0xD7 +attiny84.menu.clock.ob12enm.bootloader.extended_fuses=0xFE +attiny84.menu.clock.ob12enm.bootloader.file=optiboot/optiboot_attiny84_12.hex +attiny84.menu.clock.ob12enm.build.f_cpu=12000000L +attiny84.menu.clock.ob12enm.build.core=tinyNoMillis +attiny84.menu.clock.ob12enm.build.variant=tinyX4optiboot + + +attiny84.menu.clock.ob8i=Optiboot @ 8 MHz (internal osc) +attiny84.menu.clock.ob8i.upload.speed=19200 +attiny84.menu.clock.ob8i.upload.maximum_size=7616 +attiny84.menu.clock.ob8i.bootloader.low_fuses=0xE2 +attiny84.menu.clock.ob8i.bootloader.high_fuses=0xD7 +attiny84.menu.clock.ob8i.bootloader.extended_fuses=0xFE +attiny84.menu.clock.ob8i.bootloader.file=optiboot/optiboot_attiny84.hex +attiny84.menu.clock.ob8i.build.f_cpu=8000000L +attiny84.menu.clock.ob8i.build.variant=tinyX4optiboot -########################################################################### - -attiny24at16.name=ATtiny24 @ 16 MHz (external crystal; BOD disabled) - -# The following do NOT work... -# attiny24at16.upload.using=avrispv2 -# attiny24at16.upload.using=Pololu USB AVR Programmer - -# The following DO work (pick one)... -attiny24at16.upload.using=arduino:arduinoisp -# attiny24at16.upload.protocol=avrispv2 -# attiny24at16.upload.using=pololu - -attiny24at16.upload.maximum_size=2048 - -# Ext. Crystal Osc.; Frequency 8.0- MHz; Start-up time PWRDWN/RESET: 16K CK/14 CK + 65 ms; [CKSEL=1111 SUT=11] -# Brown-out detection disabled; [BODLEVEL=111] -# Preserve EEPROM memory through the Chip Erase cycle; [EESAVE=0] -# Serial program downloading (SPI) enabled; [SPIEN=0] - -attiny24at16.bootloader.low_fuses=0xFF -attiny24at16.bootloader.high_fuses=0xD7 -attiny24at16.bootloader.extended_fuses=0xFF -attiny24at16.bootloader.path=empty -attiny24at16.bootloader.file=empty24at16.hex - -attiny24at16.build.mcu=attiny24 -attiny24at16.build.f_cpu=16000000L -attiny24at16.build.core=tiny -attiny24at16.build.variant=tinyX4 +attiny84.menu.clock.ob8inr=Optiboot @ 8 MHz (internal osc, NO RESET!) +attiny84.menu.clock.ob8inr.upload.speed=19200 +attiny84.menu.clock.ob8inr.upload.maximum_size=7616 +attiny84.menu.clock.ob8inr.bootloader.low_fuses=0xE2 +attiny84.menu.clock.ob8inr.bootloader.high_fuses=0x57 +attiny84.menu.clock.ob8inr.bootloader.extended_fuses=0xFE +attiny84.menu.clock.ob8inr.bootloader.file=optiboot/optiboot_attiny84.hex +attiny84.menu.clock.ob8inr.build.f_cpu=8000000L +attiny84.menu.clock.ob8inr.build.variant=tinyX4optiboot -########################################################################### - -attiny85at16e.name=ATtiny85 @ 16 MHz (external crystal; 4.3 V BOD) - -# The following do NOT work... -# attiny85at16e.upload.using=avrispv2 -# attiny85at16e.upload.using=Pololu USB AVR Programmer - -# The following DO work (pick one)... -attiny85at16e.upload.using=arduino:arduinoisp -# attiny85at16e.upload.protocol=avrispv2 -# attiny85at16e.upload.using=pololu - -attiny85at16e.upload.maximum_size=8192 - -# Ext. Crystal Osc.; Frequency 8.0- MHz; Start-up time PWRDWN/RESET: 16K CK/14 CK + 65 ms; [CKSEL=1111 SUT=11] -# Brown-out detection level at VCC=4.3 V; [BODLEVEL=100] -# Preserve EEPROM memory through the Chip Erase cycle; [EESAVE=0] -# Serial program downloading (SPI) enabled; [SPIEN=0] -attiny85at16e.bootloader.low_fuses=0xFF -attiny85at16e.bootloader.high_fuses=0xD4 -attiny85at16e.bootloader.extended_fuses=0xFF -attiny85at16e.bootloader.path=empty -attiny85at16e.bootloader.file=empty85at16.hex -attiny85at16e.build.mcu=attiny85 -attiny85at16e.build.f_cpu=16000000L -attiny85at16e.build.core=tiny -attiny85at16e.build.variant=tinyX5 ########################################################################### - -attiny85at16p.name=ATtiny85 @ 16 MHz (internal PLL; 4.3 V BOD) - -# The following do NOT work... -# attiny85at16p.upload.using=avrispv2 -# attiny85at16p.upload.using=Pololu USB AVR Programmer - -# The following DO work (pick one)... -attiny85at16p.upload.using=arduino:arduinoisp -# attiny85at16p.upload.protocol=avrispv2 -# attiny85at16p.upload.using=pololu - -attiny85at16p.upload.maximum_size=8192 - -# PLL Clock; Start-up time PWRDWN/RESET: 1K CK/14 CK + 4 ms; [CKSEL=0001 SUT=00] -# Brown-out detection level at VCC=4.3 V; [BODLEVEL=100] -# Preserve EEPROM memory through the Chip Erase cycle; [EESAVE=0] -# Serial program downloading (SPI) enabled; [SPIEN=0] - -attiny85at16p.bootloader.low_fuses=0xC1 -attiny85at16p.bootloader.high_fuses=0xD4 -attiny85at16p.bootloader.extended_fuses=0xFF -attiny85at16p.bootloader.path=empty -attiny85at16p.bootloader.file=empty85at16.hex - -attiny85at16p.build.mcu=attiny85 -attiny85at16p.build.f_cpu=16000000L -attiny85at16p.build.core=tiny -attiny85at16p.build.variant=tinyX5 - -########################################################################### - -attiny861at1.name=ATtiny861 @ 1 MHz (internal oscillator; BOD disabled) - -attiny861at1.upload.using=arduino:arduinoisp - -attiny861at1.upload.maximum_size=8192 - -# Default clock (slowly rising power; long delay to clock; 1 MHz internal) -# Int. RC Osc. 8 MHz divided by 8; Start-up time PWRDWN/RESET: 6 CK/14 CK + 64 ms; [CKSEL=0010 SUT=10]; default value -# Brown-out detection disabled; [BODLEVEL=111] - -attiny861at1.bootloader.low_fuses=0x62 -attiny861at1.bootloader.high_fuses=0xDF -attiny861at1.bootloader.extended_fuses=0xFF -attiny861at1.bootloader.path=empty -attiny861at1.bootloader.file=empty861at8.hex - -attiny861at1.build.mcu=attiny861 -attiny861at1.build.f_cpu=1000000L -attiny861at1.build.core=tiny -attiny861at1.build.variant=tinyX61 - -########################################################################### - -attiny861at18.name=ATtiny861 @ 18.432 MHz (external oscillator; BOD disabled) - -attiny861at18.upload.using=arduino:arduinoisp - -attiny861at18.upload.maximum_size=8192 - -# Default clock (slowly rising power; long delay to clock; 1 MHz internal) -# Int. RC Osc. 8 MHz divided by 8; Start-up time PWRDWN/RESET: 6 CK/14 CK + 64 ms; [CKSEL=0010 SUT=10]; default value -# Brown-out detection disabled; [BODLEVEL=111] - -attiny861at18.bootloader.low_fuses=0xA0 -attiny861at18.bootloader.high_fuses=0xD7 -attiny861at18.bootloader.extended_fuses=0x00 -attiny861at18.bootloader.path=empty -attiny861at18.bootloader.file=empty861at8.hex - -attiny861at18.build.mcu=attiny861 -attiny861at18.build.f_cpu=18432000L -attiny861at18.build.core=tiny -attiny861at18.build.variant=tinyX61 - -########################################################################### - -attiny85at8.name=ATtiny85 @ 8 MHz (internal oscillator; BOD disabled) - -# The following do NOT work... -# attiny85at8.upload.using=avrispv2 -# attiny85at8.upload.using=Pololu USB AVR Programmer - -# The following DO work (pick one)... -attiny85at8.upload.using=arduino:arduinoisp -# attiny85at8.upload.protocol=avrispv2 -# attiny85at8.upload.using=pololu - -attiny85at8.upload.maximum_size=8192 - -# Default clock (slowly rising power; long delay to clock; 8 MHz internal) -# Int. RC Osc. 8 MHz; Start-up time PWRDWN/RESET: 6 CK/14 CK + 64 ms; [CKSEL=0010 SUT=10]; default value -# Brown-out detection disabled; [BODLEVEL=111] -# Preserve EEPROM memory through the Chip Erase cycle; [EESAVE=0] - -attiny85at8.bootloader.low_fuses=0xE2 -attiny85at8.bootloader.high_fuses=0xD7 -attiny85at8.bootloader.extended_fuses=0xFF -attiny85at8.bootloader.path=empty -attiny85at8.bootloader.file=empty85at8.hex - -attiny85at8.build.mcu=attiny85 -attiny85at8.build.f_cpu=8000000L -attiny85at8.build.core=tiny -attiny85at8.build.variant=tinyX5 - +############################ A T T I N Y 8 5 ############################ ########################################################################### -attiny85at1.name=ATtiny85 @ 1 MHz (internal oscillator; BOD disabled) +attiny85.name=ATTiny85 +attiny85.upload.tool=arduino:avrdude +attiny85.upload.maximum_size=8192 +attiny85.bootloader.tool=arduino:avrdude +#attiny85.bootloader.path=empty +attiny85.bootloader.file=empty/empty85at16.hex -# The following do NOT work... -# attiny85at1.upload.using=avrispv2 -# attiny85at1.upload.using=Pololu USB AVR Programmer +attiny85.build.mcu=attiny85 +attiny85.build.core=tiny +attiny85.build.variant=tinyX5 +attiny85.build.board=ATTINY85 -# The following DO work (pick one)... -attiny85at1.upload.using=arduino:arduinoisp -# attiny85at1.upload.protocol=avrispv2 -# attiny85at1.upload.using=pololu +########################### define clocks ################################# -attiny85at1.upload.maximum_size=8192 # Default clock (slowly rising power; long delay to clock; 8 MHz internal; divide clock by 8) # Int. RC Osc. 8 MHz; Start-up time PWRDWN/RESET: 6 CK/14 CK + 64 ms; [CKSEL=0010 SUT=10]; default value @@ -357,187 +154,92 @@ attiny85at1.upload.maximum_size=8192 # Brown-out detection disabled; [BODLEVEL=111] # Preserve EEPROM memory through the Chip Erase cycle; [EESAVE=0] -attiny85at1.bootloader.low_fuses=0x62 -attiny85at1.bootloader.high_fuses=0xD7 -attiny85at1.bootloader.extended_fuses=0xFF -attiny85at1.bootloader.path=empty -attiny85at1.bootloader.file=empty85at1.hex - -attiny85at1.build.mcu=attiny85 -attiny85at1.build.f_cpu=1000000L -attiny85at1.build.core=tiny -attiny85at1.build.variant=tinyX5 - -########################################################################### - -attiny45at8.name=ATtiny45 @ 8 MHz +attiny85.menu.clock.internal1=1 MHz (internal oscillator; BOD disabled) +attiny85.menu.clock.internal1.bootloader.low_fuses=0x62 +attiny85.menu.clock.internal1.bootloader.high_fuses=0xD7 +attiny85.menu.clock.internal1.bootloader.extended_fuses=0xFF +attiny85.menu.clock.internal1.build.f_cpu=1000000L -# The following do NOT work... -# attiny45at8.upload.using=avrispv2 -# attiny45at8.upload.using=Pololu USB AVR Programmer - -# The following DO work (pick one)... -attiny45at8.upload.using=arduino:arduinoisp -# attiny45at8.upload.protocol=avrispv2 -# attiny45at8.upload.using=pololu - -attiny45at8.upload.maximum_size=4096 # Default clock (slowly rising power; long delay to clock; 8 MHz internal) # Int. RC Osc. 8 MHz; Start-up time PWRDWN/RESET: 6 CK/14 CK + 64 ms; [CKSEL=0010 SUT=10]; default value # Brown-out detection disabled; [BODLEVEL=111] # Preserve EEPROM memory through the Chip Erase cycle; [EESAVE=0] -attiny45at8.bootloader.low_fuses=0xE2 -attiny45at8.bootloader.high_fuses=0xD7 -attiny45at8.bootloader.extended_fuses=0xFF -attiny45at8.bootloader.path=empty -attiny45at8.bootloader.file=empty45at8.hex - -attiny45at8.build.mcu=attiny45 -attiny45at8.build.f_cpu=8000000L -attiny45at8.build.core=tiny -attiny45at8.build.variant=tinyX5 +attiny85.menu.clock.internal8=8 MHz (internal oscillator; BOD disabled) +attiny85.menu.clock.internal8.bootloader.low_fuses=0xE2 +attiny85.menu.clock.internal8.bootloader.high_fuses=0xD7 +attiny85.menu.clock.internal8.bootloader.extended_fuses=0xFF +attiny85.menu.clock.internal8.build.f_cpu=8000000L -########################################################################### - -attiny45at1.name=ATtiny45 @ 1 MHz - -# The following do NOT work... -# attiny45at1.upload.using=avrispv2 -# attiny45at1.upload.using=Pololu USB AVR Programmer - -# The following DO work (pick one)... -attiny45at1.upload.using=arduino:arduinoisp -# attiny45at1.upload.protocol=avrispv2 -# attiny45at1.upload.using=pololu - -attiny45at1.upload.maximum_size=4096 -# Default clock (slowly rising power; long delay to clock; 8 MHz internal; divide clock by 8) -# Int. RC Osc. 8 MHz; Start-up time PWRDWN/RESET: 6 CK/14 CK + 64 ms; [CKSEL=0010 SUT=10]; default value -# Divide clock by 8 internally; [CKDIV8=0] -# Brown-out detection disabled; [BODLEVEL=111] +# Ext. Crystal Osc.; Frequency 8.0- MHz; Start-up time PWRDWN/RESET: 16K CK/14 CK + 65 ms; [CKSEL=1111 SUT=11] +# Brown-out detection level at VCC=4.3 V; [BODLEVEL=100] # Preserve EEPROM memory through the Chip Erase cycle; [EESAVE=0] +# Serial program downloading (SPI) enabled; [SPIEN=0] -attiny45at1.bootloader.low_fuses=0x62 -attiny45at1.bootloader.high_fuses=0xD7 -attiny45at1.bootloader.extended_fuses=0xFF -attiny45at1.bootloader.path=empty -attiny45at1.bootloader.file=empty45at1.hex - -attiny45at1.build.mcu=attiny45 -attiny45at1.build.f_cpu=1000000L -attiny45at1.build.core=tiny -attiny45at1.build.variant=tinyX5 - -########################################################################### - -attiny85at128.name=ATtiny85 @ 128 KHz (watchdog oscillator; 1.8 V BOD) +attiny85.menu.clock.external16=16 MHz (external crystal; 4.3 V BOD) +attiny85.menu.clock.external16.bootloader.low_fuses=0xFF +attiny85.menu.clock.external16.bootloader.high_fuses=0xD4 +attiny85.menu.clock.external16.bootloader.extended_fuses=0xFF +attiny85.menu.clock.external16.build.f_cpu=16000000L + -# The following do NOT work... -# attiny85at128.upload.using=avrispv2 -# attiny85at128.upload.using=Pololu USB AVR Programmer +# PLL Clock; Start-up time PWRDWN/RESET: 1K CK/14 CK + 4 ms; [CKSEL=0001 SUT=00] +# Brown-out detection level at VCC=4.3 V; [BODLEVEL=100] +# Preserve EEPROM memory through the Chip Erase cycle; [EESAVE=0] +# Serial program downloading (SPI) enabled; [SPIEN=0] -# The following DO work (pick one)... -attiny85at128.upload.using=arduino:arduinoisp -# attiny85at128.upload.protocol=avrispv2 -# attiny85at128.upload.using=pololu +attiny85.menu.clock.internal16=16 MHz (internal PLL; 4.3 V BOD) +attiny85.menu.clock.internal16.bootloader.low_fuses=0xC1 +attiny85.menu.clock.internal16.bootloader.high_fuses=0xD4 +attiny85.menu.clock.internal16.bootloader.extended_fuses=0xFF +attiny85.menu.clock.internal16.build.f_cpu=16000000L -attiny85at128.upload.maximum_size=8192 # WD. Osc. 128 kHz; Start-up time PWRDWN/RESET: 6 CK/14 CK + 0 ms; [CKSEL=0100 SUT=00] # Brown-out detection level at VCC=1.8 V; [BODLEVEL=110] # Preserve EEPROM memory through the Chip Erase cycle; [EESAVE=0] # Serial program downloading (SPI) enabled; [SPIEN=0] -attiny85at128.bootloader.low_fuses=0xC4 -attiny85at128.bootloader.high_fuses=0xD6 -attiny85at128.bootloader.extended_fuses=0xFF -attiny85at128.bootloader.path=empty -attiny85at128.bootloader.file=empty85at1.hex +attiny85.menu.clock.internal128=128 KHz (watchdog oscillator; 1.8 V BOD) +attiny85.menu.clock.internal128.bootloader.low_fuses=0xC4 +attiny85.menu.clock.internal128.bootloader.high_fuses=0xD6 +attiny85.menu.clock.internal128.bootloader.extended_fuses=0xFF +attiny85.menu.clock.internal128.build.f_cpu=128000L -attiny85at128.build.mcu=attiny85 -attiny85at128.build.f_cpu=128000L -attiny85at128.build.core=tiny -attiny85at128.build.variant=tinyX5 - -########################################################################### - -attiny25at8.name=ATtiny25 @ 8 MHz - -# The following do NOT work... -# attiny25at8.upload.using=avrispv2 -# attiny25at8.upload.using=Pololu USB AVR Programmer - -# The following DO work (pick one)... -attiny25at8.upload.using=arduino:arduinoisp -# attiny25at8.upload.protocol=avrispv2 -# attiny25at8.upload.using=pololu - -attiny25at8.upload.maximum_size=2048 - -# Default clock (slowly rising power; long delay to clock; 8 MHz internal) -# Int. RC Osc. 8 MHz; Start-up time PWRDWN/RESET: 6 CK/14 CK + 64 ms; [CKSEL=0010 SUT=10]; default value -# Brown-out detection disabled; [BODLEVEL=111] -# Preserve EEPROM memory through the Chip Erase cycle; [EESAVE=0] -attiny25at8.bootloader.low_fuses=0xE2 -attiny25at8.bootloader.high_fuses=0xD7 -attiny25at8.bootloader.extended_fuses=0xFF -attiny25at8.bootloader.path=empty -attiny25at8.bootloader.file=empty25at8.hex +####### Optiboots ####### -attiny25at8.build.mcu=attiny25 -attiny25at8.build.f_cpu=8000000L -attiny25at8.build.core=tiny -attiny25at8.build.variant=tinyX5 +attiny85.menu.clock.internal8ob=Optiboot @ 8 MHz (internal osc) +attiny85.menu.clock.internal8ob.upload.speed=19200 +attiny85.menu.clock.internal8ob.upload.maximum_size=7616 +attiny85.menu.clock.internal8ob.bootloader.low_fuses=0xE2 +attiny85.menu.clock.internal8ob.bootloader.high_fuses=0xD7 +attiny85.menu.clock.internal8ob.bootloader.extended_fuses=0xFE +attiny85.menu.clock.internal8ob.bootloader.file=optiboot/optiboot_attiny85.hex +attiny85.menu.clock.internal8ob.build.f_cpu=8000000L +attiny85.menu.clock.internal8ob.build.variant=tinyX5optiboot -########################################################################### - -attiny25at1.name=ATtiny25 @ 1 MHz - -# The following do NOT work... -# attiny25at1.upload.using=avrispv2 -# attiny25at1.upload.using=Pololu USB AVR Programmer - -# The following DO work (pick one)... -attiny25at1.upload.using=arduino:arduinoisp -# attiny25at1.upload.protocol=avrispv2 -# attiny25at1.upload.using=pololu - -attiny25at1.upload.maximum_size=2048 - -# Default clock (slowly rising power; long delay to clock; 8 MHz internal) -# Int. RC Osc. 8 MHz; Start-up time PWRDWN/RESET: 6 CK/14 CK + 64 ms; [CKSEL=0010 SUT=10]; default value -# Brown-out detection disabled; [BODLEVEL=111] -# Preserve EEPROM memory through the Chip Erase cycle; [EESAVE=0] - -attiny25at1.bootloader.low_fuses=0x62 -attiny25at1.bootloader.high_fuses=0xD7 -attiny25at1.bootloader.extended_fuses=0xFF -attiny25at1.bootloader.path=empty -attiny25at1.bootloader.file=empty25at1.hex - -attiny25at1.build.mcu=attiny25 -attiny25at1.build.f_cpu=1000000L -attiny25at1.build.core=tiny -attiny25at1.build.variant=tinyX5 +########################################################################### +############################ A T T I N Y 2 3 1 3 ######################## ########################################################################### -attiny2313at8.name=ATtiny2313 @ 8 MHz +attiny2313.name=ATTiny2313 +attiny2313.upload.tool=arduino:avrdude +attiny2313.upload.maximum_size=2048 +attiny2313.bootloader.tool=arduino:avrdude +#attiny2313.bootloader.path=empty +attiny2313.bootloader.file=empty/empty2313at8.hex -# The following do NOT work... -# attiny2313at8.upload.using=avrispv2 -# attiny2313at8.upload.using=Pololu USB AVR Programmer +attiny2313.build.mcu=attiny2313 +attiny2313.build.core=tiny +attiny2313.build.variant=tinyX313 +attiny2313.build.board=ATTINY2313 -# The following DO work (pick one)... -attiny2313at8.upload.using=arduino:arduinoisp -# attiny2313at8.upload.protocol=avrispv2 -# attiny2313at8.upload.using=pololu +########################### define clocks ################################# -attiny2313at8.upload.maximum_size=2048 # Default clock (slowly rising power; long delay to clock; 8 MHz internal) # Int. RC Osc. 8 MHz; Start-up time: 14 CK + 65 ms; [CKSEL=0100 SUT=10]; default value @@ -545,31 +247,12 @@ attiny2313at8.upload.maximum_size=2048 # Serial program downloading (SPI) enabled; [SPIEN=0] # Preserve EEPROM memory through the Chip Erase cycle; [EESAVE=0] -attiny2313at8.bootloader.low_fuses=0xE4 -attiny2313at8.bootloader.high_fuses=0x9F -attiny2313at8.bootloader.extended_fuses=0xFF -attiny2313at8.bootloader.path=empty -attiny2313at8.bootloader.file=empty2313at8.hex - -attiny2313at8.build.mcu=attiny2313 -attiny2313at8.build.f_cpu=8000000L -attiny2313at8.build.core=tiny -attiny2313at8.build.variant=tinyX313 +attiny2313.menu.clock.internal8=8 MHz +attiny2313.menu.clock.internal8.bootloader.low_fuses=0xE4 +attiny2313.menu.clock.internal8.bootloader.high_fuses=0x9F +attiny2313.menu.clock.internal8.bootloader.extended_fuses=0xFF +attiny2313.menu.clock.internal8.build.f_cpu=8000000L -########################################################################### - -attiny2313at1.name=ATtiny2313 @ 1 MHz - -# The following do NOT work... -# attiny2313at1.upload.using=avrispv2 -# attiny2313at1.upload.using=Pololu USB AVR Programmer - -# The following DO work (pick one)... -attiny2313at1.upload.using=arduino:arduinoisp -# attiny2313at1.upload.protocol=avrispv2 -# attiny2313at1.upload.using=pololu - -attiny2313at1.upload.maximum_size=2048 # Default clock (slowly rising power; long delay to clock; 8 MHz internal; divide clock by 8) # Int. RC Osc. 8 MHz; Start-up time: 14 CK + 65 ms; [CKSEL=0100 SUT=10]; default value @@ -578,301 +261,137 @@ attiny2313at1.upload.maximum_size=2048 # Serial program downloading (SPI) enabled; [SPIEN=0] # Preserve EEPROM memory through the Chip Erase cycle; [EESAVE=0] -attiny2313at1.bootloader.low_fuses=0x64 -attiny2313at1.bootloader.high_fuses=0x9F -attiny2313at1.bootloader.extended_fuses=0xFF -attiny2313at1.bootloader.path=empty -attiny2313at1.bootloader.file=empty2313at1.hex +attiny2313.menu.clock.internal1=1 MHz +attiny2313.menu.clock.internal1.bootloader.low_fuses=0x64 +attiny2313.menu.clock.internal1.bootloader.high_fuses=0x9F +attiny2313.menu.clock.internal1.bootloader.extended_fuses=0xFF +attiny2313.menu.clock.internal1.build.f_cpu=1000000L -attiny2313at1.build.mcu=attiny2313 -attiny2313at1.build.f_cpu=1000000L -attiny2313at1.build.core=tiny -attiny2313at1.build.variant=tinyX313 - -########################################################################### +########################################################################### +############################ A T T I N Y 8 6 1 ########################## +########################################################################### -attiny167.name=ATtiny167 @ 8 MHz (internal oscillator; BOD enabled) +attiny861.name=ATTiny861 +attiny861.upload.tool=arduino:avrdude +attiny861.upload.maximum_size=8192 +attiny861.bootloader.tool=arduino:avrdude +#attiny861.bootloader.path=empty +attiny861.bootloader.file=empty/empty861at8.hex -attiny167.upload.using=arduino:arduinoisp +attiny861.build.mcu=attiny861 +attiny861.build.core=tiny +attiny861.build.variant=tinyX61 +attiny861.build.board=ATTINY861 + +########################### define clocks ################################# -attiny167.upload.maximum_size=16384 +# Default clock (slowly rising power; long delay to clock; 1 MHz internal) +# Int. RC Osc. 8 MHz divided by 8; Start-up time PWRDWN/RESET: 6 CK/14 CK + 64 ms; [CKSEL=0010 SUT=10]; default value +# Brown-out detection disabled; [BODLEVEL=111] -# Default clock (slowly rising power; long delay to clock; 8 MHz internal) -# Int. RC Osc. 8 MHz; Start-up time PWRDWN/RESET: 6 CK/14 CK + 64 ms; [CKSEL=0010 SUT=10]; default value +attiny861.menu.clock.internal1=1 MHz (internal oscillator; BOD disabled) +attiny861.menu.clock.internal1.bootloader.low_fuses=0x62 +attiny861.menu.clock.internal1.bootloader.high_fuses=0xDF +attiny861.menu.clock.internal1.bootloader.extended_fuses=0xFF +attiny861.menu.clock.internal1.build.f_cpu=1000000L -# Brown-out detection disabled; [BODLEVEL=111] -# Preserve EEPROM memory through the Chip Erase cycle; [EESAVE=0] -# Self-Programming Disabled; [SELFPRGEN=1] +########################################################################### +############################ A T T I N Y 1 6 7 ########################## +########################################################################### -attiny167.bootloader.low_fuses=0xE2 -attiny167.bootloader.high_fuses=0xD7 -attiny167.bootloader.extended_fuses=0xFF -attiny167.bootloader.path=empty -attiny167.bootloader.file=empty167.hex +attiny167.name=ATtiny167 +attiny167.upload.tool=arduino:avrdude +attiny167.upload.maximum_size=16384 +attiny167.bootloader.tool=arduino:avrdude +#attiny167.bootloader.path=empty +attiny167.bootloader.file=empty/empty167.hex attiny167.build.mcu=attiny167 -attiny167.build.f_cpu=8000000L attiny167.build.core=tiny attiny167.build.variant=tinyX7 +attiny167.build.board=ATTINY167 -########################################################################### - -attiny87.name=ATtiny87 @ 8 MHz (internal oscillator; BOD enabled) - -attiny87.upload.using=arduino:arduinoisp - -attiny87.upload.maximum_size=8192 +########################### define clocks ################################# # Default clock (slowly rising power; long delay to clock; 8 MHz internal) # Int. RC Osc. 8 MHz; Start-up time PWRDWN/RESET: 6 CK/14 CK + 64 ms; [CKSEL=0010 SUT=10]; default value - # Brown-out detection disabled; [BODLEVEL=111] - # Preserve EEPROM memory through the Chip Erase cycle; [EESAVE=0] # Self-Programming Disabled; [SELFPRGEN=1] - -attiny87.bootloader.low_fuses=0xE2 -attiny87.bootloader.high_fuses=0xD7 -attiny87.bootloader.extended_fuses=0xFF -attiny87.bootloader.path=empty -attiny87.bootloader.file=empty87.hex - - -attiny87.build.mcu=attiny87 -attiny87.build.f_cpu=8000000L -attiny87.build.core=tiny -attiny87.build.variant=tinyX7 -########################################################################### - -attiny167_20.name=Optiboot ATtiny167 @ 20 MHz (external oscillator; BOD enabled) - -attiny167_20.upload.protocol=arduino -attiny167_20.upload.speed=57600 -attiny167_20.upload.maximum_size=15808 +attiny167.menu.clock.internal8=8 MHz (internal oscillator; BOD enabled) +attiny167.menu.clock.internal8.bootloader.low_fuses=0xE2 +attiny167.menu.clock.internal8.bootloader.high_fuses=0xD7 +attiny167.menu.clock.internal8.bootloader.extended_fuses=0xFF +attiny167.menu.clock.internal8.build.f_cpu=8000000L + # Default clock (slowly rising power; long delay to clock; 8 MHz internal) # Int. RC Osc. 8 MHz; Start-up time PWRDWN/RESET: 6 CK/14 CK + 64 ms; [CKSEL=0010 SUT=10]; default value # Brown-out detection disabled; [BODLEVEL=111] # Preserve EEPROM memory through the Chip Erase cycle; [EESAVE=0] # Self-Programming Enabled; [SELFPRGEN=0] -attiny167_20.bootloader.low_fuses=0xA0 -attiny167_20.bootloader.high_fuses=0xDF -attiny167_20.bootloader.extended_fuses=0xFE -attiny167_20.bootloader.path=optiboot -attiny167_20.bootloader.file=optiboot_attiny167.hex - -attiny167_20.build.mcu=attiny167 -attiny167_20.build.f_cpu=20000000L -attiny167_20.build.core=tiny -attiny167_20.build.variant=tinyX7 - -########################################################################### - -attiny84_12.name=Optiboot ATtiny84 @ 12 MHz (external osc) +attiny167.menu.clock.external20ob=Optiboot @ 20 MHz (external oscillator; BOD enabled) +attiny167.menu.clock.external20ob.upload.speed=57600 +attiny167.menu.clock.external20ob.upload.maximum_size=15808 +attiny167.menu.clock.external20ob.bootloader.low_fuses=0xA0 +attiny167.menu.clock.external20ob.bootloader.high_fuses=0xDF +attiny167.menu.clock.external20ob.bootloader.extended_fuses=0xFE +attiny167.menu.clock.external20ob.bootloader.file=optiboot/optiboot_attiny167.hex +attiny167.menu.clock.external20ob.build.f_cpu=20000000L -attiny84_12.upload.protocol=arduino -attiny84_12.upload.speed=19200 -#bootloader takes up last 9 pages, so there is a limit on the max size. -attiny84_12.upload.maximum_size=7616 -attiny84_12.bootloader.low_fuses=0xE0 -attiny84_12.bootloader.high_fuses=0xD7 -attiny84_12.bootloader.extended_fuses=0xFE -attiny84_12.bootloader.path=optiboot -attiny84_12.bootloader.file=optiboot_attiny84_12.hex - -attiny84_12.build.mcu=attiny84 -attiny84_12.build.f_cpu=12000000L -attiny84_12.build.core=tiny -attiny84_12.build.variant=tinyX4optiboot - -########################################################################### - -attiny84_12_no.name=Optiboot ATtiny84 @ 12 MHz (external osc - NO MILLIS!) - -attiny84_12_no.upload.protocol=arduino -attiny84_12_no.upload.speed=19200 -#bootloader takes up last 9 pages, so there is a limit on the max size. -attiny84_12_no.upload.maximum_size=7616 - -attiny84_12_no.bootloader.low_fuses=0xE0 -attiny84_12_no.bootloader.high_fuses=0xD7 -attiny84_12_no.bootloader.extended_fuses=0xFE -attiny84_12_no.bootloader.path=optiboot -attiny84_12_no.bootloader.file=optiboot_attiny84_12.hex - -attiny84_12_no.build.mcu=attiny84 -attiny84_12_no.build.f_cpu=12000000L -attiny84_12_no.build.core=tinyNoMillis -attiny84_12_no.build.variant=tinyX4optiboot ########################################################################### -attiny84.name=Optiboot ATtiny84 @ 8 MHz (internal osc) - -attiny84.upload.protocol=arduino -attiny84.upload.speed=19200 -#bootloader takes up last 9 pages, so there is a limit on the max size. -attiny84.upload.maximum_size=7616 - -attiny84.bootloader.low_fuses=0xE2 -attiny84.bootloader.high_fuses=0xD7 -attiny84.bootloader.extended_fuses=0xFE -attiny84.bootloader.path=optiboot -attiny84.bootloader.file=optiboot_attiny84.hex - -attiny84.build.mcu=attiny84 -attiny84.build.f_cpu=8000000L -attiny84.build.core=tiny -attiny84.build.variant=tinyX4optiboot - +########################### A T T I N Y 8 8 ############################# ########################################################################### -attiny84nr.name=Optiboot ATtiny84 @ 8 MHz (NO RESET!) - -attiny84nr.upload.protocol=arduino -attiny84nr.upload.speed=19200 -#bootloader takes up last 9 pages, so there is a limit on the max size. -attiny84nr.upload.maximum_size=7616 - -attiny84nr.bootloader.low_fuses=0xE2 -attiny84nr.bootloader.high_fuses=0x57 -attiny84nr.bootloader.extended_fuses=0xFE -attiny84nr.bootloader.path=optiboot -attiny84nr.bootloader.file=optiboot_attiny84.hex - -attiny84nr.build.mcu=attiny84 -attiny84nr.build.f_cpu=8000000L -attiny84nr.build.core=tiny -attiny84nr.build.variant=tinyX4optiboot - -########################################################################### -attiny85.name=Optiboot ATtiny85 @ 8 MHz (internal osc) +attiny88.name=ATTiny88 +attiny88.upload.tool=arduino:avrdude +attiny88.upload.maximum_size=8192 -attiny85.upload.protocol=arduino -attiny85.upload.speed=19200 -#bootloader takes up last 9 pages, so there is a limit on the max size. -attiny85.upload.maximum_size=7616 +attiny88.bootloader.tool=arduino:avrdude +#attiny88.bootloader.path=empty +attiny88.bootloader.file=empty/empty88at8.hex +attiny88.build.mcu=attiny88 +attiny88.build.core=tiny +attiny88.build.variant=tinyX8 +attiny88.build.board=ATTINY88 -attiny85.bootloader.low_fuses=0xE2 -attiny85.bootloader.high_fuses=0xD7 -attiny85.bootloader.extended_fuses=0xFE -attiny85.bootloader.path=optiboot -attiny85.bootloader.file=optiboot_attiny85.hex +########################### define clocks ################################# -attiny85.build.mcu=attiny85 -attiny85.build.f_cpu=8000000L -attiny85.build.core=tiny -attiny85.build.variant=tinyX5optiboot -########################################################################### - -attiny88_1.name=ATtiny88 @ 1 MHz (internal oscillator; BOD disabled) -attiny88_1.upload.using=arduino:arduinoisp -attiny88_1.upload.maximum_size=8192 -#attiny88_1.upload.protocol=avrispv2 - # Default clock (slowly rising power; long delay to clock; 8 MHz internal) # Int. RC Osc. 8 MHz; Start-up time PWRDWN/RESET: 6 CK/14 CK + 65 ms; [CKSEL=1110 SUT=10]; default value # Divide clock by 8 internally; [CKDIV8=0] -attiny88_1.bootloader.low_fuses=0x6E - # Brown-out detection disabled; [BODLEVEL=111] # Preserve EEPROM memory through the Chip Erase cycle; [EESAVE=0] # Serial program downloading (SPI) enabled; [SPIEN=0] -attiny88_1.bootloader.high_fuses=0xD7 - -# Self-Programming Disabled; [SELFPRGEN=1] -attiny88_1.bootloader.extended_fuses=0x07 - -attiny88_1.bootloader.path=empty -attiny88_1.bootloader.file=empty88at1.hex -attiny88_1.build.mcu=attiny88 -attiny88_1.build.f_cpu=1000000L -attiny88_1.build.core=tiny -attiny88_1.build.variant=tinyX8 - -########################################################################### - -attiny88_8.name=ATtiny88 @ 8 MHz (internal oscillator; BOD disabled) -attiny88_8.upload.using=arduino:arduinoisp -attiny88_8.upload.maximum_size=8192 -#attiny88_8.upload.protocol=avrispv2 - -# Default clock (slowly rising power; long delay to clock; 8 MHz internal) -# Int. RC Osc. 8 MHz; Start-up time PWRDWN/RESET: 6 CK/14 CK + 65 ms; [CKSEL=1110 SUT=10]; default value -attiny88_8.bootloader.low_fuses=0xEE - -# Brown-out detection disabled; [BODLEVEL=111] -# Preserve EEPROM memory through the Chip Erase cycle; [EESAVE=0] -# Serial program downloading (SPI) enabled; [SPIEN=0] -attiny88_8.bootloader.high_fuses=0xD7 - # Self-Programming Disabled; [SELFPRGEN=1] -attiny88_8.bootloader.extended_fuses=0x07 -attiny88_8.bootloader.path=empty -attiny88_8.bootloader.file=empty88at8.hex -attiny88_8.build.mcu=attiny88 -attiny88_8.build.f_cpu=8000000L -attiny88_8.build.core=tiny -attiny88_8.build.variant=tinyX8 - -########################################################################### +attiny88.menu.clock.internal1=1 MHz (internal oscillator; BOD disabled) +attiny88.menu.clock.internal1.bootloader.high_fuses=0xD7 +attiny88.menu.clock.internal1.bootloader.low_fuses=0x6E +attiny88.menu.clock.internal1.bootloader.extended_fuses=0x07 +attiny88.menu.clock.internal1.build.f_cpu=1000000L -attiny88_1_nm.name=ATtiny88 @ 1 MHz (internal oscillator; BOD disabled; No Millis!) -attiny88_1_nm.upload.using=arduino:arduinoisp -attiny88_1_nm.upload.maximum_size=8192 -#attiny88_1_nm.upload.protocol=avrispv2 # Default clock (slowly rising power; long delay to clock; 8 MHz internal) # Int. RC Osc. 8 MHz; Start-up time PWRDWN/RESET: 6 CK/14 CK + 65 ms; [CKSEL=1110 SUT=10]; default value -# Divide clock by 8 internally; [CKDIV8=0] -attiny88_1_nm.bootloader.low_fuses=0x6E - # Brown-out detection disabled; [BODLEVEL=111] # Preserve EEPROM memory through the Chip Erase cycle; [EESAVE=0] # Serial program downloading (SPI) enabled; [SPIEN=0] -attiny88_1_nm.bootloader.high_fuses=0xD7 - # Self-Programming Disabled; [SELFPRGEN=1] -attiny88_1_nm.bootloader.extended_fuses=0x07 - -attiny88_1_nm.bootloader.path=empty -attiny88_1_nm.bootloader.file=empty88at1.hex -attiny88_1_nm.build.mcu=attiny88 -attiny88_1_nm.build.f_cpu=1000000L -attiny88_1_nm.build.core=tinyNoMillis -attiny88_1_nm.build.variant=tinyX8 - -########################################################################### - -attiny88_8_nm.name=ATtiny88 @ 8 MHz (internal oscillator; BOD disabled; No Millis!) -attiny88_8_nm.upload.using=arduino:arduinoisp -attiny88_8_nm.upload.maximum_size=8192 -#attiny88_8_nm.upload.protocol=avrispv2 - -# Default clock (slowly rising power; long delay to clock; 8 MHz internal) -# Int. RC Osc. 8 MHz; Start-up time PWRDWN/RESET: 6 CK/14 CK + 65 ms; [CKSEL=1110 SUT=10]; default value -attiny88_8_nm.bootloader.low_fuses=0xEE - -# Brown-out detection disabled; [BODLEVEL=111] -# Preserve EEPROM memory through the Chip Erase cycle; [EESAVE=0] -# Serial program downloading (SPI) enabled; [SPIEN=0] -attiny88_8_nm.bootloader.high_fuses=0xD7 -# Self-Programming Disabled; [SELFPRGEN=1] -attiny88_8_nm.bootloader.extended_fuses=0x07 +attiny88.menu.clock.internal8=8 MHz (internal oscillator; BOD disabled) +attiny88.menu.clock.internal8.bootloader.extended_fuses=0x07 +attiny88.menu.clock.internal8.bootloader.low_fuses=0xEE +attiny88.menu.clock.internal8.bootloader.high_fuses=0xD7 +attiny88.menu.clock.internal8.build.f_cpu=8000000L -attiny88_8_nm.bootloader.path=empty -attiny88_8_nm.bootloader.file=empty88at8.hex -attiny88_8_nm.build.mcu=attiny88 -attiny88_8_nm.build.f_cpu=8000000L -attiny88_8_nm.build.core=tinyNoMillis -attiny88_8_nm.build.variant=tinyX8 -########################################################################### +### \ No newline at end of file diff --git a/tiny/platform.txt b/tiny/platform.txt new file mode 100644 index 0000000..7c3d047 --- /dev/null +++ b/tiny/platform.txt @@ -0,0 +1,109 @@ + +# Arduino AVR Core and platform. +# ------------------------------ +# +# For more info: +# https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5---3rd-party-Hardware-specification + +name=FemtoCow ATTiny +version=1.0.0 + +# AVR compile variables +# --------------------- + +compiler.warning_flags=-w +compiler.warning_flags.none=-w +compiler.warning_flags.default= +compiler.warning_flags.more=-Wall +compiler.warning_flags.all=-Wall -Wextra + +# Default "compiler.path" is correct, change only if you want to overidde the initial value +compiler.path={runtime.tools.avr-gcc.path}/bin/ +compiler.c.cmd=avr-gcc +compiler.c.flags=-c -g -Os {compiler.warning_flags} -ffunction-sections -fdata-sections -MMD +# -w flag added to avoid printing a wrong warning http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59396 +# This is fixed in gcc 4.8.3 and will be removed as soon as we update the toolchain +compiler.c.elf.flags={compiler.warning_flags} -Os -Wl,--gc-sections +compiler.c.elf.cmd=avr-gcc +compiler.S.flags=-c -g -x assembler-with-cpp +compiler.cpp.cmd=avr-g++ +compiler.cpp.flags=-c -g -Os {compiler.warning_flags} -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD +compiler.ar.cmd=avr-ar +compiler.ar.flags=rcs +compiler.objcopy.cmd=avr-objcopy +compiler.objcopy.eep.flags=-O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0 +compiler.elf2hex.flags=-O ihex -R .eeprom +compiler.elf2hex.cmd=avr-objcopy +compiler.ldflags= +compiler.size.cmd=avr-size + +# This can be overriden in boards.txt +build.extra_flags= + +# These can be overridden in platform.local.txt +compiler.c.extra_flags= +compiler.c.elf.extra_flags= +compiler.S.extra_flags= +compiler.cpp.extra_flags= +compiler.ar.extra_flags= +compiler.objcopy.eep.extra_flags= +compiler.elf2hex.extra_flags= + +# AVR compile patterns +# -------------------- + +## Compile c files +recipe.c.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.c.flags} -mmcu={build.mcu} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.c.extra_flags} {build.extra_flags} {includes} "{source_file}" -o "{object_file}" + +## Compile c++ files +recipe.cpp.o.pattern="{compiler.path}{compiler.cpp.cmd}" {compiler.cpp.flags} -mmcu={build.mcu} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.cpp.extra_flags} {build.extra_flags} {includes} "{source_file}" -o "{object_file}" + +## Compile S files +recipe.S.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.S.flags} -mmcu={build.mcu} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.S.extra_flags} {build.extra_flags} {includes} "{source_file}" -o "{object_file}" + +## Create archives +recipe.ar.pattern="{compiler.path}{compiler.ar.cmd}" {compiler.ar.flags} {compiler.ar.extra_flags} "{build.path}/{archive_file}" "{object_file}" + +## Combine gc-sections, archives, and objects +recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" {compiler.c.elf.flags} -mmcu={build.mcu} {compiler.c.elf.extra_flags} -o "{build.path}/{build.project_name}.elf" {object_files} "{build.path}/{archive_file}" "-L{build.path}" -lm + +## Create output files (.eep and .hex) +recipe.objcopy.eep.pattern="{compiler.path}{compiler.objcopy.cmd}" {compiler.objcopy.eep.flags} {compiler.objcopy.eep.extra_flags} "{build.path}/{build.project_name}.elf" "{build.path}/{build.project_name}.eep" +recipe.objcopy.hex.pattern="{compiler.path}{compiler.elf2hex.cmd}" {compiler.elf2hex.flags} {compiler.elf2hex.extra_flags} "{build.path}/{build.project_name}.elf" "{build.path}/{build.project_name}.hex" + +## Compute size +recipe.size.pattern="{compiler.path}{compiler.size.cmd}" -A "{build.path}/{build.project_name}.elf" +recipe.size.regex=^(?:\.text|\.data|\.bootloader)\s+([0-9]+).* +recipe.size.regex.data=^(?:\.data|\.bss|\.noinit)\s+([0-9]+).* +recipe.size.regex.eeprom=^(?:\.eeprom)\s+([0-9]+).* + + +# AVR Uploader/Programmers tools +# ------------------------------ + +tools.avrdude.path={runtime.tools.avrdude.path} +tools.avrdude.cmd.path={path}/bin/avrdude +tools.avrdude.config.path={path}/etc/avrdude.conf + +tools.avrdude.upload.params.verbose=-v +tools.avrdude.upload.params.quiet=-q -q +tools.avrdude.upload.pattern="{cmd.path}" "-C{config.path}" {upload.verbose} -p{build.mcu} -c{upload.protocol} -P{serial.port} -b{upload.speed} -D "-Uflash:w:{build.path}/{build.project_name}.hex:i" + +tools.avrdude.program.params.verbose=-v +tools.avrdude.program.params.quiet=-q -q +tools.avrdude.program.pattern="{cmd.path}" "-C{config.path}" {program.verbose} -p{build.mcu} -c{protocol} {program.extra_params} "-Uflash:w:{build.path}/{build.project_name}.hex:i" + +tools.avrdude.erase.params.verbose=-v +tools.avrdude.erase.params.quiet=-q -q +tools.avrdude.erase.pattern="{cmd.path}" "-C{config.path}" {erase.verbose} -p{build.mcu} -c{protocol} {program.extra_params} -e -Ulock:w:{bootloader.unlock_bits}:m -Uefuse:w:{bootloader.extended_fuses}:m -Uhfuse:w:{bootloader.high_fuses}:m -Ulfuse:w:{bootloader.low_fuses}:m + +tools.avrdude.bootloader.params.verbose=-v +tools.avrdude.bootloader.params.quiet=-q -q +tools.avrdude.bootloader.pattern="{cmd.path}" "-C{config.path}" {bootloader.verbose} -p{build.mcu} -c{protocol} {program.extra_params} "-Uflash:w:{runtime.platform.path}/bootloaders/{bootloader.file}:i" -Ulock:w:{bootloader.lock_bits}:m + + +# USB Default Flags +# Default blank usb manufacturer will be filled it at compile time +# - from numeric vendor ID, set to Unknown otherwise +build.usb_manufacturer="Unknown" +build.usb_flags=-DUSB_VID={build.vid} -DUSB_PID={build.pid} '-DUSB_MANUFACTURER={build.usb_manufacturer}' '-DUSB_PRODUCT={build.usb_product}' diff --git a/tiny/programmers.txt b/tiny/programmers.txt new file mode 100644 index 0000000..6aadf4a --- /dev/null +++ b/tiny/programmers.txt @@ -0,0 +1,6 @@ +avrispv2.name=AVR ISP v2 +avrispv2.communication=serial +avrispv2.protocol=avrispv2 +dragon.name=AVR Dragon in ISP mode +dragon.communication=usb +dragon.protocol=dragon_isp