* Prep for HAL 0.6.0 release
* Update changelog, readme and version number for HAL 0.5.0 release
* Bump HAL version in BSP deps
* Add the missing boards to the main README.md
* Implementation of the interpolator.
* corrected formatting
* fixed documentation code
* add clamp flag to LaneCtrl
* addition of an example for the interpolator
* put documentation behind ///
* rewording comment for clarity
* using more idiomatic fn new
* Use rp2040-hal in all example (possibly through their bsp)
Some of the examples were using the cortex_m_rt::entry method which
misses the device specific spinlock re-initialisation.
This commits makes the usage more consistent by using rp2040_hal exported
macro as the only `entry` method used across examples.
This is a little bit hacky, as it relies on rp2040-hal actually
using (and therefore linking) some defmt code when the defmt feature is
enabled.
However this solution has the advantage that it only affects
dev-dependencies and therefore has no impact on the board crates
themselves.
Closes#420
* Implement rp2040-E5 workaround for usb enumeration.
* Expand documentation and add to pico_usb_serial & pico_usb_twitchy_mouse
* Fix errata-5 documentation around the bus-keep state.
* Update CHANGELOG.md
The workflow only shows "Runs action-rs/cargo@v1" which does not tell us
much about what's actually being done.
The list and clean up done after each build varies by only the debug/release
part of the path that is repeated several times (2).
This commit gives each step a more meaningful name and simplify the list &
cleanup step with a generic one liner that can be copy/pasted without
modification.
Without this change, building the vector_table example fails when
building from the rp2040-hal directory:
```
rp2040-hal$ cargo build --release --example vector_table
Compiling rp2040-hal v0.5.0 (rp2040-hal)
error[E0432]: unresolved import `pac::interrupt`
--> rp2040-hal/examples/vector_table.rs:30:5
|
30 | use pac::interrupt;
| ^^^^^---------
| | |
| | help: a similar name exists in the module (notice the capitalization): `Interrupt`
| no `interrupt` in the root
error: cannot determine resolution for the attribute macro `interrupt`
--> rp2040-hal/examples/vector_table.rs:148:3
|
148 | #[interrupt]
| ^^^^^^^^^
|
= note: import resolution is stuck, try simplifying macro imports
```
* Add struct VectorTable to represent an interrupt vector table
* Add member function to VectorTable to initialise based on the current Interrupt Vector Table from VTOR
* Add member function to VectorTable to register an extern "C" function to call on interrupt
* Add example using VectorTable to demonstrate initialisation and interrupt function registration
usb_device ignores PollResult::Suspend when already suspended,
and PollResult::Resume when not suspended.
This may lead to repeatedly triggered interrupts if for some reason
the Suspend flag gets set while the device is already suspended.
I observed such a situation when a reset was triggered while the device
was suspended.
To make sure that this can't cause interrupt storms, clear the flags
before returning from poll()