From d1f9379d8be6b64ef74ba393038947cb539377f9 Mon Sep 17 00:00:00 2001 From: finga Date: Mon, 30 Aug 2021 22:53:10 +0200 Subject: [PATCH] Add support for ATtiny816 Add basic support for the ATtiny816 of the tinyAVR1-series. --- Cargo.toml | 1 + Makefile | 2 +- README.md | 9 +- patch/attiny816.yaml | 47 + src/devices/mod.rs | 19 + src/lib.rs | 5 + vendor/attiny816.atdf | 5629 +++++++++++++++++++++++++++++++++++++++++ 7 files changed, 5707 insertions(+), 5 deletions(-) create mode 100644 patch/attiny816.yaml create mode 100644 vendor/attiny816.atdf diff --git a/Cargo.toml b/Cargo.toml index 08160cd667b5ca97a07707f63e1abc0b345eb6df..93cab7fe7c6c5b9ef0492671cecac4bb8ddd28e2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -39,6 +39,7 @@ attiny167 = ["device-selected"] attiny202 = ["device-selected"] attiny2313 = ["device-selected"] attiny2313a = ["device-selected"] +attiny816 = ["device-selected"] attiny84 = ["device-selected"] attiny841 = ["device-selected"] attiny85 = ["device-selected"] diff --git a/Makefile b/Makefile index b2e1b28d81777e1e442cfb9820cd94620be2fbba..dce61f3c46c1e65ccfcf30249c64b434d8888af3 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ all: deps chips -CHIPS := at90usb1286 atmega1280 atmega168 atmega2560 atmega8 atmega8u2 atmega328p atmega328pb atmega32u4 atmega4809 atmega48p atmega64 atmega644 attiny202 attiny2313 attiny2313a attiny84 attiny85 attiny88 attiny841 attiny861 attiny167 +CHIPS := at90usb1286 atmega1280 atmega168 atmega2560 atmega8 atmega8u2 atmega328p atmega328pb atmega32u4 atmega4809 atmega48p atmega64 atmega644 attiny202 attiny2313 attiny2313a attiny84 attiny85 attiny88 attiny816 attiny841 attiny861 attiny167 RUSTUP_TOOLCHAIN ?= nightly diff --git a/README.md b/README.md index 0d0c127b61e7ffe2fc59185b0451aecf9aa081d9..49368120855eb2123f38f39b6b01fc17d8a4adc8 100644 --- a/README.md +++ b/README.md @@ -19,10 +19,11 @@ Via the feature you can select which chip you want the register specifications f | `atmega64` | | | | `attiny84` | | `atmega644` | | | | `attiny85` | | `atmega168` | | | | `attiny88` | -| `atmega328p` | | | | `attiny841` | -| `atmega328pb` | | | | `attiny861` | -| `atmega1280` | | | | `attiny2313` | -| `atmega2560` | | | | `attiny2313a` | +| `atmega328p` | | | | `attiny816` | +| `atmega328pb` | | | | `attiny841` | +| `atmega1280` | | | | `attiny861` | +| `atmega2560` | | | | `attiny2313` | +| | | | | `attiny2313a` | ## Build Instructions The version on `crates.io` is pre-built. The following is only necessary when trying to build this crate from source. diff --git a/patch/attiny816.yaml b/patch/attiny816.yaml new file mode 100644 index 0000000000000000000000000000000000000000..f1c3e2fc94f60476b324c225239d86f2d30bcfb0 --- /dev/null +++ b/patch/attiny816.yaml @@ -0,0 +1,47 @@ +_svd: ../svd/attiny816.svd + +CRCSCAN: + CTRLB: + SRC: + _replace_enum: + FLASH: [0, "CRC on entire flash"] + BOOTAPP: [1, "CRC on boot and appl section of flash"] + BOOT: [2, "CRC on boot section of flash"] + MODE: + _replace_enum: + PRIORITY: [0, "Priority to flash"] + +NVMCTRL: + CTRLA: + CMD: + _replace_enum: + NONE: [0, "No command"] + WP: [1, "Write page"] + ER: [2, "Erase page"] + ERWP: [3, "Erase and write page"] + PBC: [4, "Page buffer clear"] + CHER: [5, "Chip erase"] + EEER: [6, "EEPROM erase"] + WFU: [7, "Write fuse (PDI only)"] + +SLPCTRL: + CTRLA: + SMODE: + _replace_enum: + IDLE: [0, "Idle mode"] + STANDBY: [1, "Standby Mode"] + PDOWN: [2, "Power-down Mode"] + +TCD0: + EVCTRL?: + CFG: + _replace_enum: + NEITHER: [0, "Neither Filter nor Asynchronous Event is enabled"] + FILTERON: [1, "Input Capture Noise Cancellation Filter enabled"] + ASYNCON: [2, "Asynchronous Event output qualification enabled"] + +USART0: + STATUS: + _modify: + WFB: + access: write-only diff --git a/src/devices/mod.rs b/src/devices/mod.rs index 71305a551b3f473f4d77353c37e9ad56defb1804..e3aa9e94f205d3267080eff0c287507834e1b287 100644 --- a/src/devices/mod.rs +++ b/src/devices/mod.rs @@ -326,6 +326,25 @@ impl attiny2313a::Peripherals { } } +/// [ATtiny816](https://www.microchip.com/wwwproducts/en/ATtiny816) +#[cfg(feature = "attiny816")] +pub mod attiny816; + +#[cfg(feature = "attiny816")] +impl attiny816::Peripherals { + /// Returns all the peripherals *once* + #[inline] + pub fn take() -> Option { + crate::interrupt::free(|_| { + if unsafe { DEVICE_PERIPHERALS } { + None + } else { + Some(unsafe { attiny816::Peripherals::steal() }) + } + }) + } +} + /// [ATtiny84](https://www.microchip.com/wwwproducts/en/ATtiny84) #[cfg(feature = "attiny84")] pub mod attiny84; diff --git a/src/lib.rs b/src/lib.rs index 87e524dbd9625c556285d12f507d9a51823aece9..ab0e4cbafda3625d4733dc209ae00632d24e99f4 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -16,6 +16,7 @@ #![cfg_attr(feature = "attiny202", doc = "**attiny202**,")] #![cfg_attr(feature = "attiny2313", doc = "**attiny2313**,")] #![cfg_attr(feature = "attiny2313a", doc = "**attiny2313a**,")] +#![cfg_attr(feature = "attiny816", doc = "**attiny816**,")] #![cfg_attr(feature = "attiny84", doc = "**attiny84**,")] #![cfg_attr(feature = "attiny841", doc = "**attiny841**,")] #![cfg_attr(feature = "attiny85", doc = "**attiny85**,")] @@ -42,6 +43,7 @@ //! * `attiny202` //! * `attiny2313` //! * `attiny2313a` +//! * `attiny816` //! * `attiny84` //! * `attiny841` //! * `attiny85` @@ -114,6 +116,7 @@ compile_error!( * attiny202 * attiny2313 * attiny2313a + * attiny816 * attiny84 * attiny841 * attiny85 @@ -159,6 +162,8 @@ pub use crate::devices::attiny202; pub use crate::devices::attiny2313; #[cfg(feature = "attiny2313a")] pub use crate::devices::attiny2313a; +#[cfg(feature = "attiny816")] +pub use crate::devices::attiny816; #[cfg(feature = "attiny84")] pub use crate::devices::attiny84; #[cfg(feature = "attiny841")] diff --git a/vendor/attiny816.atdf b/vendor/attiny816.atdf new file mode 100644 index 0000000000000000000000000000000000000000..273c9c717d979668e1efb3c321404e62d8b5ed40 --- /dev/null +++ b/vendor/attiny816.atdf @@ -0,0 +1,5629 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +