Commit Graph

1012 Commits

Author SHA1 Message Date
24d6b9ed6c Build stm32 and stm32-examples in test script.
Panic handler was missing, I had to add exaple_common.rs like in the nrf examples.
2021-01-14 00:53:05 +01:00
0204d4e812 Merge pull request #17 from xoviat/implement-uart
implement uart on serial interface
2021-01-14 00:42:09 +01:00
7adf99eff3 implement changes 2021-01-13 17:40:32 -06:00
6963b314a2 nrf/rtc: fix race when setting alarms too close to now. 2021-01-13 03:17:58 +01:00
5229a1991c nrf/rtc: use interrupt handler context for instance ptr 2021-01-13 03:17:42 +01:00
c07f7467a0 Merge branch 'implement-uart' of ssh://github.com/xoviat/embassy into implement-uart 2021-01-12 14:00:39 -06:00
914abdeb15 Merge branch 'master' of https://github.com/akiles/embassy into implement-uart 2021-01-12 14:00:12 -06:00
7b94e06306 nrf/buffered_uarte: fix stop not actually waiting for stop 2021-01-11 11:24:34 +01:00
41160c0d8d nrf/buffered_uarte: add set_baudrate 2021-01-11 10:40:37 +01:00
2616467377 nrf/buffered_uarte: stop on drop, add free() 2021-01-11 10:39:59 +01:00
c91882a72c Add CriticalSectionMutex, ThreadModeMutex. 2021-01-11 10:38:43 +01:00
877fc0321a WakerRegistration: Wake previous task if any 2021-01-11 10:38:25 +01:00
60df9e0d38 Add non_exhaustive attrs. 2021-01-09 00:51:07 +01:00
a168b9ef51 restrict unsafe block 2021-01-06 21:02:02 -06:00
e18d71dedc Fix build on nrf52832 2021-01-07 00:50:40 +01:00
5b10ac9cac Add PPI+TIMER to buffered_uarte to prevent IRQ storm 2021-01-06 23:36:46 +01:00
deb3c93892 Simpliify PeripheralMutex a bit. 2021-01-06 22:48:54 +01:00
31ba052f14 mark new unsafe 2021-01-06 14:31:43 -06:00
1c3b7541cb use transmute for now 2021-01-06 14:12:33 -06:00
77bdb5428e buffered_uarte naming cleanup 2021-01-06 20:21:03 +01:00
27cfcbacb8 try uart implementation 2021-01-06 12:12:29 -06:00
896eb0ed52 Merge pull request #16 from xoviat/fix-interrupts
fix set_handler context
2021-01-06 18:06:23 +01:00
66622de82a fix set_handler context 2021-01-06 10:49:08 -06:00
f6be0b8d12 Add gpio WaitForFoo traits 2021-01-06 01:10:48 +01:00
61a7cf5c3d Merge pull request #6 from xoviat/stm32f4
Add stm32f4xx series serial driver
2021-01-06 00:41:19 +01:00
938919367a add levels 2021-01-05 17:38:46 -06:00
a9d9f3bf80 fix problems 2021-01-05 17:24:27 -06:00
7bee584808 remove dead code in waker 2021-01-05 17:19:05 -06:00
f62eb66bf2 add new levels 2021-01-05 17:18:24 -06:00
9bb4c97dc2 Merge pull request #14 from timokroeger/uarte-power-optimization
UARTE power optimization and improvements
2021-01-05 22:10:52 +01:00
607e67f51a Cleanup BufferedUarte 2021-01-05 21:14:04 +01:00
3a4dbfa52e Massicely simplify peripheral abstraction 2021-01-05 01:57:05 +01:00
0631623b51 uarte: Low power wait for RX drop 2021-01-04 22:55:40 +01:00
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
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
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
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
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
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
9e88718fbd Add "context" pointer to owned interrupt handlers. 2021-01-04 22:25:39 +01:00
d89462fc16 remove macros 2021-01-04 12:53:27 -06:00
f3676e1eab rename examples 2021-01-04 12:52:00 -06:00
be541b94aa Merge branch 'master' into stm32f4 2021-01-04 12:50:22 -06:00
9bf09488f1 fix interrupts 2021-01-04 12:48:13 -06:00
39ca8b8ded Fix build on non-nrf52840 2021-01-03 22:30:47 +01:00
ace4f40f80 Introduce "peripheral" abstraction to share state between main and interrupt. 2021-01-03 01:40:40 +01:00
4ce51795f2 use hal::Pins for BufferedUarte 2021-01-02 20:31:50 +01:00
8fa3294f35 Update readme 2021-01-02 20:13:35 +01:00
0ab88ea279 Add Uart trait, implement it for nrf. 2021-01-02 19:59:37 +01:00
1d53985abe Remove now-stable slice_fill feature 2021-01-02 19:56:05 +01:00