|
| 1 | +Use the Table of Contents button! Why was I making a ToC manually? (especially since I apparently did it wrong..) |
| 2 | + |
1 | 3 | # DxCore - Arduino support for the AVR DA, DB, and DD-series |
2 | 4 |
|
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. |
121 | 6 |
|
122 | 7 | ## Announcements |
123 | 8 |
|
@@ -203,20 +88,22 @@ Everyone always hates on QFN packaging, but it has a few advantages. The obvious |
203 | 88 | | USERROW | 32 | 32 | 32 | 32 | 32 | 32 | 64 | 512| 64 | |
204 | 89 | | BOOTROW | - | - | - | - | - | - | - | 64 | 64 | |
205 | 90 | | 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 | |
207 | 92 | | TCD's | - | 1 | - | 1 | 1 | 1 | - | - | - | |
208 | 93 | | TCE's | - | - | - | - | - | - | - | - | 1 | |
209 | 94 | | WEX | - | - | - | - | - | - | - | - | 1 | |
210 | 95 | | TCF's | - | - | - | - | - | - | - | - | 1 | |
211 | 96 | | CCL | 4 | 4 | 4 | 6 | 6 | 4 | 4 | 4 | 4 | |
212 | 97 | | 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 | - | - | |
215 | 101 | | 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 | |
217 | 103 | | USB | - | - | - | - | - | - | - | X | - | |
218 | 104 | | Core | mTC| mTC| mTC| DxC| DxC| DxC| DxC| DxC| DxC| |
219 | 105 |
|
| 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. |
220 | 107 | 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, ) |
221 | 108 | 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. |
222 | 109 | DA or DB: Migration path for high end megaAVR applications |
|
0 commit comments