Cargo.toml: Update edition to 2021
We have recently (#104) dropped support for compilers that don't support
edition 2021. Make this explicit by enforcing edition 2021 in
Cargo.toml.
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
ci: Upgrade to a new compiler version
Add basic documentation for beginners
Adds patch for the timers on attiny167
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
Use the same timer patch for atmega1280 as for atmega2560