~ruther/avr-device

ref: 10b826e311f366ca58a6732912471bfd772514e7 avr-device/src d---------
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>
f77864dc — Rahix 5 years ago
hack: Make sure you cannot build for more than one chip

Signed-off-by: Rahix <rahix@rahix.de>
160cfaad — Rahix 5 years ago
atmega1280: Add missing Peripherals::take()

Signed-off-by: Rahix <rahix@rahix.de>
4f73fe2e — Gabriel Pickl 5 years ago
Added atmega1280.
Next
Do not follow this link