Commit graph

405 commits

Author SHA1 Message Date
Benno 6d917f498e
Change UART raw read return type and fix full read (#189)
* UART read_raw returns bytes read

This also fixed broken read_full_blocking code.

* chang documentation to reflect return value change
2021-11-01 10:24:24 +11:00
contradict fb69308058 Add methods to set and clear the PWM Interrupt force register. 2021-10-30 20:40:33 +11:00
Jan Niehusmann b1dc9aec8c Fix UART init code
Set uartlcr_h before enabling the UART.
Writing uartlcr_h while the UART is enabled is forbidden by the datasheet.

Details can be found here:
https://developer.arm.com/documentation/ddi0183/g/programmers-model/register-descriptions/line-control-register--uartlcr-h?lang=en
(As referenced from the Datasheet)
2021-10-30 10:19:13 +11:00
Jan Niehusmann 73431a847b
fix UART rx (#187) 2021-10-30 10:16:43 +11:00
contradict fe1e55b8c0
Mark PIO StateMachine, Rx and Tx as Send (#177)
* Mark PIO StateMachine, Rx and Tx as Send

* Improve comment grammar.

Co-authored-by: Wilfried Chauveau <wilfried.chauveau@ithinuel.me>
2021-10-27 21:34:08 +11:00
Wilfried Chauveau 73e2c6921f Make ReadableOutput public to match the visibility of other Type-level variant of PinMode. 2021-10-27 21:32:38 +11:00
Jonathan 'theJPster' Pallant 3b019fb91d
Merge pull request #182 from jannic/issue-181
Correct limit for PIOBuilder::out_pins count argument
2021-10-25 13:17:05 +01:00
Jan Niehusmann 9f55608f92 Correct limit for PIOBuilder::out_pins count argument
This value is written to the PINCTRL register field
OUT_COUNT, which accoding to the data sheet has a valid range
of 0-32.

Fixes #181
2021-10-23 13:34:05 +00:00
contradict 11aaf9be79
API to enable/disable interrupts for each PWM channel. (#175)
* API to enable/disable interrupts for each PWM channel.

* Better name for overflow check.
2021-10-23 22:47:08 +11:00
Wilfried Chauveau 46e580b852
Adds an example of using the PIO as I2C driver to control an LM75B temperature sensor (#180)
* Add pico_i2c_pio example

* Update pico_i2c_pio's main function documentation

* Update bootloader reference.

* Implement uart output for the pico_i2c_pio example.

* pin to a specific rev of i2c-pio

* Bump i2c-pio to get the fix for write_read
2021-10-23 22:45:13 +11:00
contradict 97079489ef Mark Timer as sync
Since all accesses are read-only there is no synchronizing to be done.
2021-10-23 00:03:30 +11:00
Jan Niehusmann 4c4d12e23c minor docs improvements in pio.rs 2021-10-22 23:52:14 +11:00
Jan Niehusmann bac6714f09
Use volatile register access for gpio interrupts (#170)
* Use volatile register access for gpio interrupts

* Provide functions for atomic register updates

* Use atomic register access functions in pio.rs

* Improve doc comments

* Limit visibility of atomic register access functions

Also remove write_xor for now, as it's not yet used anywhere
2021-10-22 23:30:30 +11:00
Wilfried Chauveau 0eb65ee99b
Add PIO features required for PIO as I2C support (#179)
* Implements methods to allow presetting the pin state & direction

Enabling those methods allows to save a few valuable instructions
in the PIO's memory.

* Use IntoIterator rather than Iterator.

* Use proper types instead of bool to be more idiomatic.

* Change set_pindirs_with_mask to a more idiomatic rust approach.

* Update pio_proc_blink with new set_pindirs_with_iter

* Force reset on startup to guaranty consistency with type-states.

* Expose more accessors to allow more advanced driver to be implemented.

* Add the ability to restart the state machine from its wrap point.

This method also clears the ISR/OSR to give the state machine a clean
restart.

* Add a comment about the impact of autopull on OUT & PULL instructions

* Fix broken internal doc reference & add an important note on Tx<SM>::has_stalled

* rename block methods to register_block.

This change is made to avoid confusion with "block" as a verb.
2021-10-22 22:09:10 +11:00
Wilfried Chauveau 2eb7923ebe
Implements methods to allow presetting the pin state & direction (#167)
* Implements methods to allow presetting the pin state & direction

Enabling those methods allows to save a few valuable instructions
in the PIO's memory.

* Update pio_proc_blink with new set_pindirs
2021-10-22 21:13:22 +11:00
Jan Niehusmann 233f7c9475 README: Add option --locked to cargo install elf2uf2-rs
Without the --locked option, cargo currently tries to compile it using
clap v3.0.0-beta.5, which fails:

```
[...]
   Compiling clap v3.0.0-beta.5
   Compiling elf2uf2-rs v1.3.5
error[E0432]: unresolved import `clap::Clap`
 -->
/home/jan/.cargo/registry/src/github.com-1ecc6299db9ec823/elf2uf2-rs-1.3.5/src/main.rs:3:5
  |
3 | use clap::Clap;
  |     ^^^^^^^^^^ no `Clap` in the root
[...]
```

With --locked, it uses clap v3.0.0-beta.4, which works.
2021-10-22 00:01:47 +11:00
Jonathan Pallant 6330dab44e
Merge pull request #171 from 42-technology-ltd/update_boot2
Switch to new rp2040-boot2 crate.
2021-10-18 11:45:32 +01:00
Jonathan Pallant (42 Technology) e48323c983 Ah, missed one after the rebase. 2021-10-18 10:58:38 +01:00
Jonathan Pallant (42 Technology) e3f9125a87 Can we build without GCC now? 2021-10-18 10:56:30 +01:00
Jonathan Pallant (42 Technology) 8e66ddcfb1 Switch to new rp2040-boot2 crate. 2021-10-18 10:53:17 +01:00
Rich Lane c8bb2e43c7 spi: support zero post-divide
This allows you to use a 62.5 MHz SPI baud rate assuming the default 125
MHz peripheral clock. It would previously crash due to a division by
zero.
2021-10-17 21:38:53 +11:00
Jonathan Pallant dd4a9a8f22
Merge pull request #165 from 42-technology-ltd/bootrom_functions_update
Bootrom functions update
2021-10-13 15:09:24 +01:00
Jonathan Pallant (42 Technology) 6a4a4fd247 Formatting. 2021-10-11 16:41:51 +01:00
Jonathan Pallant (42 Technology) 74ea262f65 Cleaning up the comment summaries. 2021-10-11 16:40:23 +01:00
Jonathan Pallant (42 Technology) 2423e42eb9 Clean up comments. 2021-10-11 16:39:12 +01:00
Jonathan Pallant (42 Technology) 5c55af76d2 Typo 2021-10-11 16:37:50 +01:00
Jonathan Pallant (42 Technology) e1afb70bd2 Moved float and double functions into modules.
Makes the docs cleaner.
2021-10-11 16:37:16 +01:00
Jonathan Pallant (42 Technology) ae66ac4cb6 Tweak doc comments. 2021-10-11 16:22:35 +01:00
Jonathan Pallant (42 Technology) 64207a62e5 Add comment to calc_delta function as it's non-obvious. 2021-10-11 16:22:11 +01:00
Jonathan Pallant (42 Technology) f56369e1c7 Add example which uses the ROM functions 2021-10-11 15:45:44 +01:00
Jonathan Pallant (42 Technology) 7a05b8f3a7 Fix the ROM function table code.
The floating point table lookup was incorrect.
2021-10-11 15:45:34 +01:00
9names 02cb4b8b06
Merge pull request #157 from 42-technology-ltd/add-cargo-config-helptext
Add some help text to cargo/config
2021-10-07 09:59:29 +11:00
9names a0740a5ac3
Merge pull request #147 from Lichtso/feature/gpio_interrupt
Add GPIO interrupt configuration functions
2021-10-07 09:52:21 +11:00
9names f92c9900cf
Merge pull request #152 from anall/feature/rom_data_unsafe_reapply
split rom_data into safe and unsafe functions (reapply due to inadvertent revert)
2021-10-07 09:40:57 +11:00
Jan Niehusmann e63f1f6dee Make pio-proc a dev-dependency
It's only used in an example, so it doesn't need to be a regular
dependency.
2021-10-07 09:39:08 +11:00
Jonathan Pallant (42 Technology) 3d8ccf55ab Add some help text. 2021-10-05 11:51:20 +01:00
Andrea Nall dab619d627 split rom_data into safe and unsafe functions
This was originally applied in 71a7057b76
and got inadvertently reverted as part of e3be4f8025
2021-10-02 11:22:32 -05:00
9names 8690d93a6a Use local rp2040-hal version when building in-crate 2021-10-02 20:05:22 +10:00
Wilfried Chauveau c8609e9ef1 Update WS2812 usage after PIO api's breaking change. 2021-10-02 20:05:22 +10:00
Jan Niehusmann ad68c9d696
Fix i2c write read (#146)
* i2c write_read: don't continue with read if write aborted

* i2c write_read: use correct length of read buffer
2021-10-02 17:43:05 +10:00
Stephen Onnen 800f71a1b8 Implement QT Py BSP with example 2021-10-02 17:42:03 +10:00
9names ede25a4f15
Merge pull request #143 from mgottschlag/pio-rework
Rework the PIO API
2021-10-02 16:41:38 +10:00
9names 666b22f56b
Update example feather_neopixel_rainbow.rs with new Timer syntax (#148) 2021-10-02 16:03:36 +10:00
Jordan Williams 82dfd8e2cc Add an example using the Feather RP2040's onboard NeoPixel
This uses PIO just like the Pro Micro does.
2021-10-02 15:46:09 +10:00
Alexander Meißner 90470b6ff3
Adds reset for timer, otherwise it would not run. (#136) 2021-10-02 15:41:04 +10:00
Jan Niehusmann 2b6de3a3c9
implement embedded-hal 1.0.0-alpha.5 (#131)
* implement embedded-hal 1.0.0-alpha.5

* Depend on specific alpha version of embedded-hal.

* enable feature eh1_0_alpha for CI check
2021-10-02 15:36:40 +10:00
Mathias Gottschlag 4db944ad4e pio: Fix clippy warnings and examples in doc comments. 2021-10-01 18:41:10 +02:00
Alexander Meißner dbd4c7dfea Implements interrupts for GPIO pins. 2021-10-01 14:32:24 +02:00
Mathias Gottschlag d1bbceaab4 Add changelog entry about PIO changes.. 2021-10-01 08:50:18 +02:00
Mathias Gottschlag 2fc42e07f2 pio: Rename read_rx/write_tx to read/write. 2021-10-01 08:47:16 +02:00