Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: SpenceKonde/ATTinyCore
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v2.0.0-devThis-is-the-head-submit-PRs-against-this
Choose a base ref
...
head repository: wtschueller/ATTinyCore
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: master
Choose a head ref
Can’t automatically merge. Don’t worry, you can still create the pull request.
  • 3 commits
  • 5 files changed
  • 1 contributor

Commits on Jun 14, 2022

  1. Copy the full SHA
    fb9fccd View commit details
  2. Copy the full SHA
    905bcca View commit details
  3. Copy the full SHA
    f6d8dba View commit details
Showing with 33 additions and 33 deletions.
  1. +9 −9 ATtiny85_doc/README.md
  2. +6 −6 README.md
  3. +16 −17 avr/extras/README.md
  4. +1 −1 avr/extras/UsingMicronucleus.md
  5. +1 −0 avr/extras/ci/codespell-ignore-words-list.txt
18 changes: 9 additions & 9 deletions ATtiny85_doc/README.md
Original file line number Diff line number Diff line change
@@ -4,22 +4,22 @@
<img src="https://goo.gl/7cxEmm" width="500">
</p>

Follow those steps for use the Arduino as ISP:
- Load the sketch "ArduinoISP" on your Arduino
- Connect the Arduino with "ArduinoISP" to the ATtiny85. Use the schematic in this folder.
- Open your ATtiny85 program and select:
* "tools" --> "board" --> "ATtiny"
* "tools" --> "processor" --> "ATtiny85"
Follow those steps for use the Arduino as ISP:
- Load the sketch "ArduinoISP" on your Arduino
- Connect the Arduino with "ArduinoISP" to the ATtiny85. Use the schematic in this folder.
- Open your ATtiny85 program and select:
* "tools" --> "board" --> "ATtiny"
* "tools" --> "processor" --> "ATtiny85"
* "tools" --> "programmer" --> "Arduino as ISP(ATtinycore)"

**IF** it's the **first time** you use the ATtiny OR you want to **change the frequency** (Mhz) OR **BOD settings**, you must burn the bootloader:
- "tools" --> Burn Bootloader
**IF** it's the **first time** you use the ATtiny OR you want to **change the frequency** (Mhz) OR **BOD settings**, you must burn the bootloader:
- "tools" --> Burn Bootloader

Now you can upload your sketch.


### The 0,1 uF capacitor
All ATTiny chips (as well as the vast majority of digital integrated circuits) require a 0.1uF ceramic capacitor between Vcc and Gnd for decoupling; this should be located as close to the chip as possible (minimize length of wires to cap). Devices with multiple Vcc pins, or an AVcc pin, should use a cap on those pins too. Do not be fooled by poorly written tutorials or guides that omit these.
All ATTiny chips (as well as the vast majority of digital integrated circuits) require a 0.1uF ceramic capacitor between Vcc and Gnd for decoupling; this should be located as close to the chip as possible (minimize length of wires to cap). Devices with multiple Vcc pins, or an AVcc pin, should use a cap on those pins too. Do not be fooled by poorly written tutorials or guides that omit these.

### The 10 uF capacitor
The capacitor prevents the Arduino board from resetting (which starts the bootloader), thus ensuring that the Arduino IDE talks to the ArduinoISP (not the bootloader) during the upload of sketches.
12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,29 +1,29 @@
# ATTinyCore **Universal**
Arduino support for almost every classic tinyAVR device! Supports ATtiny 1634, 2313/4313, 24/44/84, 441/841, 25/45/85, 261/461/861, 87/167, 48/88, 43 and 828. Supports programming vis ISP, Serial (Optiboot - all parts with >4k flash, and all parts with 4k flash for which an 8k version is available) or VUSB (Micronucleus - where appropriate)
## State of ATTinyCore
Development of ATTinyCore is proceeding in the v2.0.0-dev branch.
Development of ATTinyCore is proceeding in the v2.0.0-dev branch.

**PLEASE DO NOT SUBMIT PR's AGAINST the "MASTER" BRANCH
YOUR CHANGES WILL BE LOST UPON THE NEXT RELEASE IF YOU DO
NEW CHANGES NEED TO GO INTO v2.0.0-dev** (which will be my next project after DxCore 1.3.7 release this week)

## We desperately need testing help here
**THE 2.0.0-dev branch IS NOW READY FOR PUBLIC TESTING VIA MANUAL INSTALLATION**
It i **CRITICAL** that we get as much testing done as possible because **BASICALLY NOTHING HAS BEEN TESTED**, and virtually no files are without major fundamnental changes!
It i **CRITICAL** that we get as much testing done as possible because **BASICALLY NOTHING HAS BEEN TESTED**, and virtually no files are without major fundamnental changes!

*There are 272 different versions of micronucleus built (and part of the 2.0.0-dev branch now), and optiboot will dwarf that number!*
0 of those have been teted. Obviously we are leaning *very* heavily on automation of configuration generation for this release.
0 of those have been teted. Obviously we are leaning *very* heavily on automation of configuration generation for this release.

Half of the tinyNeoPixel speeds have had the assembly routines modified in major ways (there's no more stupid menu for the port), but they are untested. I have a TON of irons in the fire right now, and I am trying to get this out and stop delaying it and delaying it.
Half of the tinyNeoPixel speeds have had the assembly routines modified in major ways (there's no more stupid menu for the port), but they are untested. I have a TON of irons in the fire right now, and I am trying to get this out and stop delaying it and delaying it.

If you find problems with 2.0.0-dev (you can just create a "hardware" folder in your sketchbook and sync the repo to that location to nanually install - no need to do anything wacky like on my other cores), create an issue, start a discusion, or hell even just email me with info, just get the information to me somehow.
If you find problems with 2.0.0-dev (you can just create a "hardware" folder in your sketchbook and sync the repo to that location to nanually install - no need to do anything wacky like on my other cores), create an issue, start a discussion, or hell even just email me with info, just get the information to me somehow.

Thank you users!

## [Check it out, we have "discussions" now!](https://github.com/SpenceKonde/ATTinyCore/discussions)
Let's use that, not gitter.

### Current **strongly** recommended IDE version: 1.8.13 or later.
### Current **strongly** recommended IDE version: 1.8.13 or later.
Users of 1.6.x versions should use caution with any board manager packages as the handling of dependency versions, at least under 1.6.9, appears to be severely broken, such that installing one packages can break others. For example, DxCore won't work if ATYTinyCore is installed on 1.6.9! - both cores correctly specify their requirements, but the IDE does not use the correct versions of the toochain. It is likely that similar bugs involving other tools also manifest here. Use 1.8.13 or similar recent version if at all possible; if you are unwilling or unable to update your main Arduino IDE version, a "portable" installation is recommended - the separate copy of IDE *with portable installation* should ensure that what you do in that version does not effect the other version - if you can't use 1.8.13, a portable 1.6.9 version will achieve the same thing, only without the other fixes and improvements that went into the IDE since then.


33 changes: 16 additions & 17 deletions avr/extras/README.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
# Additional more detailed sections of documentation for ATTinyCore


* [ATtiny441, 841](avr/extras/ATtiny_x41.md) (With or without Optiboot or Micronucleus bootloader)
* [ATtiny1634](avr/extras/ATtiny_1634.md) (With or without Optiboot bootloader)
* [ATtiny87, 167](avr/extras/ATtiny_x7.md) (with or without Optiboot or Micronucleus bootloader)
* [ATtiny25, 45, 85](avr/extras/ATtiny_x5.md) (With or without Optiboot or Micronucleus bootloader)
* [ATtiny24, 44, 84](avr/extras/ATtiny_x4.md) (With or without Optiboot or Micronucleus bootloader)
* [ATtiny261, 461, 861](avr/extras/ATtiny_x61.md) (With or without Optiboot bootloader)
* [ATtiny48, 88](avr/extras/ATtiny_x8.md) (With or without Optiboot or Micronucleus bootloader)
* [ATtiny828](avr/extras/ATtiny_828.md) (With or without Optiboot bootloader)
* [ATtiny2313, 4313](avr/extras/ATtiny_x313.md) (no bootloader)
* [ATtiny43](avr/extras/ATtiny_43.md) (no bootloader)
* [ATtiny441, 841](ATtiny_x41.md) (With or without Optiboot or Micronucleus bootloader)
* [ATtiny1634](ATtiny_1634.md) (With or without Optiboot bootloader)
* [ATtiny87, 167](ATtiny_x7.md) (with or without Optiboot or Micronucleus bootloader)
* [ATtiny25, 45, 85](ATtiny_x5.md) (With or without Optiboot or Micronucleus bootloader)
* [ATtiny24, 44, 84](ATtiny_x4.md) (With or without Optiboot or Micronucleus bootloader)
* [ATtiny261, 461, 861](ATtiny_x61.md) (With or without Optiboot bootloader)
* [ATtiny48, 88](ATtiny_x8.md) (With or without Optiboot or Micronucleus bootloader)
* [ATtiny828](ATtiny_828.md) (With or without Optiboot bootloader)
* [ATtiny2313, 4313](ATtiny_x313.md) (no bootloader)
* [ATtiny43](ATtiny_43.md) (no bootloader)

Variants of these are also supported (such as the ATtiny1634R, ATtiny2313A or ATtiny85V)

@@ -82,10 +82,10 @@ The ATtiny441/841, ATtiny1634, ATtiny44/84, ATtiny45/85, ATtiny461/861, ATtiny48
#### A warning about Virtual Boot
Virtual boot relies on rewriting the vector table, such that the RESET vector points to the bootloader. This presents a potential issue: If the bootloader starts to write the first page, but then - for some reason - fails (such as a poorly timed reset right after the programming process begins), the page containing the reset vectors will be erased but not rewritten, with the result being that both the sketch and bootloader are hosed resulting in ISP programming being required to revive the chip. See #398

See the [Programming Guide](Programming.md) for more information on programming parts using Optiboot.
See the [Programming Guide](../../Programming.md) for more information on programming parts using Optiboot.

### Micronucleus - VUSB bootloader for 841, 167, 85, 88 and 84/84a
It's finally here! As of 1.4.0, we now offer Micronucleus (aka Digispark) support for some of the more popular boards for these bootloaders. This allows sketches to be uploaded directly via USB, which many users find highly convenient. This comes at a cost in terms of flash - they typically use around 1.5k of flash, and they sometimes have problems connecting to specific USB ports. These boards are available from various vendors; see the part-specific documentation pages for more information on the implementation used on specific parts. For more information on using Micronucleus, see the [usage documentation](avr/extras/UsingMicronucleus.md).
It's finally here! As of 1.4.0, we now offer Micronucleus (aka Digispark) support for some of the more popular boards for these bootloaders. This allows sketches to be uploaded directly via USB, which many users find highly convenient. This comes at a cost in terms of flash - they typically use around 1.5k of flash, and they sometimes have problems connecting to specific USB ports. These boards are available from various vendors; see the part-specific documentation pages for more information on the implementation used on specific parts. For more information on using Micronucleus, see the [usage documentation](UsingMicronucleus.md).

### Changing the ATtiny clock speed and other settings

@@ -100,7 +100,7 @@ Changing the ATtiny clock speed, B.O.D. settings etc, is easy. When an ATTinyCor
* Tools > B.O.D. Mode (active): (441, 841, 1634, 828 only - see B. O. D. section below)
* Tools > B.O.D. Mode (sleep): (441, 841, 1634, 828 only - see B. O. D. section below)

After changing the clock source, BOD settings, or whether to save EEPROM on chip erase), you must do "Burn Bootloader" with an ISP programmer. See [Programming Guide](Programming.md)
After changing the clock source, BOD settings, or whether to save EEPROM on chip erase), you must do "Burn Bootloader" with an ISP programmer. See [Programming Guide](../../Programming.md)

