Commit Graph

84 Commits

Author SHA1 Message Date
Andy Piper c4cfc5dbe4 AP_IOMCU: fix eventing mask and some minor cleanups 2023-08-15 06:53:48 +10:00
Andy Piper d9f42236ad AP_IOMCU: support dshot600 on f103 2023-08-15 06:53:48 +10:00
Andy Piper af256f4b1b AP_IOMCU: output mcuid on f103 if able to 2023-08-15 06:53:48 +10:00
Andy Piper 9db5d0bf9b AP_IOMCU: reduce latency for oneshot
correctly update outmode modes when requested
get ARM CPUID and display in startup banner
ensure correct rc input timing on 1Khz iofirmware
2023-08-15 06:53:48 +10:00
Andy Piper 7b96f66413 AP_IOMCU: add support for getting output mode and mcuid
give an appropriate MCUID on F103
2023-08-15 06:53:48 +10:00
Andy Piper bb730e8e24 AP_IOMCU: inverted locking model 2 2023-08-15 06:53:48 +10:00
Andy Piper ec1edea1da AP_IOMCU: add support for shared DMA to iomcu-dshot
new event-based update() loop for iomcu to allow for DMA channel sharing
spin event loop at 2Khz to give dshot thread ample access to DMA channels
correct transmission complete callbacks
ensure peripheral is re-enabled on DMA resumption
ensure DMA transactions do not get clobbered by locking
restructure callbacks for shared and non-shared DMA cases
ensure RC updates happen at 1Khz
increase expected delay at startup
2023-08-15 06:53:48 +10:00
Andy Piper e6e0543b8a AP_IOMCU: propagate dshot rates through to IOMCU
implement dshot ESC telemetry
add support for channel enablement/disablement
add stack checks and reporting for MSP stack
wait correct timeout in tickless mode
ensure that dshot sees all pwm updates as the occur in order to maintain periodicity
ensure dshot options are propagated on reset
implement dshot commands
ensure oneshot/125 and mode are setup correctly
add instrumentation for process stack
prevent illegal recursive locks
ignore requests for dshot 600
add support for soft reboot of iomcu
2023-08-15 06:53:48 +10:00
bugobliterator ad428ac060 AP_IOMCU: add support for sending DShot function command
add support for dshot on iomcu
add support for updating to dshot iofirmware
2023-08-15 06:53:48 +10:00
Andrew Tridgell a25ffa266f AP_IOMCU: fixed issue with not regaining RC input
this fixes an issue where when you lose R/C input on IOMCU that you
may not regain it when R/C comes back.

The issue stems from us still processing the DSM uart when we are
using the SD3 "SBUS" uart for RC input, and still doing the switch of
the SD3 config every 2 seconds.

When we are not searching for a new protocol we should not be changing
UART config
2023-05-23 12:11:04 +10:00
Peter Barker f1be6df93e AP_IOMCU: honour AP_RCPROTOCOL_X_ENABLED 2023-05-02 10:19:50 +10:00
Andrew Tridgell 2f1c38e13a AP_IOMCU: support forcing heater to enabled with a feature bit 2023-03-07 10:33:24 +11:00
Andrew Tridgell d921c427b1 AP_IOCMU: improved the safety button reset test code
this allows testing of either watchdog or hard-fault reset
2023-02-14 09:12:34 +11:00
Andrew Tridgell ce0b7a8957 AP_IOMCU: fixed handling of RC_OPTIONS bit to ignore RC failsafe bit
this worked on FMU but not on IOMCU
2022-03-22 10:30:35 +11:00
TunaLobster db6383eee7 AP_IOMCU: fix ADC scaling on IOMCU 2021-11-16 14:12:43 +11:00
bugobliterator 1a6179148b AP_IOMCU: ensure page_GPIO is aligned to 16bit 2021-09-29 19:08:10 +10:00
Iampete1 12d5fbbc86 AP_IOMCU: iofirmware: support digital write 2021-09-28 09:40:25 +10:00
Iampete1 cc03b2975c AP_IOMCU: iofirmware: remove saftey PWM 2021-09-14 09:23:02 +10:00
Andy Piper c26f49fb0a AP_IOMCU: ChibiOS 20.3.x build fix 2021-03-23 12:01:20 +11:00
Andrew Tridgell 1b5551206a AP_IOMCU: fixed bug in SBUS output when scanning for FPort input
when we are looking for FPort input, we normally switch UART3 on the
IOMCU to 115200 to look for inverted inputs at 115200 baudrate. We
need to disable this switching when we have SBUS output enabled to
prevent a change in the SBUS output baudrate

Many thanks to afishman for finding this bug

