Skip to content

Commit 4a82008

Browse files
committed
.
1 parent 28d0b5f commit 4a82008

2 files changed

Lines changed: 11 additions & 124 deletions

File tree

README.md

Lines changed: 9 additions & 122 deletions
Original file line numberDiff line numberDiff line change
@@ -1,123 +1,8 @@
1+
Use the Table of Contents button! Why was I making a ToC manually? (especially since I apparently did it wrong..)
2+
13
# DxCore - Arduino support for the AVR DA, DB, and DD-series
24

3-
This is an Arduino core to support the exciting new AVR DA, DB, and DD-series microcontrollers from Microchip. These parts are the latest and highest spec 8-bit AVRs available, and take the AVR architecture to a whole new level with up to 128k flash, 16k SRAM, 55 I/O pins, 6 UART ports, 2 SPI and I2C ports, type A/B/D timers, and enhanced pin interrupts.
4-
5-
## Table of Contents
6-
* [Announcements](#announcements)
7-
* [WE HAVE A PROBLEM: WE HAVE NO PINMAP IMAGES](#we-have-a-problem-we-have-no-pinmap-images)
8-
* [IMPORTANT WARNINGS](#important-warnings)
9-
* [ATTN: Linux Users](#attn-linux-users)
10-
* [IDE 2.0.x unsupported](#ide-20x-unsupported)
11-
* [What is DxCore?](#what-is-dxcore)
12-
* [Supported Parts (click link for pinout diagram and details)](#supported-parts-click-link-for-pinout-diagram-and-details)
13-
* [Magic Packages](#magic-packages)
14-
* [VQFN's aren't so bad](#vqfns-arent-so-bad)
15-
* [Quick Summary](#quick-summary)
16-
* [Supported Clock Speeds](#supported-clock-speeds)
17-
* [For the DA, DB, DD and DU-series parts](#for-the-da-db-dd-and-du-series-parts)
18-
* [For the EA and EB-series](#for-the-ea-and-eb-series)
19-
* [UPDI Programming](#updi-programming)
20-
* [We set fuses when writing a sketch, except where specifically noted](#we-set-fuses-when-writing-a-sketch-except-where-specifically-noted)
21-
* [UPDI programming hardware](#updi-programming-hardware)
22-
* [From a USB-Serial Adapter With SerialUPDI (pyupdi-style - Recommended)](#from-a-usb-serial-adapter-with-serialupdi-pyupdi-style---recommended)
23-
* [What about Debugging?](#what-about-debugging)
24-
* [HV debrick project delayed](#hv-debrick-project-delayed)
25-
* [What's With All The Different SerialUPDI Options?](#whats-with-all-the-different-serialupdi-options)
26-
* [Why is My FTDI Adapter Insanely Slow?](#why-is-my-ftdi-adapter-insanely-slow)
27-
* [With a Classic Arduino (jtag2updi)](#with-a-classic-arduino-jtag2updi)
28-
* [So we can do HV UPDI on the DD's?](#so-we-can-do-hv-updi-on-the-dds)
29-
* [Compatibility Note for 32-bit Linux](#compatibility-note-for-32-bit-linux)
30-
* [Ways to refer to pins](#ways-to-refer-to-pins)
31-
* [PIN_Pxn Port Pin Numbers (recommended)](#pin_pxn-port-pin-numbers-recommended)
32-
* [Arduino Pin Numbers (if you must)](#arduino-pin-numbers-if-you-must)
33-
* [An and PIN_An constants (for compatibility)](#an-and-pin_an-constants-for-compatibility)
34-
* ["Missing" Pins](#missing-pins)
35-
* [Link-time Optimization (LTO) support](#link-time-optimization-lto-support)
36-
* [Exposed Hardware Features](#exposed-hardware-features)
37-
* [MVIO (DB, DD only)](#mvio-db-dd-only)
38-
* [ADC Support](#adc-support)
39-
* [DAC Support](#dac-support)
40-
* [Watchdog timer, software reset](#watchdog-timer-software-reset)
41-
* [Improved Digital I/O](#improved-digital-io)
42-
* [Serial (UART) Support](#serial-uart-support)
43-
* [SPI support](#spi-support)
44-
* [I2C (TWI) support, including all alternate pins, master & slave from the same TWI](#i2c-twi-support-including-all-alternate-pins-master--slave-from-the-same-twi)
45-
* [Alternate pin mapping (PORTMUX) support](#alternate-pin-mapping-portmux-support)
46-
* [PWM on LOTS of pins](#pwm-on-lots-of-pins)
47-
* [EEPROM - Yes](#eeprom---yes)
48-
* [USERROW - Yes](#userrow---yes)
49-
* [Pin Interrupts](#pin-interrupts)
50-
* [`attachInterrupt()` rework](#attachinterrupt-rework)
51-
* [Additional supported peripherals](#additional-supported-peripherals)
52-
* [On-chip Op-amps](#on-chip-op-amps)
53-
* [Analog Comparators](#analog-comparators)
54-
* [Configurable Custom Logic](#configurable-custom-logic)
55-
* [Event System](#event-system)
56-
* [Zero-Crossing Detector](#zero-crossing-detector)
57-
* [Timers](#timers)
58-
* [Timer types](#timer-types)
59-
* [Other major features](#other-major-features)
60-
* [Memory-mapped flash? It's complicated](#memory-mapped-flash-its-complicated)
61-
* [Writing to Flash from App](#writing-to-flash-from-app)
62-
* [Servo Support](#servo-support)
63-
* [`printf()` support for "printable" class](#printf-support-for-printable-class)
64-
* [**WARNING** `printf()` and variants thereof Have Many Pitfalls](#warning-printf-and-variants-thereof-have-many-pitfalls)
65-
* [Selectable `printf()` Implementation](#selectable-printf-implementation)
66-
* [Interrupts From Pins and in General](#interrupts-from-pins-and-in-general)
67-
* [Assembler Listing generation](#assembler-listing-generation)
68-
* [EESAVE configuration option](#eesave-configuration-option)
69-
* [BOD configuration options](#bod-configuration-options)
70-
* [NeoPixels (aka WS2812/SK6812 and many, many others)](#neopixels-aka-ws2812sk6812-and-many-many-others)
71-
* [Tone Support](#tone-support)
72-
* [millis/micros Timekeeping Options](#millismicros-timekeeping-options)
73-
* [Improved digital I/O](#improved-digital-io)
74-
* [Additional DxCore documentation](#additional-dxcore-documentation)
75-
* [Library documentation](#library-documentation)
76-
* [Bootloader (Optiboot) Support](#bootloader-optiboot-support)
77-
* [Guides](#guides)
78-
* [Reference Material (these are what I would call the documentation)](#reference-material)
79-
* [Function Reference](https://github.com/SpenceKonde/DxCore/blob/master/megaavr/extras/Ref_Functions.md)
80-
* [Analog Input (ADC) and Output (DAC)](https://github.com/SpenceKonde/DxCore/blob/master/megaavr/extras/Ref_Analog.md)
81-
* [Digital I/O and enhanced options](https://github.com/SpenceKonde/DxCore/blob/master/megaavr/extras/Ref_Digital.md)
82-
* [Interrupts](https://github.com/SpenceKonde/DxCore/blob/master/megaavr/extras/Ref_Interrupts.md)
83-
* [Timers and PWM](https://github.com/SpenceKonde/DxCore/blob/master/megaavr/extras/Ref_Timers.md)
84-
* [TCD0](https://github.com/SpenceKonde/DxCore/blob/master/megaavr/extras/Ref_TCD.md)
85-
* [Serial](https://github.com/SpenceKonde/DxCore/blob/master/megaavr/extras/Ref_Serial.md)
86-
* [Mapped flash and PROGMEM in DxCore](https://github.com/SpenceKonde/DxCore/blob/master/megaavr/extras/Ref_PROGMEM.md)
87-
* [Optiboot Bootloader](https://github.com/SpenceKonde/DxCore/blob/master/megaavr/extras/Ref_Optiboot.md)
88-
* [SerialUPDI](https://github.com/SpenceKonde/AVR-Guidance/blob/master/UPDI/jtag2updi.md)
89-
* [Clock Information](https://github.com/SpenceKonde/DxCore/blob/master/megaavr/extras/Ref_Clocks.md)
90-
* [Callbacks/weakly defined functions](https://github.com/SpenceKonde/DxCore/blob/master/megaavr/extras/Ref_Callbacks.md)
91-
* [Constants for part/feature/pin/version identification](https://github.com/SpenceKonde/DxCore/blob/master/megaavr/extras/Ref_Defines.md)
92-
* [Assembly Listing and Memory Maps](https://github.com/SpenceKonde/DxCore/blob/master/megaavr/extras/Ref_Export.md)
93-
* [Reset control and the WDT](https://github.com/SpenceKonde/DxCore/blob/master/megaavr/extras/Ref_Reset.md)
94-
* [Considerations for robust applications](https://github.com/SpenceKonde/DxCore/blob/master/megaavr/extras/Ref_Robust.md)
95-
* [Power Saving techniques and Sleep - inherited from megaTinyCore](megaavr/extras/PowerSave.md)
96-
* [Link time Optimization](https://github.com/SpenceKonde/DxCore/blob/master/megaavr/extras/Ref_LTO.md)
97-
* [List of Tools sub-menus](#list-of-tools-sub-menus)
98-
* [Optiboot only menu options](#optiboot-only-menu-options)
99-
* [Options not available with Optiboot](#options-not-available-with-optiboot)
100-
* [Support Continued Development](#support-continued-development)
101-
* [Warnings and Caveats](#warnings-and-caveats)
102-
* [Direct Register Manipulation](#direct-register-manipulation)
103-
* [Timer PWM and exceptions](#timer-pwm-and-exceptions)
104-
* [Differences in Behavior between DxCore and Official Cores](#differences-in-behavior-between-dxcore-and-official-cores)
105-
* [I2C **requires** external pullup resistors](#i2c-requires-external-pullup-resistors)
106-
* [Serial Does Not Manipulate Interrupt Priority](#serial-does-not-manipulate-interrupt-priority)
107-
* [SerialEvent Support is Dropped](#serialevent-support-is-dropped)
108-
* [`digitalRead()` does not turn off PWM](#digitalread-does-not-turn-off-pwm)
109-
* [`digitalWrite()`/`pinMode()` and INPUT pins](#digitalwritepinmode-and-input-pins)
110-
* [`analogWrite()` and TCD0 pins](#analogwrite-and-tcd0-pins)
111-
* [Serial does not manipulate interrupt priority](#serial-does-not-manipulate-interrupt-priority)
112-
* [Serial setting constants have different numeric values](#serial-setting-constants-have-different-numeric-values)
113-
* [TCA(s) are configured in Split Mode to get 3 additional PWM pins](#tcas-are-configured-in-split-mode-to-get-3-additional-pwm-pins)
114-
* [TCA0/1 and all TCB's used for PWM have TOP at 254, not 255](#tca01-and-all-tcbs-used-for-pwm-have-top-at-254-not-255)
115-
* [digital I/O functions use old function signatures](#digital-io-functions-use-old-function-signatures)
116-
* [`analogReadResolution()` is different](#analogreadresolution-is-different)
117-
* [As of 1.3.3, SerialEvent is removed](#as-of-133-serialevent-is-removed)
118-
* [Oh, and -Wall (compile warnings) are enabled no matter what you choose in the preferences](#oh-and--wall-compile-warnings-are-enabled-no-matter-what-you-choose-in-the-preferences)
119-
* [Instruction Set Enhancements (AVRe/AVRe+ vs AVRxt)](#instruction-set-enhancements-avreavre-vs-avrxt)
120-
* [License](#license)
5+
This is an Arduino core to support the AVR DA, DB, DD, EA, EB, and DU-series microcontrollers from Microchip. These parts are the latest and highest spec 8-bit AVRs available, and take the AVR architecture to a whole new level with up to 128k flash, 16k SRAM, 55 I/O pins, 6 UART ports, 2 SPI and I2C ports, type A/B/D timers, and enhanced pin interrupts.
1216

1227
## Announcements
1238

@@ -203,20 +88,22 @@ Everyone always hates on QFN packaging, but it has a few advantages. The obvious
20388
| USERROW | 32 | 32 | 32 | 32 | 32 | 32 | 64 | 512| 64 |
20489
| BOOTROW | - | - | - | - | - | - | - | 64 | 64 |
20590
| TCA's | 1 | 1 | 1 | 2 | 2 | 1 | 2 | 1 | 0 |
206-
| TCB's | 1 | 2 | 2 | 5 | 5 | 3 | 4 | 2 | 2 |
91+
| TCB's | 1 | 2* | 2 | 5 | 5 | 3 | 4 | 2 | 2 |
20792
| TCD's | - | 1 | - | 1 | 1 | 1 | - | - | - |
20893
| TCE's | - | - | - | - | - | - | - | - | 1 |
20994
| WEX | - | - | - | - | - | - | - | - | 1 |
21095
| TCF's | - | - | - | - | - | - | - | - | 1 |
21196
| CCL | 4 | 4 | 4 | 6 | 6 | 4 | 4 | 4 | 4 |
21297
| MVIO | - | - | - | - | X | X | - | - | - |
213-
| EVSYS | 3 | 6 | 6 | 10 | 10 | 6 | 6 | 6 | 6 |
214-
| ADC bits | 10 | 10 | 12 | 12 | 12 | 12 | 12 | 10?| 12 |
98+
| EVSYS | 3 | 6 | 6 | 10 * | 10 * | 6 | 6 | 6 | 6 |
99+
| ADC bits | 10 | 10 | 12 | 12 | 12 | 12 | 12 | 10 | 12 |
100+
| DAC bits | - | 8 | - | 10 | 10 | 10 | 10 | - | - |
215101
| Has PGA | - | - | X | - | - | - | X | - | X |
216-
| Released | X | X | X | X | X | X |some| - | - |
102+
| Released | X | X | X | X | X | X | X | X | X |
217103
| USB | - | - | - | - | - | - | - | X | - |
218104
| Core | mTC| mTC| mTC| DxC| DxC| DxC| DxC| DxC| DxC|
219105

106+
`*` TinyAVR 1-series with 16 or 32k of flash have 2k of ram (not the 1k expected for 16k), a second copy of the ADC, 2 extra analog comparators and a second TCB. AVR DA and AVR DB-series parts with less than 48 pins have 8 event channels instead of 10.
220107
t1/t2: Migration path for classic tinyAVR, excellent for small applications in general (frequently better than DD/EX-series parts if you need all the peripheral pins of all the peripherals - For example, a CCL-heavy application might skate by with a 424 (I have one that does), but, well, a DD14 don't have enough pins I can get CCL out on, )
221108
t0: If it cost 25% less than the t1's I might give them a second look. They cost around 1-2% less. So I don't know who the hell buys this garbage.
222109
DA or DB: Migration path for high end megaAVR applications

megaavr/extras/AboutDxSeries.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Overall information regarding the AVR Dx-series
22

3-
## Quick warning - this page was is miserable shape. Hopefully it's been patched up decently.
3+
## Quick warning - this page was is miserable shape. Hopefully it's been patched up decently
44

55
In early 2020, as the world was shutting down because of COVID-19, Microchip released the first of their new generation of parts. Along with many exciting features, it also brought one odd relic: a single nail, the meaning of which was clear when the naming of the parts was announced. That was last nail in the coffin of the ATmega branding, and it has been driven securely into place. The Dx and Ex-series have replaced it. The next question is how much longer tinyAVR has. There may well not be anything else called an ATtiny in the future either. Now that the company is no longer ATmel, why would they keep the AT-prefixed brands? And of course, since Microchip has all the creativity that you'd expect from a company that makes microchips and is named Microchip, the new naming system is uncreative in the extreme: AVRffXYpp - where ff is a number, the flash size in kb, XY are two capital letters indicating the chip generation, and family (likely both generation and family will generally go in alphabetical order, with a possible exception for USB-native parts, which could get a U (per the withdrawn DU-series brief) - I imagine "DC" was skipped because that has an obvious meaning in electronics. They will probably skip "F" as a generation letter, too, F being a failing grade in school, not to mention its association with a certain explitive. Certainly, if there is an Fx-series, they'd have to pick some other letter for the family with native USB support. An FU-series wouldn't be a marketing success story.
66

@@ -77,7 +77,7 @@ Notes:
7777

7878
| | AVR EB14 | AVR EB20 | AVR EB28 | AVR EB32 | AVR EA 28 | AVR EA32 | AVR EA48 | AVR DU14 | AVR DU20 | AVR DU28 | AVR DU32 |
7979
|--------------------------------|------------|------------|------------|------------|------------|------------|------------|----------|----------|----------|----------|
80-
| Released | 2024 | 2024 | 2024 | 2025 | 2023` ` | 2023 | 2023 | 2024 | 2024 | 2024 | 2024 |
80+
| Released | 2024 | 2024 | 2024 | 2025 | 2023 | 2023 | 2023 | 2024 | 2024 | 2024 | 2024 |
8181
| Memory (max) Flash/RAM | 32k/3k | 32k/3k | 32k/3k | 32k/3k | 64k/6k | 64k/6k | 64k/6k | 32k/4k | 32k/4k | 64k/8k | 64k/8k |
8282
| Memory (min) Flash/RAM | 16k/2k | 16k/2k | 16k/2k | 16k/2k | 16k/2k | 16k/2k | 16k/2k | 16k/2k | 16k/2k | 16k/2k | 16k/2k |
8383
| EEPROM | 512 | 512 | 512 | 512 | 512 | 512 | 512 | 512 | 512 | 512 | 512 |

0 commit comments

Comments
 (0)