From da8931721917811565de96751d28483faea001a6 Mon Sep 17 00:00:00 2001 From: Jonathan Pallant Date: Mon, 20 Sep 2021 14:38:48 +0100 Subject: [PATCH 1/3] WIP README for Pico --- boards/pico/README.md | 95 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 94 insertions(+), 1 deletion(-) diff --git a/boards/pico/README.md b/boards/pico/README.md index 7b90706..561c828 100644 --- a/boards/pico/README.md +++ b/boards/pico/README.md @@ -1 +1,94 @@ -Raspberry Pi Pico Board Support Crate \ No newline at end of file +# [pico] - Board Support for the [Raspberry Pi Pico] + +You should include this crate if you are writing code that you want to run on +a [Raspberry Pi Pico] - the original launch PCB for the RP2040 chip. + +This crate includes the [rp2040-hal], but also configures each pin of the +RP2040 chip according to how it is connected up on the Pro Micro RP2040. + +[Raspberry Pi Pico]: https://www.raspberrypi.org/products/raspberry-pi-pico/ +[pico]: https://github.com/rp-rs/rp-hal/tree/main/boards/pico +[rp2040-hal]: https://github.com/rp-rs/rp-hal/tree/main/rp2040-hal +[Raspberry Pi Silicon RP2040]: https://www.raspberrypi.org/products/rp2040/ + +## Using + +To use this crate, your `Cargo.toml` file should contain: + +```toml +pico = { git = "https://github.com/rp-rs/rp-hal.git" } +``` + +In your program, you will need to call `pico::Pins::new` to create +a new `Pins` structure. This will set up all the GPIOs for any on-board +devices. See the [examples](./examples) folder for more details. + +## Examples + +### General Instructions + +To compile an example, clone the _rp-hal_ repository and run: + +```console +rp-hal/boards/pico $ cargo build --release --example +``` + +You will get an ELF file called +`./target/thumbv6m-none-eabi/release/examples/`, where the `target` +folder is located at the top of the _rp-hal_ repository checkout. Normally +you would also need to specify `--target=thumbv6m-none-eabi` but when +building examples from this git repository, that is set as the default. + +If you want to convert the ELF file to a UF2 and automatically copy it to the +USB drive exported by the RP2040 bootloader, simply boot your board into +bootloader mode and run: + +```console +rp-hal/boards/pico $ cargo run --release --example +``` + +If you get an error about not being able to find `elf2uf2-rs`, try: + +```console +$ cargo install elf2uf2-rs, then repeating the `cargo run` command above. +``` + +### [rainbow](./examples/rainbow.rs) + +This example will display a colour-wheel rainbow effect on the on-board LED. + +## Contributing + +Contributions are what make the open source community such an amazing place to +be learn, inspire, and create. Any contributions you make are **greatly +appreciated**. + +The steps are: + +1. Fork the Project by clicking the 'Fork' button at the top of the page. +2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`) +3. Make some changes to the code or documentation. +4. Commit your Changes (`git commit -m 'Add some AmazingFeature'`) +5. Push to the Feature Branch (`git push origin feature/AmazingFeature`) +6. Create a [New Pull Request](https://github.com/rp-rs/rp-hal/pulls) +7. An admin will review the Pull Request and discuss any changes that may be required. +8. Once everyone is happy, the Pull Request can be merged by an admin, and your work is part of our project! + +## Code of Conduct + +Contribution to this crate is organized under the terms of the [Rust Code of +Conduct][CoC], and the maintainer of this crate, the [rp-rs team], promises +to intervene to uphold that code of conduct. + +[CoC]: CODE_OF_CONDUCT.md +[rp-rs team]: https://github.com/orgs/rp-rs/teams/rp-rs + +## License + +The contents of this repository are dual-licensed under the _MIT OR Apache +2.0_ License. That means you can chose either the MIT licence or the +Apache-2.0 when you re-use this code. See `MIT` or `APACHE2.0` for more +information on each specific licence. + +Any submissions to this project (e.g. as Pull Requests) must be made available +under these terms. From 410d95142991c6e0d8af0eeb2adc7a5bd2241ebd Mon Sep 17 00:00:00 2001 From: Jonathan Pallant Date: Mon, 20 Sep 2021 14:50:02 +0100 Subject: [PATCH 2/3] Add more example details. --- boards/pico/README.md | 40 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/boards/pico/README.md b/boards/pico/README.md index 561c828..da9619d 100644 --- a/boards/pico/README.md +++ b/boards/pico/README.md @@ -53,9 +53,45 @@ If you get an error about not being able to find `elf2uf2-rs`, try: $ cargo install elf2uf2-rs, then repeating the `cargo run` command above. ``` -### [rainbow](./examples/rainbow.rs) +### [pico_blinky](./examples/pico_blinky.rs) -This example will display a colour-wheel rainbow effect on the on-board LED. +Flashes the Pico's on-board LED on and off. + +### [pico_gpio_in_out](./examples/pico_gpio_in_out.rs) + +Reads the 'Boot Select' pin and drives the on-board LED to match it (i.e. on when pressed, off when not pressed). + +### [pico_rtic](./examples/pico_rtic.rs) + +Demonstrates the use of the [Real-Time Interrupt-driven Concurrency Framework] on the Raspberry Pi Pico. + +[Real-Time Interrupt-driven Concurrency Framework]: https://rtic.rs + +### [pico_countdown_blinky](./examples/pico_countdown_blinky.rs) + +Another LED blinking example, but using a Timer in count-down mode. + +### [pico_pwm_blink](./examples/pico_pwm_blink.rs) + +Puts out an analog 'triangle wave' on GPIO 25, using the PWM hardware. + +### [pico_usb_serial](./examples/pico_usb_serial.rs) + +Creates a USB Serial device on a Pico board. + +The USB Serial device will print `HelloWorld` on start-up, and then echo any +incoming characters - except that any lower-case ASCII characters are +converted to the upper-case equivalent. + +### [pico_usb_serial_interrupt](./examples/pico_usb_serial_interrupt.rs) + +Creates a USB Serial device on a Pico board, but demonstrating handling +interrupts when USB data arrives. + +### [pico_usb_twitchy_mouse](./examples/pico_usb_twitchy_mouse.rs) + +Demonstrates emulating a USB Human Input Device (HID) Mouse. The mouse +cursor will jiggle left and right. ## Contributing From 8d4407d846987b913a92dc555bb1876a168c81be Mon Sep 17 00:00:00 2001 From: "Jonathan Pallant (42 Technology)" Date: Tue, 21 Sep 2021 09:23:58 +0100 Subject: [PATCH 3/3] Mouse twitches the other way. You'd think I'd know the difference between the X-axis and the Y-axis by now. --- boards/pico/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boards/pico/README.md b/boards/pico/README.md index da9619d..21df1ec 100644 --- a/boards/pico/README.md +++ b/boards/pico/README.md @@ -91,7 +91,7 @@ interrupts when USB data arrives. ### [pico_usb_twitchy_mouse](./examples/pico_usb_twitchy_mouse.rs) Demonstrates emulating a USB Human Input Device (HID) Mouse. The mouse -cursor will jiggle left and right. +cursor will jiggle up and down. ## Contributing