Commit Graph

350 Commits

Author SHA1 Message Date
Jacob Rosenthal
f430c0e8c2 nrf-usbd 2021-12-12 19:20:02 -07:00
huntc
7256ff3e71 Provides AsyncWrite with flush
As per Tokio and others, this commit provides a `poll_flush` method on `AsyncWrite` so that a best-effort attempt at wakening once all bytes are flushed can be made.
2021-12-10 12:16:08 +11:00
huntc
090a7adf78 Keep Clippy happy 2021-12-08 12:13:49 +11:00
huntc
4e7fa52288 Applies the Uarte patch
Applies the Nordic workaround found in the `Uarte` for the nRF9160 and nRF5340 to the `BufferedUarte`.
2021-12-08 12:02:30 +11:00
Dario Nieuwenhuis
6dd55265cd nrf/gpiote: fix build for nrf9160 2021-12-02 04:01:03 +01:00
huntc
496ad4ed43 Rationale for uarte usage 2021-12-01 09:37:09 +11:00
huntc
469852c667 Removed unsafe from uarte
The constructors themselves are not strictly unsafe. Interactions with DMA can be generally unsafe if a future is dropped, but that's a separate issue. It is important that we use the `unsafe` keyword diligently as it can lead to confusion otherwise.
2021-12-01 09:14:24 +11:00
bors[bot]
c7d9729028
Merge #486
486: Pwm ppi events r=Dirbaio a=jacobrosenthal

More PWM yak shaving. I was going to do some safe pwm ppi events stuff but I just dont think it fits this api design.. ppi is just very low level, im not sure how safe it will be in general

* first we should probably have borrows of handlers for ppi with lifetime of the peripheral?  hal does eb4ba6ae42/nrf-hal-common/src/pwm.rs (L714-L716)
* in general having access to tasks can put the state in some configuration the api doesnt understand anymore. for `SequencePwm` ideally id hand you back either only seq_start0 or seq_start1 because youd only use one based on if your `Times` is even or odd.. but again we only know that with this api AFTER start has been called. I dont think were ready for typestates

SO I figured why not add the pwm ppi events but make them unsafe and commit this example since I started it.

Somewhat related drop IS removing the last duty cycle from the pin correctly, but stop DOES NOT..the only thing that sets the pin back is pin.conf() as far as I can tell, so I tried to document that better and got rid of stop for the `SimplePwm` again since that doesnt need it then. However its ackward we dont have a way to unset the pwm without setting a new sequence of 0s, or dropping the peripheral


Co-authored-by: Jacob Rosenthal <jacobrosenthal@gmail.com>
2021-11-26 23:08:24 +00:00
huntc
d4179ee2e4 Some documentation corrections and expansion 2021-11-22 12:26:11 +11:00
bors[bot]
d7bbaf1a4c
Merge #494
494: nrf: saadc do not reexport pac enums r=Dirbaio a=jacobrosenthal

Closes #415

Co-authored-by: Jacob Rosenthal <jacobrosenthal@gmail.com>
2021-11-21 19:47:31 +00:00
Wilfried Chauveau
d5a2462cba
Update embassy-nrf with lifetime bounds on gpio implementations. 2021-11-21 10:25:43 +00:00
Jacob Rosenthal
18d94a7d01 nrf: saadc do not reexport pac enums
Closes #415
2021-11-20 18:07:20 -07:00
Jacob Rosenthal
4010a829ae nrf: pwm clarify stop and disable pin state 2021-11-14 11:26:30 -07:00
Jacob Rosenthal
4d61f4aa0d nrf: sequencepwm dont wait for tasks_stop afterall 2021-11-13 17:31:09 -07:00
Jacob Rosenthal
3a166db280 nrf: pwm use register reset 2021-11-13 16:42:19 -07:00
Jacob Rosenthal
7dfc0acb2f nrf: pwm clarify stop and disable pin state 2021-11-13 16:42:17 -07:00
Jacob Rosenthal
2bcacd4f16 nrf: sequencepwm add events 2021-11-13 16:24:41 -07:00
Jacob Rosenthal
0f322c1d4e fix set_duty ptr write 2021-11-12 08:55:20 -07:00
Jacob Rosenthal
667a93b5c8 sequence pwm remove disable fn for clarity, and disable peripheral on stop 2021-11-11 23:46:27 -07:00
Jacob Rosenthal
7bee43df5a nrf: sequencepwm nitpicks for clarity 2021-11-11 22:50:07 -07:00
Jacob Rosenthal
937f49dead nrf: sequencepwm rename top to max_duty for consistancy 2021-11-11 22:47:57 -07:00
Jacob Rosenthal
f15c3a04d4 sequence must be live while DMA runs 2021-11-11 20:10:34 -07:00
Jacob Rosenthal
fe83daf45f remove const generic 2021-11-11 19:49:41 -07:00
Jacob Rosenthal
ec66fcd01a pwm_sequence consume buffer 2021-11-11 19:14:29 -07:00
bors[bot]
4112759a8f
Merge #455
455: simple_playback api from nrf sdk r=Dirbaio a=jacobrosenthal

