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
Timo Kröger
85ec9dd16f
uarte: Be on safe side with potentially racy code
...
The PS does not specify how many cycles it takes for a STARTXX task to
generate a XXSTARTED event. I think it is instantaneous but let’s be on
the safe side for the following sequence:
1. poll() starttx
2. drop() txstarted not yet set, but future gets dropped
3. txstarted set by hardware, peripheral enabled after it was dropped
2021-01-04 22:55:40 +01:00
Timo Kröger
a3b3305b8e
uarte: Only stop TX forcefully when a transmissions is running
...
This comes with insignificant power consumption improvements but makes
the code of the RX and TX case symmetric.
2021-01-04 22:55:40 +01:00
Timo Kröger
a7c03e4cb6
uarte: Only stop RX forcefully when a reception is running
...
The STOPRX task always triggers a timeout of ~55bit times until the
RXTO event is generated. Before we disabled the receiver only after
the timeout.
With this change the receiver is stopped right after reception has ended
because the DMA buffer is full.
For forced RX aborts like `stop()` or on drop still need to wait for the
RXTO event before disabling the receiver.
2021-01-04 22:55:40 +01:00
Timo Kröger
9f28c7ab8d
uarte: Do not spin when stopping a receive future
...
Spinning on drop() is still required when the future has not been
stopped so that DMA finishes before the buffer is released.
2021-01-04 22:55:40 +01:00
Dario Nieuwenhuis
9e88718fbd
Add "context" pointer to owned interrupt handlers.
2021-01-04 22:25:39 +01:00
Dario Nieuwenhuis
39ca8b8ded
Fix build on non-nrf52840
2021-01-03 22:30:47 +01:00
Dario Nieuwenhuis
ace4f40f80
Introduce "peripheral" abstraction to share state between main and interrupt.
2021-01-03 01:40:40 +01:00
Dario Nieuwenhuis
4ce51795f2
use hal::Pins for BufferedUarte
2021-01-02 20:31:50 +01:00
Dario Nieuwenhuis
0ab88ea279
Add Uart trait, implement it for nrf.
2021-01-02 19:59:37 +01:00
Dario Nieuwenhuis
3c7e7220b3
Don't use embedded_dma in nrf uarte.
2021-01-02 19:14:54 +01:00
Dario Nieuwenhuis
4783222f67
Rename WakerStore -> WakerRegistration.
2021-01-01 22:30:11 +01:00
Timo Kröger
6695bf0f21
Low power UART driver
2020-12-30 19:24:12 +01:00
Dario Nieuwenhuis
7dc81faa4e
Declare irqs for each nrf chip
2020-12-29 15:20:42 +01:00
Dario Nieuwenhuis
af5454fbfe
Update drivers to owned irqs.
2020-12-29 01:53:17 +01:00
Dario Nieuwenhuis
4b8d8ba87e
Update RTC for owned irqs
2020-12-29 01:05:28 +01:00
Dario Nieuwenhuis
0750234fbe
WIP owned irqs
2020-12-29 00:05:52 +01:00
Dario Nieuwenhuis
267ec334ac
Rename Uarte -> BufferedUarte
2020-12-28 23:57:50 +01:00
Dario Nieuwenhuis
1aae27270e
Better fmt macros.
2020-12-13 21:17:58 +01:00
Dario Nieuwenhuis
ca2ff632ba
Fix possibly ambiguous macro
2020-12-01 20:00:55 +01:00
Dario Nieuwenhuis
6f76c0ebcc
Add support for log+defmt again, but better.
2020-12-01 17:46:56 +01:00
Dario Nieuwenhuis
78135a81d9
Remove anyfmt
2020-11-27 18:42:59 +01:00
Dario Nieuwenhuis
2e062f5627
gpiote: change port api to directly return futures.
2020-11-09 01:04:34 +01:00
Dario Nieuwenhuis
61b1d4e188
Fix build for nrfs with 32 gpios
2020-11-08 19:05:34 +01:00
Dario Nieuwenhuis
e539cd32ca
Fix logging with anyfmt/log
2020-11-08 19:00:23 +01:00
Dario Nieuwenhuis
fc0fe842ee
Add support for GPIOTE Port event.
2020-11-08 18:59:31 +01:00
Dario Nieuwenhuis
def225b982
gpiote: better naming
2020-11-08 17:38:45 +01:00
Dario Nieuwenhuis
0a3590566d
Fix ambiguous assert
2020-11-01 17:56:29 +01:00
Dario Nieuwenhuis
5e8608c7a5
Make defmt optional with new anyfmt
crate
2020-11-01 17:17:24 +01:00
Dario Nieuwenhuis
0643095695
Fix build with all nrf chip models
2020-10-31 23:03:09 +01:00