~ruther/avr-device

ref: 5162a8a230eee0714ddc1b4a981491235e2a89d0 avr-device/src d---------
397170ad — jaxter184 4 years ago
Add attiny841 and attiny861
d1eed41c — Jan Paw 4 years ago
Add basic support for ATmega4809

ce031034 — Johan Kristell 4 years ago
Add support for atmega328pb
10b826e3 — Boris Vinogradov 4 years ago
Add basic support for ATmega644
f48ac82c — Andrew Dona-Couch 4 years ago
Add support for the ATtiny84
6cd5000d — Boris Vinogradov 4 years ago
Add atmega48p device support
12879fde — Rahix 4 years ago
Only emit inline-assembly when building for AVR

Make sure that we'll never emit AVR assembly on non-AVR targets.
Instead of failing the build, fail at runtime, to allow a potential
application testsuite to run even if those functions somehow get linked
in.

Signed-off-by: Rahix <rahix@rahix.de>
90075ce5 — Karl ThorĂ©n 4 years ago
Add basic support for ATmega168

706a5c26 — Rahix 4 years ago
interrupt: Fix interrupt::free() reading wrong address

The SREG is at IO address 0x3F, not 0x35.  Fix interrupt::free() to read
the correct register to make it work as advertised.

Signed-off-by: Rahix <rahix@rahix.de>
c0edb56c — Rahix 4 years ago
interrupt: Make interrupt::enable() unsafe

To bring this crate more in line with cortex-m, mark interrupt::enable()
as unsafe.  This also fixes a soundness issue: When the function is
safe, one could call it inside a critical section in entirely safe rust.
This is problematic because lot's of code in critical sections relies on
the fact that interrupts are disabled and it thus can safely perform
non-atomic operations without anything interrupting it.

Signed-off-by: Rahix <rahix@rahix.de>
0e433616 — Rahix 4 years ago
Add asm module for assembly instructions

Add a new module containing wrapper functions for various assembly
instructions.  These functions are marked inline(always) to ensure they
will always just generate the single instruction as expected.

Signed-off-by: Rahix <rahix@rahix.de>
b0abe893 — Andrew Dona-Couch 4 years ago
Add support for ATtiny88
1e0eb40c — Andrew Dona-Couch 4 years ago
Add support for ATmega2560
cb089e6c — Rahix 4 years ago
Document #[interrupt] and #[entry]

Signed-off-by: Rahix <rahix@rahix.de>
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>
c3144637 — Liam Perlaki 4 years ago
Use llvm_asm!() instead of asm!()

The asm!() feature was changed to a new syntax which this project did not yet
adopt.  The old asm!() is now available as llvm_asm!().  Switch to that to
support nightly build.

See PR #27 for details.
29061345 — Rahix 4 years ago
Add basic support for ATmega64

Pull in the ATDF file from Microchip and add all the necessary plumbing
around the code-base to make it compile.  Not tested against real
hardware and no device-specific patches are included yet.

Signed-off-by: Rahix <rahix@rahix.de>
dbbbc6ef — Rahix 5 years ago
Fix compatibility with svd2rust 1.16.1

svd2rust now generates a module containing generic descriptions which
the individual register definitions are based on.  Fix the code
generation to deal with this module.

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>
dc45b3cc — Rahix 5 years ago
Switch to a new design as outlined in #17

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