2021-08-14 17:40:26 +10:00
|
|
|
# Changelog
|
|
|
|
|
|
|
|
All notable changes to this project will be documented in this file.
|
|
|
|
|
|
|
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
|
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
|
|
|
|
|
## [Unreleased]
|
|
|
|
|
2022-08-18 07:22:36 +10:00
|
|
|
### Added
|
|
|
|
|
|
|
|
- `rp2040-e5` feature enabling the workaround for errata 5 on the USB device peripheral.
|
2022-07-28 23:10:08 +10:00
|
|
|
- Support for critical-section 1.0.0.
|
|
|
|
Critical-section 0.2 is still supported (ie. a custom-impl is provided, compatible
|
|
|
|
with the 1.0.0 implementation), to avoid a breaking change. It will be removed
|
|
|
|
later.
|
2022-08-18 07:22:36 +10:00
|
|
|
|
2022-06-24 08:19:41 +10:00
|
|
|
### Changed
|
|
|
|
|
|
|
|
- Update embedded-hal alpha support to version 1.0.0-alpha.8
|
Implement conversion from Clock to Hertz using reference
Implementing `impl From<SystemClock> for Hertz` is a footgun, as
SystemClock is not Copy, so the automatic conversion consumes the
owned clock.
This is visible in the example i2c.rs:
```
let mut i2c = hal::I2C::i2c1(
pac.I2C1,
sda_pin,
scl_pin, // Try `not_an_scl_pin` here
400.kHz(),
&mut pac.RESETS,
clocks.peripheral_clock,
);
```
If the user wants to use both `i2c0` and `i2c1` at the same time,
copying from this example won't work:
```
error[E0382]: use of moved value: `clocks.peripheral_clock`
--> rp2040-hal/examples/i2c.rs:106:9
|
97 | clocks.peripheral_clock,
| ----------------------- value moved here
...
106 | clocks.peripheral_clock,
| ^^^^^^^^^^^^^^^^^^^^^^^ value used here after move
|
= note: move occurs because `clocks.peripheral_clock` has type
`PeripheralClock`, which does not implement the `Copy` trait
```
As getting the frequency from a clock doesn't really need ownership,
changing it to `impl From<&SystemClock> for Hertz` is both more
logical and provides better usability.
This is, however, a breaking change: Code relying on this trait
implementation needs to be changed by adding a `&`.
2022-07-23 05:31:10 +10:00
|
|
|
- Implement `From<&SomeClock> for Hertz` instead of `From<SomeClock> for Hertz`
|
|
|
|
for the clocks in `rp2040_hal::clocks`.
|
2022-08-22 04:01:45 +10:00
|
|
|
- Use `rp2040-hal`'s entry function.
|
2022-08-19 05:14:51 +10:00
|
|
|
- Migrate from `embedded-time` to `fugit`
|
2022-06-24 08:19:41 +10:00
|
|
|
|
2022-06-14 18:04:00 +10:00
|
|
|
## [0.5.0] - 2022-06-13
|
|
|
|
|
|
|
|
### MSRV
|
|
|
|
|
|
|
|
The Minimum-Supported Rust Version (MSRV) for this release is 1.61
|
|
|
|
|
|
|
|
### Added
|
|
|
|
|
|
|
|
- RP2040 specific #[entry] macro that releases spinlocks - @jannic
|
|
|
|
- Start multiple state machines in sync with each other - @astraw
|
|
|
|
- Unsafe fn for freeing all spinlocks when you can't use the RP2040 entry macro (eg RTIC) - @9names
|
|
|
|
- Optional feature for enabling defmt formatting for i2c errors - @ithinuel
|
|
|
|
- Accessor for getting the offset of an installed PIO program - @fenax
|
|
|
|
|
|
|
|
### Changed
|
|
|
|
|
|
|
|
- Use thread send safe UART* marker when splitting, improves UART ergonmics - @marius-meissner
|
|
|
|
- Improve performance for hardware division instrinsics. Internal intrinsics cleanup - @Sizurka
|
|
|
|
- Provide a better alarm abstraction - @ithinuel
|
|
|
|
- Update Multicore::spawn to be able to take a closure without requiring alloc.
|
|
|
|
Improve Multicore ergonomics and add example for how to use new API - @Liamolucko
|
|
|
|
- Allow PIO program to be 32 instructions long, was previously limited to 31 - @jannic
|
|
|
|
- Fix Typos - @mqy, @danbev
|
|
|
|
- Replace generic pio::Tx::write<T> with write_u8_replicated, write_u16_replicated, and update
|
|
|
|
write to take a u32. The generic version was too easy to misuse. - @9names
|
|
|
|
|
2022-04-18 07:39:31 +10:00
|
|
|
### Removed
|
|
|
|
|
2022-06-14 18:04:00 +10:00
|
|
|
- I2c async driver. Use new one at https://github.com/ithinuel/rp2040-async-i2c/ - @ithinuel
|
|
|
|
- Unused fields from UartPeripheral and Reader - @jannic
|
2022-04-18 07:39:31 +10:00
|
|
|
|
2022-03-11 22:37:34 +11:00
|
|
|
## [0.4.0] - 2022-03-09
|
|
|
|
|
2021-09-26 20:51:01 +10:00
|
|
|
### Added
|
2021-12-20 06:22:15 +11:00
|
|
|
|
2022-03-03 14:34:51 +11:00
|
|
|
- ROM function caching
|
|
|
|
- ROM version lookup function
|
|
|
|
- Compiler intrinsics for ROM functions
|
|
|
|
- Compiler intrinsics for hardware divider
|
|
|
|
- Document bsp_pins! macro
|
|
|
|
- UART IRQ examples
|
|
|
|
- PIO side-set example
|
2022-02-26 20:30:28 +11:00
|
|
|
- Stopped PIO state machines can change their clock divider
|
2022-03-11 22:37:34 +11:00
|
|
|
- Added HAL IRQ example
|
2021-09-26 20:51:01 +10:00
|
|
|
|
2021-10-01 16:50:18 +10:00
|
|
|
### Changed
|
|
|
|
|
2022-03-03 14:34:51 +11:00
|
|
|
- Rewrite UART driver to own its pins
|
|
|
|
- Improve UART defaults
|
|
|
|
- Fix repeated-read in i2c embassy driver
|
|
|
|
- Fix bug in i2c peripheral state machine
|
|
|
|
- Fix race condition in alarm
|
|
|
|
- Fix safety bugs in hardware divider
|
|
|
|
- Enable watchdog reset trigger bits when watchdog enabled
|
|
|
|
- Update spinlocks to use new PAC API
|
|
|
|
- Use generics to improve spinlock implementation
|
|
|
|
- Update critical_section to use new spinlock implementation
|
2022-02-11 00:39:36 +11:00
|
|
|
- Update embedded-hal alpha support to version 1.0.0-alpha.7
|
|
|
|
- Avoid 64-bit division in clock calculations
|
2022-03-11 22:37:34 +11:00
|
|
|
- Update pio and pio-proc to 0.2.0
|
2021-12-20 06:22:15 +11:00
|
|
|
|
|
|
|
## [0.3.0] - 2021-12-19
|
2021-08-15 14:38:54 +10:00
|
|
|
|
2021-12-21 07:05:40 +11:00
|
|
|
### MSRV
|
|
|
|
|
|
|
|
The Minimum-Supported Rust Version (MSRV) for this release is 1.54.
|
|
|
|
|
2021-09-22 20:43:30 +10:00
|
|
|
### Added
|
2021-12-21 06:52:31 +11:00
|
|
|
|
2021-12-20 06:22:15 +11:00
|
|
|
- A README!
|
|
|
|
- Implementation of the `critical-section` API
|
2021-12-21 06:52:31 +11:00
|
|
|
- Embedded HAL 1.0-alpha6 support
|
2021-12-20 06:22:15 +11:00
|
|
|
- I²C Controller and Peripheral support
|
2021-12-21 06:52:31 +11:00
|
|
|
- Multi-core support, including spin-locks and SIO FIFO
|
|
|
|
- RTC support
|
|
|
|
- USB Device support
|
|
|
|
- Timer support
|
2021-12-20 06:22:15 +11:00
|
|
|
- PIO support
|
|
|
|
- Implementation of `rng_core::RngCore` for `RingOscillator`
|
|
|
|
- ADC example
|
|
|
|
- GPIO Interrupt support
|
|
|
|
- Multi-core FIFO example
|
|
|
|
- PIO LED Blinky example
|
|
|
|
- ROM Functions example
|
|
|
|
- SPI example
|
|
|
|
- Watchdog example
|
|
|
|
- ADC documentation
|
2021-12-21 06:53:15 +11:00
|
|
|
- Lots of bug fixes :)
|
2021-09-22 20:43:30 +10:00
|
|
|
|
|
|
|
### Changed
|
2021-12-21 06:52:31 +11:00
|
|
|
|
2021-12-20 06:22:15 +11:00
|
|
|
- Modified PIO API for better ergonomics
|
|
|
|
- Updated PAC to 0.2.0
|
|
|
|
- Exported common driver structs from top-level (e.g. it's now `Sio`, not `sio::Sio`)
|
2021-09-22 20:43:30 +10:00
|
|
|
|
|
|
|
## [0.2.0] - 2021-08-14
|
2021-08-14 17:40:26 +10:00
|
|
|
|
|
|
|
### Added
|
|
|
|
|
2021-12-21 06:52:31 +11:00
|
|
|
- Updated version with support for:
|
|
|
|
- Ring Oscillator
|
|
|
|
- Crystal Oscillator
|
|
|
|
- Plls
|
|
|
|
- Watchdog
|
|
|
|
- Clocks
|
|
|
|
- GPIO
|
|
|
|
- PWM
|
|
|
|
- ADC
|
|
|
|
- SPI
|
|
|
|
- I²C
|
|
|
|
- Resets
|
|
|
|
- UART
|
|
|
|
- Hardware divide/modulo
|
|
|
|
|
|
|
|
## [0.1.0] - 2021-01-21
|
2021-08-14 17:40:26 +10:00
|
|
|
|
|
|
|
- Initial release
|
|
|
|
|
2022-06-14 18:04:00 +10:00
|
|
|
[Unreleased]: https://github.com/rp-rs/rp-hal/compare/v0.5.0...HEAD
|
|
|
|
[0.5.0]: https://github.com/rp-rs/rp-hal/compare/v0.4.0...v0.5.0
|
2022-03-11 22:37:34 +11:00
|
|
|
[0.4.0]: https://github.com/rp-rs/rp-hal/compare/v0.3.0...v0.4.0
|
2021-09-22 20:43:30 +10:00
|
|
|
[0.3.0]: https://github.com/rp-rs/rp-hal/compare/v0.2.0...v0.3.0
|
2021-08-14 17:40:26 +10:00
|
|
|
[0.2.0]: https://github.com/rp-rs/rp-hal/compare/v0.1.0...v0.2.0
|
|
|
|
[0.1.0]: https://github.com/rp-rs/rp-hal/releases/tag/v0.1.0
|