Commit Graph

726 Commits

Author SHA1 Message Date
Dario Nieuwenhuis
9240a1f437 stm32: add stm32f411 interrupts 2021-01-21 18:59:56 +01:00
Dario Nieuwenhuis
dd47bfbc2e stm32f4: Remove stm32f405 being default feature 2021-01-21 18:59:11 +01:00
Dario Nieuwenhuis
a44ab63341
Merge pull request #13 from xoviat/stm32-interrupt
Add EXTI interrupt handler for GPIO pins
2021-01-21 18:17:28 +01:00
xoviat
27cd3a03dc exti: add new ExtiPin driver 2021-01-21 11:08:38 -06:00
Dario Nieuwenhuis
57eabb372e
Merge pull request #31 from xoviat/interrupt-signal
add InterruptSignal
2021-01-21 18:04:13 +01:00
xoviat
e0183f4495 optimize interruptfuture
remove critical secitons, impl. Unpin
2021-01-21 10:59:14 -06:00
xoviat
6503f9dbf5 implement interruptfuture
converts an interrupt to a future
2021-01-21 10:22:30 -06:00
Dario Nieuwenhuis
27831124a7 Remove unused rtic dep 2021-01-21 01:07:04 +01:00
Dario Nieuwenhuis
5b897b6605 executor: Add 'raw' api to wake tasks through raw pointers. 2021-01-21 01:00:12 +01:00
Dario Nieuwenhuis
28b5d8e9f4
Merge pull request #26 from timokroeger/fix-irq-nr
Fix IRQ numbers
2021-01-17 18:52:43 +01:00
Timo Kröger
9f9d808948 Fix IRQ numbers
The raw enum values are not always equal to the interrupt number
fixes #23
2021-01-17 17:28:46 +01:00
Dario Nieuwenhuis
4e789c663c
Merge pull request #15 from akiles/gpio-wait
RFC: GPIO WaitForFoo traits
2021-01-15 23:06:07 +01:00
Dario Nieuwenhuis
28fe29fff3
Merge pull request #22 from xoviat/cleanup
minor cleanup to interface
2021-01-14 19:02:00 +01:00
xoviat
2b15a2674f minor cleanup to interface 2021-01-14 11:42:23 -06:00
Dario Nieuwenhuis
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
Dario Nieuwenhuis
0204d4e812
Merge pull request #17 from xoviat/implement-uart
implement uart on serial interface
2021-01-14 00:42:09 +01:00
xoviat
7adf99eff3 implement changes 2021-01-13 17:40:32 -06: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
xoviat
c07f7467a0 Merge branch 'implement-uart' of ssh://github.com/xoviat/embassy into implement-uart 2021-01-12 14:00:39 -06:00
xoviat
914abdeb15 Merge branch 'master' of https://github.com/akiles/embassy into implement-uart 2021-01-12 14:00:12 -06: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
c91882a72c Add CriticalSectionMutex, ThreadModeMutex. 2021-01-11 10:38:43 +01:00
Dario Nieuwenhuis
877fc0321a WakerRegistration: Wake previous task if any 2021-01-11 10:38:25 +01:00
Dario Nieuwenhuis
60df9e0d38 Add non_exhaustive attrs. 2021-01-09 00:51:07 +01:00
xoviat
a168b9ef51 restrict unsafe block 2021-01-06 21:02:02 -06: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
xoviat
31ba052f14 mark new unsafe 2021-01-06 14:31:43 -06:00
xoviat
1c3b7541cb use transmute for now 2021-01-06 14:12:33 -06:00
Dario Nieuwenhuis
77bdb5428e buffered_uarte naming cleanup 2021-01-06 20:21:03 +01:00
xoviat
27cfcbacb8 try uart implementation 2021-01-06 12:12:29 -06:00
Dario Nieuwenhuis
896eb0ed52
Merge pull request #16 from xoviat/fix-interrupts
fix set_handler context
2021-01-06 18:06:23 +01:00
xoviat
66622de82a fix set_handler context 2021-01-06 10:49:08 -06:00
Dario Nieuwenhuis
f6be0b8d12 Add gpio WaitForFoo traits 2021-01-06 01:10:48 +01:00
Dario Nieuwenhuis
61a7cf5c3d
Merge pull request #6 from xoviat/stm32f4
Add stm32f4xx series serial driver
2021-01-06 00:41:19 +01:00
xoviat
938919367a
add levels 2021-01-05 17:38:46 -06:00
xoviat
a9d9f3bf80 fix problems 2021-01-05 17:24:27 -06:00
xoviat
7bee584808
remove dead code in waker 2021-01-05 17:19:05 -06:00
xoviat
f62eb66bf2
add new levels 2021-01-05 17:18:24 -06: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