Commit Graph

393 Commits

Author SHA1 Message Date
Dario Nieuwenhuis
668364da9c nrf/saadc: nrf52805 only has 2 channels 2021-10-11 00:55:31 +02:00
Dario Nieuwenhuis
0b26ab7bbc nrf/saadc: nrf52820 doesn't have it. 2021-10-11 00:55:17 +02:00
huntc
8c9e50b378 Conflates the negative and positive types as they are the same, and renames pin to input as they can be more than pins 2021-10-11 09:38:35 +11:00
huntc
b043778f75 Removed the NotConnected as it isn't used. 2021-10-11 09:08:58 +11:00
huntc
25d6a2cd13 No use case understood for NotConnected, so hiding it for now 2021-10-11 08:56:53 +11:00
huntc
617a976e96 No need for unwrap 2021-10-11 08:54:24 +11:00
huntc
5f5470a320 Need to borrow the pins for the lifetime of the config, and subsequently the one shot. 2021-10-11 08:52:45 +11:00
huntc
cef6158c31 Extend SAADC one shot support
One-shot mode now permits the sampling of differential pins, and the sampling of multiple pins simultaneously.

A new ChannelConfig structure has been introduced so that multiple channels can be configured individually. Further, the `sample` method now accepts a buffer into which samples are written.

Along the way, I've reset some default configuration to align with Nordic's settings in their nrfx saadc driver. Specifically, the channel gain defaults to 6 (from 4) and the time defaults to 10us (from 20us).
2021-10-09 11:25:18 +11:00
Dario Nieuwenhuis
0e05ba688d nrf/saadc: remove Sample trait. 2021-10-07 02:10:22 +02:00
Ulf Lilleengen
99a94f1d50 Update version of critical-section 2021-09-13 17:05:17 +02:00
Ulf Lilleengen
e24528051b Add WASM support for executor
* Adds an executor for WASM runtimes based on wasm_bindgen.
* Add time driver based on JS time handling.
* Add example that can run in browser locally.
* Update to critical-section version that supports 'std' flag
2021-09-13 16:42:39 +02:00
Dario Nieuwenhuis
ead987245d embassy: Refactor module structure to remove kitchen-sink util. 2021-09-11 02:35:35 +02:00
Dario Nieuwenhuis
f2623e7e9b Update lots of deps 2021-09-11 01:35:23 +02:00
Dario Nieuwenhuis
de016e8456 Remove trait_alias, allow(incomplete_features).
trait_alias seems unused. no idea why it's there.
2021-09-03 17:00:58 +02:00
Dario Nieuwenhuis
d0c8749399
Merge pull request #382 from fnafnio/typestate_nrf_timer
Typestate nrf timer
2021-09-02 13:39:55 +02:00
f_punk
34c66fa78d removed type aliases
NotAwaitable as default generic param
added awaitable_timer example
2021-09-02 12:02:31 +02:00
Dario Nieuwenhuis
a81b963561 nrf/saadc: don't use wake_on_interrupt. 2021-09-01 23:54:26 +02:00
f_punk
1cef7134d4 moved CC::wait to awaitable typestate 2021-09-01 16:20:32 +02:00
f_punk
a0c40562ea added typestate to nrf-Timer
useful for hooking up the PPI to an Event without needing interrupt
tested with buffered_uart example on nRF52840-DK
2021-09-01 16:16:56 +02:00
Dario Nieuwenhuis
7c0990ad1e time: allow storing state inside the driver struct. 2021-08-25 21:06:27 +02:00
Richard Dodd
ed1ed5225f Expose EASY_DMA_SIZE. 2021-08-22 00:23:03 +01:00
Dario Nieuwenhuis
3457bb9f05 nrf: make gpiote and time-driver optional via cargo features. 2021-08-20 15:42:42 +02:00
Dario Nieuwenhuis
17659e2e44 nrf/wdt: add handle steal 2021-08-20 14:23:24 +02:00
Dario Nieuwenhuis
fe355af4f0 nrf: update to cortex-m-rt 0.7 2021-08-19 17:11:17 +02:00
Dario Nieuwenhuis
d3aeb45fb3 Update cortex-m-rt to v0.7 for stm32, rp. 2021-08-19 00:56:11 +02:00
Dario Nieuwenhuis
066abfe4c6 nrf/time: allow configuring the rtc irq prio 2021-08-18 22:13:02 +02:00
Dario Nieuwenhuis
2540a960e5 nrf: add WDT driver 2021-08-07 14:26:28 +02:00
Dario Nieuwenhuis
452f7e0c2c nrf: update PACs to 0.10 2021-08-07 12:41:12 +02:00
Dario Nieuwenhuis
05e50e1f4a time_driver: use regular fn ptr -> raw ptr casts 2021-08-05 19:19:47 +02:00
Dario Nieuwenhuis
0ea6a2d890 time: replace dyn clock/alarm with a global Driver trait 2021-08-05 19:14:09 +02:00
Dario Nieuwenhuis
07d4b196f7 Update nightly, remove removed features. 2021-08-04 19:48:14 +02:00
Dario Nieuwenhuis
3f28bb6c77 common: Initialize PeripheralMutex state with closure to ensure it's done in-place. 2021-08-02 20:13:41 +02:00
Dario Nieuwenhuis
af87031d62 hal-common: remove Pin in PeripheralMutex 2021-08-02 19:55:04 +02:00
Dario Nieuwenhuis
7bfb763e09 Rename embassy-extras to embassy-hal-common 2021-07-29 13:44:51 +02:00
Dario Nieuwenhuis
c8a48d726a
Merge pull request #277 from Liamolucko/fix-peripheral-ub
extras: Fix UB in `Peripheral`
2021-07-29 13:08:30 +02:00
Liam Murphy
d5ba35424d Replace PeripheralStateUnchecked with register_interrupt_unchecked 2021-07-29 15:11:26 +10:00
Liam Murphy
079526559f Remove critical sections from PeripheralMutex interrupt handler by checking the interrupt's priority on startup.
Since `PeripheralMutex` is the only way to safely maintain state across interrupts, and it no longer allows setting the interrupt's priority, the priority changing isn't a concern.

