The ep0-out buffer must not be marked as available unless required.
Otherwise, the controller will acknowledge the data-out packet but
won't reflect that in its status registers.
This patch forces the controller to nack the data-out phase until we have
processed the setup packet.
As per 4.1.2.5.1, the access to the DPSRAM should "be considered asynchronous
and not atomic".
It is recommended to write to buffer control register in two steps.
A first one to configure all bits but Available.
Wait clk_sys/clk_usb (typically 125MHz/48MHz).
Then set the available bit (if required).
The only thing accessed by those methods is `&mut self`, which is
guaranteed to be a unique reference. So an interrupt can not
interfere with the correctness of the operation.
Current version of probe-run is 0.3.3, which uses defmt 0.3.2.
With a firmware using defmt 0.2, this causes the following error
message:
```
Error: defmt wire format version mismatch: firmware is using 0.2, `probe-run` supports 3
suggestion: `cargo install` a different version of `probe-run` that supports defmt 0.2
```
Therefore, upgrade defmt dependency, and also fix the linker script
in .cargo/config.
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.