From 38126f08ee554f40fe34a1e4d8948f53c5840899 Mon Sep 17 00:00:00 2001 From: Adam Gausmann Date: Mon, 24 Oct 2022 20:39:47 -0500 Subject: [PATCH] Add support for ATtiny404 --- Cargo.toml | 1 + Makefile | 2 +- README.md | 1 + patch/attiny404.yaml | 4 + src/devices/mod.rs | 19 + src/lib.rs | 4 + vendor/attiny404.atdf | 4775 +++++++++++++++++++++++++++++++++++++++++ 7 files changed, 4805 insertions(+), 1 deletion(-) create mode 100644 patch/attiny404.yaml create mode 100644 vendor/attiny404.atdf diff --git a/Cargo.toml b/Cargo.toml index 9e1964f..da1703e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -44,6 +44,7 @@ attiny167 = ["device-selected"] attiny202 = ["device-selected"] attiny2313 = ["device-selected"] attiny2313a = ["device-selected"] +attiny404 = ["device-selected"] attiny816 = ["device-selected"] attiny84 = ["device-selected"] attiny841 = ["device-selected"] diff --git a/Makefile b/Makefile index 08479bd..f668428 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ all: deps chips -CHIPS := at90usb1286 atmega1280 atmega1284p atmega128rfa1 atmega164pa atmega168 atmega2560 atmega8 atmega8u2 atmega328p atmega328pb atmega32u4 atmega4809 atmega48p atmega64 atmega644 attiny13a attiny202 attiny2313 attiny2313a attiny84 attiny85 attiny88 attiny816 attiny841 attiny861 attiny167 attiny1614 +CHIPS := at90usb1286 atmega1280 atmega1284p atmega128rfa1 atmega164pa atmega168 atmega2560 atmega8 atmega8u2 atmega328p atmega328pb atmega32u4 atmega4809 atmega48p atmega64 atmega644 attiny13a attiny202 attiny2313 attiny2313a attiny404 attiny84 attiny85 attiny88 attiny816 attiny841 attiny861 attiny167 attiny1614 RUSTUP_TOOLCHAIN ?= nightly diff --git a/README.md b/README.md index 2473c02..384f866 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,7 @@ Via the feature you can select which chip you want the register specifications f | `atmega128rfa1` | | | | `attiny1614`| | `atmega2560` | | | | `attiny2313`| | `atmega164pa` | | | | `attiny2313a`| +| | | | | `attiny404` | ## 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/attiny404.yaml b/patch/attiny404.yaml new file mode 100644 index 0000000..5080ecd --- /dev/null +++ b/patch/attiny404.yaml @@ -0,0 +1,4 @@ +_svd: ../svd/attiny404.svd + +_include: + - common/attiny-0-series.yaml diff --git a/src/devices/mod.rs b/src/devices/mod.rs index 2f9c352..5d8cf18 100644 --- a/src/devices/mod.rs +++ b/src/devices/mod.rs @@ -421,6 +421,25 @@ impl attiny2313a::Peripherals { } } +/// [ATtiny404](https://www.microchip.com/en-us/product/ATTINY404) +#[cfg(feature = "attiny404")] +pub mod attiny404; + +#[cfg(feature = "attiny404")] +impl attiny404::Peripherals { + /// Returns all the peripherals *once* + #[inline] + pub fn take() -> Option { + crate::interrupt::free(|_| { + if unsafe { DEVICE_PERIPHERALS } { + None + } else { + Some(unsafe { attiny404::Peripherals::steal() }) + } + }) + } +} + /// [ATtiny816](https://www.microchip.com/wwwproducts/en/ATtiny816) #[cfg(feature = "attiny816")] pub mod attiny816; diff --git a/src/lib.rs b/src/lib.rs index 5c2511a..d3f5538 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -21,6 +21,7 @@ #![cfg_attr(feature = "attiny202", doc = "**attiny202**,")] #![cfg_attr(feature = "attiny2313", doc = "**attiny2313**,")] #![cfg_attr(feature = "attiny2313a", doc = "**attiny2313a**,")] +#![cfg_attr(feature = "attiny404", doc = "**attiny404**,")] #![cfg_attr(feature = "attiny816", doc = "**attiny816**,")] #![cfg_attr(feature = "attiny84", doc = "**attiny84**,")] #![cfg_attr(feature = "attiny841", doc = "**attiny841**,")] @@ -57,6 +58,7 @@ //! `attiny202`, //! `attiny2313`, //! `attiny2313a`, +//! `attiny404`, //! `attiny816`, //! `attiny84`, //! `attiny841`, @@ -262,6 +264,8 @@ pub use crate::devices::attiny202; pub use crate::devices::attiny2313; #[cfg(feature = "attiny2313a")] pub use crate::devices::attiny2313a; +#[cfg(feature = "attiny404")] +pub use crate::devices::attiny404; #[cfg(feature = "attiny816")] pub use crate::devices::attiny816; #[cfg(feature = "attiny84")] diff --git a/vendor/attiny404.atdf b/vendor/attiny404.atdf new file mode 100644 index 0000000..3526a85 --- /dev/null +++ b/vendor/attiny404.atdf @@ -0,0 +1,4775 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- 2.49.0