Skip to content

Latest commit

 

History

History
92 lines (77 loc) · 6.9 KB

README.md

File metadata and controls

92 lines (77 loc) · 6.9 KB

I/O header files

These are the I/O header files from the latest ATpack available at the time of writing (or that's what this is probably what we're shipping with) These files are included in the documentation because all post 2016 AVR devices basically require you to have both the datasheet and IO header open when writing any sort of meaningful code that goes beyond the Arduino API. (In contrast with older parts, where you needed only the datasheet - the longer names for everything on the modern AVRs are far more readable, and I agree with their decision to pursue the new naming scheme, and these parts are all an incredible improvement; so I don't mean to complain.... but would it have killed them to put the actual word-for-word names for registers/bitfields/etc to copy/paste, so we don't need to keep the header file open too? If you're going to extend the length of the names of bitfields to make for more readable code, that also makes them difficult to type with perfect spelling, capitalization, and underscores in the right places, such that basically everyone will copy-paste them...

I am redistributing these solely as a convenience to users; particularly for less experienced users in the Arduino world, it turns out that being told to look at the header file is a bit daunting ("I found a bunch of iosomething.h files, but not the one for the chip I'm using" "In the Arduino folder? Oh no that's the version that the IDE came with, the core installed a new one..." "well where is it installed to?" "Okay so its in c:/users/(yourusername)/AppData/Arduino15/packages (so on and so forth), but AppData is hidden..." "Uhhhh.... okay can't I just go download it" "Oh of course, you can download it from Microchip - download the file from this page. Then change the file extension to .zip - the download has the .atpack extension, even though it's just a zip file")

The ATpack files are all available from http://packs.download.atmel.com/ They are licensed by Microchip under the Apache license.

The files in this location are NOT used by the core in any way, nor are they included in the board manager releases (the copy of the headers that are used are in (toolchain root)/avr/include/avr, where the root of the toolchain installation depends on your OS, how Arduino was installed, and the version of the core). The copy of these files that is when compiling for boards defined by this core is the one that is included with the toolchain package that board manager installs. The extras folder is not included in board manager releases at all - which is also why the main README.md has full-length URLs to the reference pages. Nobody wants to have to dig up files installed via board manager, whether it's to find a header used by the compiler, a pinout chart, or the core documentation (the .md files are best read on github, anyway)

Header file license

These files are not part of the core and I had no hand in their development They have been modified only by running codespell over them in order to make the repo pass CI spellcheck.

This is the license notice displayed when downloading these files. It (and only it) applies to all files in this directory with the exception of README.md itself.

Copyright (c) 2021 Microchip Technology Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the Licence at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Note on the unreleased parts

The headers for unreleased parts are included to help us all engage in speculation and prediction, which is always fun. They may change without notice.

Note on versions

These are the latest versions as of 3/11/2022. They are more recent than the ones used by the core when compiling. The toolchain will be updated with the next release

The most useful references

The highest pincount, highest flash headers are the most useful ones to refer to when you need to know what some option is called or how it's spelled.

Smaller pincount devices

Some functionality depends on the pincount (mostly the number of instances of a given peripheral).

Smaller-flash-size device headers

These are literally identical except for things directly related to flash or ram size (for example, only 128k parts mention RAMPZ). There is nothing illuminating in these files.

EA is coming

Some things are exciting, some disappointing. On the whole, reason to be optimistic, but not ecstatic. Save that for the DU-series.

The original v1.0.16 headers

These are not used, and have problems that have since been fixed. They also mention a couple of features that were removed from the product with the backspace key (as in, they were removed only from the documentation).