This also prevents other causes of UB due to the interrupt being exposed during `with`, and allowing enabling the interrupt and setting its context to a bogus pointer.
2021-07-27 17:28:52 +10:00
Liam Murphy
1b7ad7080e Add Send/Sync bounds to PeripheralState 2021-07-24 12:53:57 +10:00
Bob McWhirter
58edefff6e Formatting. 2021-07-23 13:22:39 -04:00
Bob McWhirter
d5ed5c3ef3 Split up the nRF impls for SPI traits. 2021-07-23 13:22:39 -04:00
Dario Nieuwenhuis
f916fe5476 all hals: reexport PAC if unstable-pac feature is set. 2021-07-14 22:19:04 +02:00
Dario Nieuwenhuis
35a76c364a embassy/time: make optional via Cargo feature 2021-07-12 03:45:48 +02:00
Liam Murphy
744e2cbb8a extras: Fix UB in Peripheral
`Peripheral` assumed that interrupts can't be preempted,
when they can be preempted by higher priority interrupts.
So I put the interrupt handler inside a critical section,
and also added checks for whether the state had been dropped
before the critical section was entered.

I also added a `'static` bound to `PeripheralState`,
since `Pin` only guarantees that the memory it directly references
will not be invalidated.
It doesn't guarantee that memory its pointee references also won't be invalidated.

