~ruther/avr-device

ref: 06ef5e65c7234543f08be66f1a10c284e2cdd68f avr-device/macros/src d---------
9aef8977 — tones111 3 years ago
rt: Implement cortex-m-rt-macros static mut conversion

Inside the entrypoint and interrupt handlers, perform a conversion which
turns `static mut`s into &mut references to the static.  This is safe
because exception handlers and the entrypoint are guaranteed to not be
reentrant.

This is the same behavior as `cortex-m-rt` where it is documented in the
Rust Embedded Book [1].

[1]: https://docs.rust-embedded.org/book/start/exceptions.html
91f3ea8a — lights0123 4 years ago
Cause an error in the #[entry] macro instead of avr-device
27392685 — Rahix 4 years ago
macros: Add a #[entry] macro

Add a #[entry] macro for declaring the entry-point of the program,
similar to what cortex-m-rt is doing.

Signed-off-by: Rahix <rahix@rahix.de>
ba0df30a — Rahix 4 years ago
Update proc-macro dependencies

Update to syn 1.0 and fix the interrupt macro to work well with the new
version.

Signed-off-by: Rahix <rahix@rahix.de>
88fcf0c8 — Rahix 5 years ago
Implement interrupts

This commit adds a new feature-flag `rt` which, when enabled, adds the
`#[interrupt]` procedural macro to define an interrupt handler.  Unlike
the implementation in cortex-m, this version needs an attribute which is
the name of the chip the interrupt is for.  In code, an interrupt
handler might look like this:

    #![feature(abi_avr_interrupt)]

    #[avr_device::interrupt(atmega32u4)]
    fn INT6() {
        // Do Something
    }

Closes #1.

Signed-off-by: Rahix <rahix@rahix.de>
Do not follow this link