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 `&`.
* Improve comments
* Expose pins and all pins naming struct.
This allows users to set the interrupts on the button pins and to skip the PicoExplorer struct but still use proper naming
* Use correct interrupt names in timer::alarms macro in HAL
* Update BSP README's to use current version number
* Update ws2812-pio and i2c-pio to release 0.3.0
* Bump patch number for BSPs so we can push with correct docs
* Update changelog, readme and version number for HAL 0.5.0 release
* Bump HAL version in BSP deps
* Point ws2812-pio and i2c-pio-rs at hal_0.5.0 branches
* Update changelog with latest commits and release date
* Change pio::Tx::write to write u32 instead of <T>*
* Add replicated u8/u16 writes to pio::Tx::write
* Switching back to generic version of pio::fifo.write()
* Fix links to make cargo doc happy
Co-authored-by: Jan Niehusmann <jan@gondor.com>
Co-authored-by: Jan Niehusmann <jan@gondor.com>
* Modifies:
* Cargo toml to include arduino_nano_connect package
* README to update documentation to reflect a board being added
Adds:
* Basic support package for Arduino's RP2040 Nano Connect board
* blinky example
Co-authored-by: splicedbread <jacob.vanderkarr@oit.edu>
Co-authored-by: 9names <60134748+9names@users.noreply.github.com>
* Add micro servo with pwm working example
Signed-off-by: lucazulian <lucagiuggia@gmail.com>
* Add duty value suggestion
Signed-off-by: lucazulian <lucagiuggia@gmail.com>
* Fix code formatting
* Use CountDown instead of Delay
* Add the Pimoroni Plasma 2040 board
This PR adds the board support package and a simple example.
The example just blinks the on-board RGB LED.
An example should be added for using the board to control an LED strip.
This should probably use smart-leds with the associated PIO driver.
An example or functionality should be added for the current sensor.
* Rename LED data line from dat to data to match schematic
* Add an example for driving WS2812 LEDs
This is pretty much a copy-paste of the awesome pico_ws2812_led example.
* Remove reference in README to rp-pico
* Remove reference to pico board clock speed
I have removed this in the Plasma 2040 repository and where I copied it from, tiny2040_blinky.
* Remove redundant namespace
* Add self-reference in README to the current board's GitHub README
Fix the erroneous link in the pimoroni-tiny2040 README from which I copied.