There were already some implementations of `PeripheralState`
that weren't `'static`, though,
so I added an unsafe `PeripheralStateUnchecked` trait
and forwarded the `unsafe` to the constructors of the implementors.
2021-07-05 17:42:43 +10:00
Dario Nieuwenhuis
7ebd4e3aa9 nrf/gpio: fix unused warning on chips without ports 2021-07-05 02:44:16 +02:00
Dario Nieuwenhuis
e55c89f890
Merge pull request #262 from Liamolucko/nrf-rng
Add an nRF RNG driver
2021-07-01 01:55:55 +02:00
Liam Murphy
99339e940e fix: check if new_ptr == end, not the old pointer 2021-06-30 16:04:34 +10:00
Liam Murphy
53b95588df Use atomics to share state instead of a RefCell 2021-06-30 15:55:52 +10:00
Liam Murphy
89fdad3a6b Don't wake the future for every byte in fill_bytes 2021-06-30 12:34:57 +10:00
Liam Murphy
ae0219de6f Move initialisation inside of future 2021-06-30 09:45:49 +10:00
Liam Murphy
8a4ab29819 Add an nRF RNG driver
Resolves #187

Like the stm32 driver, this has both a non-blocking and blocking API, and implements `rand_core::RngCore` for the blocking API.
2021-06-29 17:26:16 +10:00
Liam Murphy
c0ef40d6e9 Correctly unset bits 2021-06-29 15:12:42 +10:00
Liam Murphy
e6d0dba5ca Write bits directly to intenset/clr + shorts 2021-06-29 14:37:37 +10:00
Liam Murphy
87ca902e44 Handle differences between PACs 2021-06-29 13:04:05 +10:00
Liam Murphy
0c0597f775 Don't include extended timer support on chips without it 2021-06-29 12:07:10 +10:00
Liam Murphy
94e13ef053 Fix Cc::event_compare 2021-06-29 11:39:50 +10:00
Liam Murphy
e5a5031f20 Get rid of the TODO about variant names, stop the timer before setting BITMODE and set a default frequency. 2021-06-29 11:29:32 +10:00
Liam Murphy
e7addf094b Fix Cc::wait never resolving and refactor some APIs
I think the interrupt was getting immediately re-triggered as soon as the handler exited, so I disabled the interrupt in the handler.
2021-06-29 10:33:41 +10:00
Liam Murphy
02781ed744 Add an nRF Timer driver
Resolves #189
2021-06-26 17:58:36 +10:00
Dario Nieuwenhuis
76ae9e0e7c nrf: use released nrf52805-pac, nrf52820-pac 2021-06-15 22:25:37 +02:00
Jacob Rosenthal
e9bd8428e3 embassy-nrf: twim derive defmt 2021-06-07 19:09:03 -07:00
Dario Nieuwenhuis
d1eeef5864 nrf/buffered_uarte: Fix crash when calling set_baudrate as the very first thing. 2021-06-08 00:32:14 +02:00
Dario Nieuwenhuis
3be49d3e79 fmt: Add dunmy use to avoid "unused variable" errors when no log is enabled. 2021-06-07 03:21:37 +02:00
Dario Nieuwenhuis
ef1ebefec0 fmt: use absolute paths 2021-06-07 03:15:05 +02:00
Dario Nieuwenhuis
e7dc5c0939 fmt: make all macros macro_rules so scoping is consistent. 2021-06-07 00:16:39 +02:00
Folkert
749633ddf2 fix errors 2021-06-05 12:02:17 +02:00
Folkert
0c0bf6e4db extract the polled-on function 2021-06-05 11:59:58 +02:00
Folkert
28c0023c9a add distinct read and write functions 2021-06-05 11:48:00 +02:00
Folkert
d0dd0f007a changes after review 2021-06-05 11:37:11 +02:00
Folkert
3f74c557ed skip 'in ram' check for mutable slice in fullduplex 2021-06-05 11:34:50 +02:00
Folkert
857ac3386b nrf async twim 2021-06-04 17:31:35 +02:00
Folkert
990d83d424 match on mode 2021-06-03 11:38:25 +02:00
Dario Nieuwenhuis
3bd36dce76 nrf/qspi: wait MORE for DPM enter. 2021-05-27 00:42:29 +02:00
Dario Nieuwenhuis
de703eb605 nrf/qspi: proper lowpower drop, supporting DPM. 2021-05-26 23:26:07 +02:00
Dario Nieuwenhuis
42abeca493 nrf/spim: disable and deconfigure pins on drop. 2021-05-26 20:11:23 +02:00
Dario Nieuwenhuis
39c420733f nrf/uarte: deconfigure pins on drop 2021-05-26 20:11:23 +02:00
Dario Nieuwenhuis
8dfb6dff86 nrf/twim: make pullup configurable, do not enable it by default. 2021-05-26 20:11:23 +02:00
Dario Nieuwenhuis
b449f6de9d nrf/twim: deconfigure pins on drop 2021-05-26 18:23:10 +02:00
Dario Nieuwenhuis
55c3ba2a5f nrf/saadc: do not use dyn 2021-05-22 15:42:14 +02:00
Ulf Lilleengen
13524080d3 Avoid using full GAT 2021-05-22 13:23:09 +02:00
Ulf Lilleengen
f6cac6944c Makes it possible to use the ADC with different analog pins 2021-05-21 13:12:27 +02:00
Dario Nieuwenhuis
105c8504b6 Mark Unborrow as unsafe to implement 2021-05-19 23:29:33 +02:00
Dario Nieuwenhuis
e3ab02c7e3 nrf/saadc: remove Pin 2021-05-19 20:22:15 +02:00
Dario Nieuwenhuis
58723a8e76
Merge pull request #185 from embassy-rs/nrf-improvement
nrf improvements
2021-05-17 22:48:36 +02:00
Dario Nieuwenhuis
32fc17f0fd nrf/gpiote: Allow choosing IRQ priority. 2021-05-17 21:27:27 +02:00
Rukai
3e83acc1cb Fix unused field warnings 2021-05-17 20:23:04 +10:00
Rukai
149ddf2f29 Fix warnings 2021-05-17 19:48:58 +10:00
Dario Nieuwenhuis
f7858631d8 stm32: fix build, add ci 2021-05-17 03:16:58 +02:00
Dario Nieuwenhuis
a5ad79927e nrf: add Unborrow<Target = Self> bound to all instance traits 2021-05-17 01:01:31 +02:00
Dario Nieuwenhuis
8394603ea6 nrf/pwm: add enable/disable 2021-05-17 00:57:37 +02:00
Dario Nieuwenhuis
88f664b434 nrf/pwm: set initial value to Low, according to the PS 2021-05-17 00:57:37 +02:00
Dario Nieuwenhuis
f9bcf6df6b nrf: add PWM 2021-05-17 00:57:37 +02:00
Dario Nieuwenhuis
0310e4d458 Add init fn. Initializes hw and returns Peripherals. 2021-05-17 00:57:37 +02:00
Dario Nieuwenhuis
97b01f1c47 nrf/gpiote: initialize automatically 2021-05-17 00:57:20 +02:00
Dario Nieuwenhuis
92be72e0e3 Add #[interrupt] macro to register static interrupts. 2021-05-17 00:57:20 +02:00
Dario Nieuwenhuis
eb4571dc4c nrf: add blocking TWIM 2021-05-17 00:57:20 +02:00
Dario Nieuwenhuis
bd9589d0ce nrf: add support for nrf52805, nrf52811, nrf52820 2021-05-17 00:57:20 +02:00
Ulf Lilleengen
3b86e85770 Bump version of critical-section to 0.2.1 2021-05-13 18:17:50 +02:00
Dario Nieuwenhuis
e0809ab0fb Switch to use PrioritX enums. 2021-05-11 01:34:24 +02:00
Dario Nieuwenhuis
7fa0e57172 Use critical_section crate 2021-05-11 01:15:30 +02:00
Ulf Lilleengen
0a3c236510 Improve comment 2021-05-10 23:06:25 +02:00
Ulf Lilleengen
e9eb3ce6c1 Disable PPI trigger during normal read 2021-05-10 23:06:25 +02:00
Ulf Lilleengen
687dda106f Read rx amount outside of poll_fn 2021-05-10 23:06:25 +02:00
Ulf Lilleengen
5afe01617a Use rxdrdy as trigger for timer 2021-05-10 23:06:25 +02:00
Ulf Lilleengen
dda338cedb Add implementation of ReadUntilIdle for nRF UART
Add type UarteWithIdle that implements Read, Write and ReadUntilIdle
traits. The type uses a timer + 2 PPI channels internally, triggered on
RTXSTARTED event.
2021-05-10 23:06:25 +02:00
Dario Nieuwenhuis
76f737bb0e
Merge pull request #158 from derekdreery/blocking_spim
Implement the blocking hal api for SPIM.
2021-05-05 22:52:36 +02:00
Richard Dodd
212e83aa22 Make changes to Write as well as Transfer 2021-05-05 19:18:57 +01:00
Richard Dodd
9d427a1ba4 Address issues in PR
Also add some documentation.
2021-05-05 18:33:45 +01:00
Richard Dodd
9de12a0a7a Address issues in PR. 2021-05-05 18:25:14 +01:00
Richard Dodd
1ad18aa09a Implement the blocking hal api for SPIM. 2021-05-05 14:50:28 +01:00
Richard Dodd
0b3ccca69b Add a pin variant that can change between disconnected/input/output.
I'm in no way attached to the name and encourage better suggestions.
2021-05-05 14:46:51 +01:00
Ulf Lilleengen
e2ad5e1395 Add detection of edge transitions for ports 2021-04-16 07:58:24 +02:00
Dario Nieuwenhuis
97ca54fa66 Rename PeripheralBorrow to Unborrow 2021-04-14 19:59:52 +02:00
Dario Nieuwenhuis
5ee87cf25d Remove Pin from Flash trait 2021-04-14 17:04:40 +02:00
Dario Nieuwenhuis
c15411d1bd Remove Pin from SPI 2021-04-14 17:04:40 +02:00
Dario Nieuwenhuis
8b1ffb2cb7 Remove Pin from GPIO traits 2021-04-14 17:04:40 +02:00
Dario Nieuwenhuis
59ccc45f28 Remove pin from Uart 2021-04-14 17:04:40 +02:00
Dario Nieuwenhuis
402f7f1886 nrf/gpio: remove DummyPin 2021-04-10 01:48:37 +02:00
Dario Nieuwenhuis
5b74e326e5 nrf/qpsi: make config non_exhaustive 2021-03-29 00:58:58 +02:00
Dario Nieuwenhuis
b9e709403d nrf: better macro naming. 2021-03-29 00:58:58 +02:00
Dario Nieuwenhuis
48cf1f6ebf nrf/system: add configure 2021-03-29 00:58:58 +02:00
Dario Nieuwenhuis
3a18373828 nrf/uarte: update BufferedUarte to new APi 2021-03-29 00:58:58 +02:00
Dario Nieuwenhuis
00e5f30352 nrf/ppi: add AnyConfigurableChannel 2021-03-29 00:58:58 +02:00
Dario Nieuwenhuis
31b817ed27 nrf/timer: add instance traits 2021-03-29 00:58:58 +02:00
Dario Nieuwenhuis
aa0341056e nrf/uarte: deal with hwfc correctly 2021-03-29 00:58:58 +02:00
Dario Nieuwenhuis
b6496a85d8 nrf/ppi: implement and add example 2021-03-29 00:58:58 +02:00
Dario Nieuwenhuis
26705ec328 nrf/ppi: add peris and traits 2021-03-29 00:58:58 +02:00
Dario Nieuwenhuis
646be40ac5 nrf/gpiote: make number() public, change to usize 2021-03-29 00:58:58 +02:00
Dario Nieuwenhuis
90f599bc2f nrf/gpiote: update output channel to new API 2021-03-29 00:58:58 +02:00
Dario Nieuwenhuis
2bd9323f28 nrf/gpiote: update input channel to new API 2021-03-29 00:58:58 +02:00
Dario Nieuwenhuis
a338841797 extras: add impl_unborrow macro 2021-03-29 00:58:58 +02:00
Richard Dodd
2c248dab56 nrf/spim: make mosi,miso optional 2021-03-29 00:58:58 +02:00
Dario Nieuwenhuis
5646926cca nrf/rtc: update to new api 2021-03-29 00:58:58 +02:00
Dario Nieuwenhuis
3eccddc44d nrf/uarte: use rxstarted/txstarted events to track whether a wait for stop is necessary on drop. 2021-03-29 00:58:58 +02:00
Dario Nieuwenhuis
1c9f98e1b6 nrf/gpiote: fix irq race condition
The interrupt could fire between checking if sense=disabled and registering the waker,
in which case the future would get stuck.
2021-03-29 00:58:58 +02:00
Dario Nieuwenhuis
7a41541ab2 nrf/uarte: use Peripheral, wait for stop on drop. 2021-03-29 00:58:58 +02:00
Dario Nieuwenhuis
0e8bb5dc0b util: Do not unregister waker on wake in AtomicWaker. 2021-03-29 00:58:58 +02:00
Richard Dodd
53645d9d38 nrf/saadc: initial implementation 2021-03-29 00:58:58 +02:00
Richard Dodd
a08d781442 nrf/gpio: allow borrowed pins. 2021-03-29 00:58:58 +02:00
Dario Nieuwenhuis
a0511e6caa nrf/uart: make rts/cts optional. 2021-03-29 00:58:58 +02:00
Dario Nieuwenhuis
e7e34cb8c2 nrf/gpio: add OptionalPin 2021-03-29 00:58:58 +02:00
Dario Nieuwenhuis
df42c38492 nrf/uarte: update to new api 2021-03-29 00:58:58 +02:00
Dario Nieuwenhuis
7b6086d19e nrf: add unborrow! macro 2021-03-29 00:58:58 +02:00
Dario Nieuwenhuis
a134fce122 nrf: nicer Peripherals api, add take() 2021-03-29 00:58:57 +02:00
Dario Nieuwenhuis
d5ff1a0ae3 nrf: rename inner peripheral to peri for consistence 2021-03-29 00:58:57 +02:00
Dario Nieuwenhuis
95218bf8d4 Rename GpioteInput -> PortInput 2021-03-29 00:58:57 +02:00
Dario Nieuwenhuis
c0876187dd extras: move peripherals from nrf to extras 2021-03-29 00:58:57 +02:00
Dario Nieuwenhuis
ec7309962a nrf/qspi: update to new api 2021-03-29 00:58:57 +02:00
Dario Nieuwenhuis
16bb6fd6ac nrf: Specify connected bit in psel_bits 2021-03-29 00:58:57 +02:00
Dario Nieuwenhuis
f36cbe5e0c nrf/spim: do not use PeripheralMutex 2021-03-29 00:58:57 +02:00
Dario Nieuwenhuis
15eb46ec71 wip gpiote changels 2021-03-29 00:58:57 +02:00
Dario Nieuwenhuis
ba7b3974bb nrf/gpiote: update to new gpio 2021-03-29 00:58:57 +02:00
Dario Nieuwenhuis
3d3e770b8d nrf/gpio: add output drive config. 2021-03-29 00:58:57 +02:00
Dario Nieuwenhuis
fcf6a63b5c nrf: add owned Peripherals struct, migrate gpio and spim 2021-03-29 00:58:57 +02:00
xoviat
6ee9e012fc add embassy::main and implement for stm32f4 2021-03-27 17:27:39 -05:00
Dario Nieuwenhuis
456e04c79f Simplify spim macros 2021-03-18 21:59:35 +01:00
Dario Nieuwenhuis
b57489eb5d peripheralmutex: separate interrupt registration to own method. 2021-03-18 18:49:10 +01:00
Dario Nieuwenhuis
0cd19a58c3 Remove free() from PeripheralMutex and all nrf drivers. 2021-03-18 18:49:10 +01:00
Dario Nieuwenhuis
f248bb17ad Allow unused stuff in fmt.rs 2021-03-18 01:42:28 +01:00
Dario Nieuwenhuis
3de2d5c5bd Implement FullDuplex for nrf spim 2021-03-18 01:27:30 +01:00
Dario Nieuwenhuis
a9076636ac Do not export fmt macros.
This was introduced by accident by me struggling with the weird intra-crate macro importing system...
2021-03-17 22:50:27 +01:00
Dario Nieuwenhuis
6ed1a87138 Update features for latest nightly. 2021-03-17 02:48:16 +01:00
Thales Fragoso
15c3e78408 Move nRF's util into a separate crate 2021-03-07 20:15:40 -03:00
Timo Kröger
28b2365ef3 Update nrf-hal to v0.12.1
Use the `psel_bits()` method to reduce #[cfg] clutter
2021-03-05 09:25:46 +01:00
Dario Nieuwenhuis
d4f2c6cf00 Remove cargo namespaced-features 2021-03-02 21:15:12 +01:00
xoviat
9626aee7db Move traits to separate crate. 2021-03-02 00:32:23 +01:00
Dario Nieuwenhuis
67a6c4f469
Merge pull request #59 from akiles/interrupt_ext
move most interrupt methods to InterruptExt extension trait. Fixes #35
2021-03-01 00:56:20 +01:00
Dario Nieuwenhuis
45355f184a move most interrupt methods to InterruptExt extension trait. Fixes #35 2021-03-01 00:44:38 +01:00
Dario Nieuwenhuis
a30c705fd7 nrf/spim: support all chips 2021-03-01 00:36:30 +01:00
Dario Nieuwenhuis
255bf1aa6a nrf: add SPIM 2021-03-01 00:24:06 +01:00
Dario Nieuwenhuis
8a641d1312 Fix warnings. 2021-03-01 00:23:54 +01:00
Dario Nieuwenhuis
7433dc1039 Port qspi to PeripheralMutex 2021-02-28 22:05:37 +01:00
Dario Nieuwenhuis
962fb95ff0 Optimize PeripheralMutex code size 2021-02-28 22:03:45 +01:00
Dario Nieuwenhuis
da91779117 interrupt: Split set_handler context.
Since introducing the ctx pointer, the handler is now two words, so setting it can
race with the interrupt firing. On race it's possible for the new handler to be
alled with the old ctx pointer or viceversa.

Rather than documenting this, it's better to split the function in two to make it
obvious to the user that it's not atomic. The user can use a critical section, or
disable/enable the interrupt to avoid races if this is a concern.
2021-02-26 02:04:48 +01:00
Dario Nieuwenhuis
11be9170ec Cleanup interrupt package naming. Fixes #40
The `interrupt` package previously tried to be drop-in compatible with the
`interrupt` package from PACs. THis meant that there was both a PAC-style enum
value `UARTE0` and an embassy-style owned `UARTE0Interrupt` type. This made
things VERY confusing.

This drops compatibility with the PAC, improving the names for embassy interrupts.
2021-02-26 01:55:27 +01:00
Dario Nieuwenhuis
90476ef900 Fix some warnings. 2021-02-26 01:06:58 +01:00
fnafnio
f779ec4928 update defmt and defmt-rtt to 0.2.0 2021-02-24 08:44:23 +01:00
Dario Nieuwenhuis
67c03e1a38
Merge pull request #47 from akiles/simpler-rtc
SImplify rtc overflow handling
2021-02-20 01:51:53 +01:00
Dario Nieuwenhuis
91aaea761e Use Relaxed atomics with fence instead of SeqCst 2021-02-20 01:43:10 +01:00
Dario Nieuwenhuis
03ddc949a0 PeripheralMutex should be Unpin 2021-02-20 00:27:24 +01:00
Dario Nieuwenhuis
406f3b7cbf rtc: use SeqCst for periods. 2021-02-15 01:23:15 +01:00
Dario Nieuwenhuis
9d5e2d3881 SImplify rtc overflow handling 2021-02-15 01:01:45 +01:00
Dario Nieuwenhuis
7321ddb0b3 Update to cortex-m 0.7 2021-02-14 23:26:50 +01:00
Thales Fragoso
b69f72e055 Get rid of some warnings 2021-02-13 21:41:36 -03:00
Dario Nieuwenhuis
a7797a918d nrf/gpiote: new api: switch to owned structs, implement WaitForHigh/WaitForLow. 2021-02-04 23:56:17 +01:00
Dario Nieuwenhuis
aeaa34d7a1 Executor API V2.
- It's no longer possible to call run() reentrantly from within a task (soundness issue)
- it's now possible to spawn Send tasks across threads (SendSpawner, #37)
2021-02-02 05:20:41 +01:00
Dario Nieuwenhuis
6963b314a2 nrf/rtc: fix race when setting alarms too close to now. 2021-01-13 03:17:58 +01:00
Dario Nieuwenhuis
5229a1991c nrf/rtc: use interrupt handler context for instance ptr 2021-01-13 03:17:42 +01:00
Dario Nieuwenhuis
7b94e06306 nrf/buffered_uarte: fix stop not actually waiting for stop 2021-01-11 11:24:34 +01:00
Dario Nieuwenhuis
41160c0d8d nrf/buffered_uarte: add set_baudrate 2021-01-11 10:40:37 +01:00
Dario Nieuwenhuis
2616467377 nrf/buffered_uarte: stop on drop, add free() 2021-01-11 10:39:59 +01:00
Dario Nieuwenhuis
e18d71dedc Fix build on nrf52832 2021-01-07 00:50:40 +01:00
Dario Nieuwenhuis
5b10ac9cac Add PPI+TIMER to buffered_uarte to prevent IRQ storm 2021-01-06 23:36:46 +01:00
Dario Nieuwenhuis
deb3c93892 Simpliify PeripheralMutex a bit. 2021-01-06 22:48:54 +01:00
Dario Nieuwenhuis
77bdb5428e buffered_uarte naming cleanup 2021-01-06 20:21:03 +01:00
Dario Nieuwenhuis
9bb4c97dc2
Merge pull request #14 from timokroeger/uarte-power-optimization
UARTE power optimization and improvements
2021-01-05 22:10:52 +01:00
Dario Nieuwenhuis
607e67f51a Cleanup BufferedUarte 2021-01-05 21:14:04 +01:00
Dario Nieuwenhuis
3a4dbfa52e Massicely simplify peripheral abstraction 2021-01-05 01:57:05 +01:00
Timo Kröger
0631623b51 uarte: Low power wait for RX drop 2021-01-04 22:55:40 +01:00
Timo Kröger
93780fa31d uarte: Wait for the peripheral to be disabled
Prevents a panic in the case of:
1. Abort a receive future
2. Free Uarte::free()
3. Uarte::new()
->  panicked at 'assertion failed: uarte.enable.read().enable().is_disabled()'
2021-01-04 22:55:40 +01:00
Timo Kröger
9b1f7b8a17 uarte: Enable peripheral with first poll
This fixes a lockup when a future is dropped before it was polled.
2021-01-04 22:55:40 +01:00