#### Supported clock speeds:
Supported clock speeds are shown in the menus in descending order of usefulness, ie, the popular clock speeds/sources are at the top, and the weird ones are at the bottom. See the notes for caveats specific to certain clock speeds.
@@ -211,7 +211,7 @@ Link time optimization is enabled by default. If compiling with very old version

### Makefile Support

For those who prefer to compile with a makefile instead of the IDE, sketches can be compiled with https://github.com/sudar/Arduino-Makefile - See the [makefile documentation](makefile.md) for more information on specific steps needed for this process.
For those who prefer to compile with a makefile instead of the IDE, sketches can be compiled with https://github.com/sudar/Arduino-Makefile - See the [makefile documentation](../../makefile.md) for more information on specific steps needed for this process.

### I2C support
**You must have external pullup resistors installed** - unlike devices with a real hardware TWI port, the internal pullups cannot be used with USI-based I2C to make simple cases (short wires, small number of tolerant slave devices) work. In all cases, including parts with hardware I2C where it may work sometimes, you should **always** use external pullup resistors, as the internal ones are far weaker than the I2C standard requires for reliable operation.
@@ -256,7 +256,7 @@ On the following chips, full serial (UART) support is provided in hardware, as S
* ATtiny1634 (two UARTs)
* ATtiny828