Port of the nrf_drv_pwm_simple_playback call from the nordic sdk that allows you to set up a sequence to play across leds with no interaction necessary using the 'shorts' registers to trigger looping sequences



Co-authored-by: Jacob Rosenthal <jacobrosenthal@gmail.com>
2021-11-11 16:26:36 +00:00
Jacob Rosenthal
156caa9330 more comments 2021-11-10 19:56:36 -07:00
Jacob Rosenthal
66a43c2e58 more comments 2021-11-10 19:44:57 -07:00
Jacob Rosenthal
407e5d06e0 more comments 2021-11-10 19:43:47 -07:00
Jacob Rosenthal
613e88f1d2 fix bug with config.counter_mode 2021-11-10 18:53:21 -07:00
Jacob Rosenthal
4c2d0ac211 doccomments 2021-11-10 18:52:32 -07:00
Jacob Rosenthal
c6736abf5e dont wait seqend for sequencepwm 2021-11-10 18:52:03 -07:00
Jacob Rosenthal
c450f91bd9 doc comment cleanup 2021-11-10 17:30:59 -07:00
Jacob Rosenthal
6dcc731065 drop the debug 2021-11-10 17:25:38 -07:00
Jacob Rosenthal
5f28153b81 disconnect pwm pins on drop 2021-11-10 17:19:03 -07:00
Jacob Rosenthal
3b7af2f4ed fix wait seqend, pwm example is slow now... 2021-11-10 13:03:44 -07:00
Jacob Rosenthal
903b8f032f defensive dma 2021-11-10 12:34:41 -07:00
Jacob Rosenthal
4751dbddc6 move state into PwmSimple 2021-11-10 12:32:28 -07:00
Jacob Rosenthal
9548748c26 fix 2021-11-10 12:29:13 -07:00
Jacob Rosenthal
65843c033e pwm store and deconfigure pins 2021-11-10 11:02:43 -07:00
Jacob Rosenthal
03f2c593d6 fix slice_in_ram for arbitrary size types 2021-11-03 18:56:02 -07:00
Jacob Rosenthal
64e1426b54 clean up some todo comments around infinite play 2021-11-03 18:46:42 -07:00
Jacob Rosenthal
b726ef1886 make SequenceConfig struct is consistent with other Config structs, that are always non_exhaustive and have a Default 2021-11-03 18:37:54 -07:00
Jacob Rosenthal
d961fd1015 rename to SimplePwm and SequencePwm 2021-11-03 18:25:44 -07:00
Jacob Rosenthal
9a6c2de4ea fix safety comments 2021-11-03 18:19:43 -07:00
Jacob Rosenthal
511c5cb892 intenset in a noop 2021-11-03 18:16:00 -07:00
Jacob Rosenthal
82695c8f65 make both news configure registers in same order 2021-11-03 18:15:42 -07:00
Jacob Rosenthal
44375b427c restore example and add set_time_stretch api 2021-11-03 15:29:09 -07:00
Jacob Rosenthal
682274870f set_duty does indeed loop forever 2021-11-02 11:56:01 -07:00
Jacob Rosenthal
c939edb8d0 rename error enum again 2021-11-02 10:57:01 -07:00
Jacob Rosenthal
4647792ad6 seperate start from pwmseq::new 2021-11-01 20:50:18 -07:00