Fixes #15522
2020-10-07 16:44:13 +11:00
Andrew Tridgell 017f005737 AP_IOMCU: pass supported RC protocols to IOMCU 2020-08-24 16:32:35 +10:00
Andrew Tridgell 258b8b71ea AP_IOMCU: use more efficient read API for rcin 2020-01-31 11:09:07 +11:00
Andrew Tridgell 63c199a600 AP_IOMCU: support RSSI from receiver 2020-01-02 09:52:57 +11:00
Andrew Tridgell 6599fd49a2 AP_IOMCU: don't use pulse input for FPORT 2020-01-02 09:52:57 +11:00
Andrew Tridgell 34f5b40919 AP_IOMCU: use crc32_small() in AP_IOMCU
the slower speed is not noticible and this saves 1k ram
2019-10-28 15:53:16 +11:00
Mirko Denecke 12c9e50aef AP_IOMCU: remove unnecessary tabs and whitespaces 2019-10-21 07:57:44 +11:00
Andrew Tridgell 7c3df18ea3 AP_IOMCU: change optimisation from -O3 to -O2 2019-09-28 08:57:26 +10:00
Andrew Tridgell 672d09c965 AP_IOMCU: use AP::RC() for AP_RCProtocol 2019-09-06 08:51:45 +10:00
Andrew Tridgell 454717cf6f AP_IOMCU: cleanup IO protocol and add logging
this cleans up the IOMCU protocol structures now we don't need to be
compatible with the old nuttx based protocol and adds logging of IOMCU
errors
2019-08-17 17:36:41 +10:00
bugobliterator c07fe55b87 AP_IOMCU: remove autodetection of heater pin polarity, instead hardcode it 2019-07-25 17:05:41 +10:00
Andrew Tridgell 76a8d494c3 AP_IOMCU: dither heater pin to prevent 1Hz impact on mags
with the simpler duty cycle code we see a 1Hz 25 mGauss cycle in the
internal mags
2019-07-12 12:46:27 +10:00
Siddharth Purohit f23746053d AP_IOMCU_FW: autodetect active high/low on heater control pin 2019-06-08 14:31:01 +10:00
Andrew Tridgell d4c68da76e AP_IOMCU: added IOMCU time since boot to protocol
and optional watchdog testing using safety switch
(compile time option)
2019-04-28 07:45:33 +10:00
Andrew Tridgell 6181c66e5c AP_IOMCU: handle watchdog reset in IO firmware 2019-04-22 16:53:35 +10:00
Andrew Tridgell 480d33706c AP_IOMCU: fixed safety state on reboot
fixes issue #11031
2019-04-20 14:48:59 +10:00
Pierre Kancir eab7d08021 AP_IOMCU: fix includes 2019-03-26 10:27:54 +11:00
Tom Pittenger 28323147ab AP_IOMCU: unify singleton naming to _singleton and get_singleton() 2019-02-10 19:09:58 -07:00
Michael du Breuil 85f3280705 AP_IOMCU: Remove unneeded AP_Buffer include 2018-12-31 11:41:43 +09:00
Andrew Tridgell 69c4fb671e AP_IOMCU: optimisations to reduce ISR latency
this speeds up the DMA ISR handlers to reduce the change of losing a
byte on RC input due to loss of an interrupt
2018-11-27 09:38:18 +11:00
Andrew Tridgell 8e7695e5f0 AP_IOMCU: respond to override change more quickly 2018-11-07 07:35:45 +11:00
Andrew Tridgell 5771e0a90e AP_IOMCU: added access to RC protocol name 2018-11-07 07:35:45 +11:00
Andrew Tridgell 3d90ddc453 AP_IOMCU: fixed stop bits in sbus output 2018-11-07 07:35:45 +11:00
Andrew Tridgell a7c5ac8902 AP_IOMCU: run main loop at max rate
removed delay in main loop to reduce latency of RC input. This works
as we only have one thread
2018-11-07 07:35:45 +11:00
Andrew Tridgell 2159198c3e AP_IOMCU: allow DSM input as pulses in iomcu
useful for receivers where DSM uses a normal servo plug
2018-11-07 07:35:45 +11:00
Andrew Tridgell e6cadfa2d9 AP_IOMCU: disable DSM and SBUS for pulse input 2018-11-07 07:35:45 +11:00
Andrew Tridgell 49d07ed234 AP_IOMCU: catch parity errors on SBUS input 2018-11-07 07:35:45 +11:00
Andrew Tridgell c148813c17 AP_IOMCU: enable uart for SBUS input 2018-11-07 07:35:45 +11:00
Andrew Tridgell fab181345c AP_IOMCU: fixed override on RC loss
use mid-stick positions
2018-11-07 07:35:45 +11:00
Andrew Tridgell 29fb674f3f AP_IOMCU: use macros for LED outputs in iofirmware 2018-11-07 07:35:45 +11:00
Andrew Tridgell a8d91a24b6 AP_IOMCU: fixed compat with nuttx firmwares
this allows older firmwares to change the IO firmware back to a nuttx
based firmware
2018-11-07 07:35:45 +11:00