On the following chips, **no hardware serial is available**, however, a built-in software serial named `Serial` is provided to maximize compatibility. This uses the analog comparator pins (to take advantage of the interrupt, since very few sketches/libraries use it, while lots of sketches/libraries use PCINTs). **TX is AIN0, RX is AIN1** - This is a software implementation - as such, you cannot receive and send at the same time. If you try, you'll get gibberish, just like using SoftwareSerial. [See also the discussion of baud rates.](avr/extras/TinySoftSerialBaud.md)
On the following chips, **no hardware serial is available**, however, a built-in software serial named `Serial` is provided to maximize compatibility. This uses the analog comparator pins (to take advantage of the interrupt, since very few sketches/libraries use it, while lots of sketches/libraries use PCINTs). **TX is AIN0, RX is AIN1** - This is a software implementation - as such, you cannot receive and send at the same time. If you try, you'll get gibberish, just like using SoftwareSerial. [See also the discussion of baud rates.](TinySoftSerialBaud.md)
* ATtiny x5 (25/45/85)
* ATtiny x4 (24/44/84)
* ATtiny x61 (261/461/861)
@@ -285,7 +285,7 @@ Most of the ATtiny parts only have two timers. The attiny841 has a third timer -

### Built-in tinyNeoPixel library

The standard NeoPixel (WS2812/etc) libraries do not support all the clock speeds that this core supports, and some of them only support certain ports. This core includes two libraries for this, both of which are tightly based on the Adafruit_NeoPixel library, tinyNeoPixel and tinyNeoPixel_Static - the latter has a few differences from the standard library (beyond supporting more clocks speeds and ports), in order to save flash. At speeds below 16MHz, you must select the port containing the pin you wish to use from the Tools -> tinyNeoPixel Port menu. This code is not fully tested at "odd" clock speeds, but definitely works at 8/10/12/16/20 MHz, and will probably work at other speeds, as long as they are 7.3728 MHz or higher. See the [tinyNeoPixel documentation](avr/extras/tinyNeoPixel.md) and included examples for more information.
The standard NeoPixel (WS2812/etc) libraries do not support all the clock speeds that this core supports, and some of them only support certain ports. This core includes two libraries for this, both of which are tightly based on the Adafruit_NeoPixel library, tinyNeoPixel and tinyNeoPixel_Static - the latter has a few differences from the standard library (beyond supporting more clocks speeds and ports), in order to save flash. At speeds below 16MHz, you must select the port containing the pin you wish to use from the Tools -> tinyNeoPixel Port menu. This code is not fully tested at "odd" clock speeds, but definitely works at 8/10/12/16/20 MHz, and will probably work at other speeds, as long as they are 7.3728 MHz or higher. See the [tinyNeoPixel documentation](tinyNeoPixel.md) and included examples for more information.

### Retain EEPROM configuration option
All non-bootloader board definitions have a menu option to control whether the contents of the EEPROM are erased when programming. This only applies to ISP programming, and you must "burn bootloader" to set the fuses to apply this. Because it only applies to ISP programming, it is not available for Bootloader board definitions. On those, EEPROM is never retained, on the reasoning that if you are burning the bootloader to a chip, you are trying to restore it to a "fresh" state.
@@ -307,4 +307,3 @@ The Tools -> millis()/micros() allows you to enable or disable the millis() and
## Memory Lock Bits, disabling Reset

ATTinyCore will never set lock bits automatically, nor will it set fuses to disable ISP programming (it is intentionally not made available as an option, since after doing that, an HVSP programmer is needed to further reprogram the chip, and inexperienced users would be at risk of bricking their chips this way). The usual workflow when these bits are in use is Set other fuses -> Upload -> Test -> set the lockbits and/or fuses. This can be done from the command line using AVRdude. To expedite the process, you can enable "Verbose Upload" in preferences, do "burn bootloader" (the board and/or programmer does not need to be present), scroll to the top of the output window - the first line is the avrdude command used to burn the bootloader, including the paths to all the relevant files. It can be used as a template for the command you execute to set the fuse/lock bits. Disabling of reset is currently not an option, either - but for bootloader boards, this may change - VUSB bootloaders which disable reset are in widespread use, seemingly without issue. It will never be an option for non-bootloader boards because of the convoluted workflow required.

2 changes: 1 addition & 1 deletion avr/extras/UsingMicronucleus.md
Original file line number Diff line number Diff line change
@@ -60,7 +60,7 @@ uint8_t resetcause = GPIOR0;
if(resetcause == 0) {
resetcause = MCUSR;
MCUSR = 0;
}
}
// if you use GPIOR0 in your code
else {
GPIOR0 = 0;
1 change: 1 addition & 0 deletions avr/extras/ci/codespell-ignore-words-list.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
rcall
hart
aci
statics