Update the bare-metal crate to 1.0.0
The new crate version generates much cleaner code due to #[inline] annotations.
This is an API break, because the CriticalSection + Mutex mechanism changes
from exterior reference lifetime to interior reference lifetime management.
irq: Optimize interrupt save/restore
Avoid unnecessary mask and branch instructions.
The basic reasoning behind this is that all other flags in the SREG can
be clobbered without ill effects. The restore() function is an
optimization fence and the compiler is not allowed to make assumptions
about memory or SREG state after execution.
This avoids an `and` and a `breq` instruction or similar in every
critical section.
While at it, also introduce a better API for manual IRQ-flag management.
Remove all llvm_asm macros
Add basic documentation for beginners
Only build docs for some MCUs on docs.rs
Sadly we are now starting to hit the limits of docs.rs with the amount
of supported MCUs. Only build documentation for a subset there and
mention that docs for the rest can be built locally.
Ref: #98
Add support for attiny13a
Add support for ATmega1284p
Add ATmega128RFA1 support
Adds basic ATmega128RFA1 support. Adjusts the common USART patches for
UCSZ? slightly to work with the ATmega128RFA1's ATDF.
Add support for ATtiny1614
Return the previous interrupt status upon disabling interrupts
This commit addresses #88 by returning a boolean which reflects the
previous state of the GIE flag upon disabling interrupts. This allows
`critical-section` to implement itself for AVR, while not breaking the
existing `avr-device` API.
Add support for ATtiny816
Add basic support for the ATtiny816 of the tinyAVR1-series.
Add support for ATtiny2313/A
Add ATtiny202 support
All of the svd patches are in patch/common/attiny-0-series.yaml which should
work for all of the 0-series (but may only work for ATtiny20* and ATtiny40*,
but not 80* or 160* given how the datasheet is split)
Add AT90USB1286 support
Ref: #80
Improve error message when no device is selected
Introduce a new `device-selected` feature to simpilify the logic for
showing an error when no device was selected.
Add attiny84 and atmega644 to `src/lib.rs`