Commit Graph

164 Commits

Author SHA1 Message Date
Andy Piper 75c1ad6efa AP_HAL_ChibiOS: explicitly set dshot rate when using iomcu 2023-08-15 06:53:48 +10:00
Andy Piper c057cc5485 AP_HAL_ChibiOS: add get_output_mode() and use it to print correct banner for iomcu
add support for undef of STM32 lines and DMA_NOMAP
add support for F103 running at 24Mhz
add f103 variants of iofirmware
reduce memory usage in iomcu for new model
correct pwm output reporting
split iofirmware into config + mcu to allow f103 definition
don't enable non-existant timers on F103
2023-08-15 06:53:48 +10:00
Andy Piper 10a612566a AP_HAL_ChibiOS: ensure shared DMA works in IOMCU
enable TIM4 in shared mode on IOMCU for dshot
stop the PWM peripheral in rcout DMA swapping on IOMCU to prevent UART corruption
provide debugging options on iomcu dshot
support unshared DMA with iomcu dshot
optimize rcout on iomcu
tune iomcu stack for 8 channels
2023-08-15 06:53:48 +10:00
bugobliterator 9a21297cd1 AP_HAL_ChibiOS: add support for DShot on IOMCU
set timer counter size to be a byte wide
use HAL_DSHOT_ENABLED instead of DISABLE_DSHOT
build iomcu-dshot from existing iomcu
correct defines for DMAR size on iomcu
allow iomcu dshot rate to be configured from FMU
correct DMA allocation for dshot on iomcu
allow debug builds on iofirmware
ensure dshot is enabled on iomcu dshot
support proper iomcu dshot output thread triggered by FMU
allow selective disablement of serial LEDs and passthrough
disable serial LEDs and passthrough on iomcu-dshot
propagate ESC telemetry to iomcu
dshot_send_groups() for iomcu
remove use of ICU on iomcu for dshot. only allocate possible DMA channels
rename serial passthrough and dshot defines
update dshot docs
resize dshot iomcu main stack to minimum
correct dshot prescaler usage and bit_width_mul calculation
use ChibiOS in tickless mode on iomcu-dshot so that virtual timers can be used
propagate dshot commands to iomcu
passthrough oneshot125 to iomcu
2023-08-15 06:53:48 +10:00
Andy Piper 76b7566cd1 AP_HAL_ChibiOS: implement extended dshot telemetry (EDT) 2023-06-27 09:28:33 +10:00
Andy Piper d7bcfd757b AP_HAL_ChibiOS: correct locking on LED thread 2023-05-18 07:53:33 +10:00
Andy Piper cf20a70c58 AP_HAL_ChibiOS: move LED processing to a separate thread
LED processing on a separate thread allows much longer LED lengths to be handled without
compromising dshot timing or timeouts. The thread is also run at a lower priority to
reflect its lack of flight criticality
2023-04-19 16:45:21 +01:00
Andrew Tridgell 86b6f3a2c6 AP_HAL_ChibiOS: change to 16 bit timeout in event interface
prevent issues on 16 bit timers where we can end up with TIME_INFINITE
2023-04-19 17:26:57 +10:00
Andy Piper 667b386356 AP_HAL_ChibiOS: port to ChibiOS 21.11.x
convert RCOutput to new virtual timer interface
cope with SDC vs SDMMC
use new SPIv3 driver. Correct clocks for SDMMCv2.
add STM32L431 support
port ChibiOS config to version 8
support SPIv3 driver model v2 on H7
use currcore in debug options
use new mmc API
disable speed optimizations in the bootloader to save a little flash
upgrade to halconf v8.4
relax constraints on QSP/flash clock.
add support for disabling QSPI reset in main firmware
2023-03-29 20:49:40 +11:00
Andy Piper 5ecf7ff1fe AP_HAL_ChibiOS: ensure that DMA source is correct on DMA send for rcout 2023-03-26 09:59:59 +11:00
Andy Piper d8042a1325 AP_HAL_ChibiOS: ensure the rcout TIM_UP DMA request source is re-instated after cancellation
This fixes a bug in bdshot whereby dma cancellation could result in the wrong DMA channel
being used for dshot output and hence motors stopping
2023-03-26 09:59:59 +11:00
Andrew Tridgell 726b3bca9d HAL_ChibiOS: switched to 64 bit maths for DShot timings
this fixes a timer wrap bug at 71 minutes after boot that impacts
bdshot
2023-03-24 08:31:25 +11:00
Andrew Tridgell 5c4c950faf HAL_ChibiOS: fixed BRD_SAFETY_MASK on some boards
for boards that have an IOMCU but also have a safety button on the FMU
this fixes the BRD_SAFETY_MASK
2022-11-03 18:47:03 +11:00
Andy Piper 3c8d94304d AP_HAL_ChibiOS: allow bdshot to work on MCUs with DMAv1
remove magic value from DCR setup in bdshot
predicate FIFO usage on advanced DMA
2022-09-20 09:45:03 +10:00
Andrew Tridgell 9d1adae141 HAL_ChibiOS: fixed safety control with BRD_IO_ENABLE=0 2022-08-23 10:46:29 +10:00
Peter Barker 13b03f79db AP_HAL_ChibiOS: move from HAL_NO_SHARED_DMA to AP_HAL_SHARED_DMA_ENABLED
This allows hwdef files to manipulate this value
2022-07-19 18:02:26 +10:00
Andy Piper cabaef6173 AP_HAL_ChibiOS: add BLHeli_S ESC type and use it to control bitwidths 2022-05-25 17:06:08 +10:00
Peter Barker 2913c8d9e9 AP_HAL_ChibiOS: add support for SIM_OH_MASK (sim-on-hardware output enable mask 2022-05-24 10:35:32 +10:00
Andrew Tridgell c8b328c3a1 HAL_ChibiOS: always start with safety enabled
we want it enabled during early boot to prevent incorrect ESC and
servo output
2022-05-22 14:58:12 +10:00
Andrew Tridgell 1d9abefbb1 AP_HAL_ChibiOS: more changes for 32 bit servo mask 2022-05-22 12:07:37 +10:00
Iampete1 7fc691d8d5 AP_HAL_ChibiOS: enable 32 servo outs 2022-05-22 12:07:37 +10:00
Andy Piper 119cde79a7 AP_HAL_ChibiOS: determine presence of disabled channels based on digital channels in a group 2022-04-25 15:55:54 +09:00
Andy Piper df35cb6243 AP_HAL_ChibiOS: move bitwidths to AP_HAL 2022-04-20 17:39:29 +10:00
Andy Piper e0adbb978e AP_HAL_ChibiOS: fix dshot timeout bug where the elapsed pulse is longer than the send time
dshot timeouts should be no longer than the pulse interval
use correct timestamp for dmar send time
2022-04-07 07:21:21 +10:00
Andrew Tridgell 4c977eb7a0 HAL_ChibiOS: prevent long timeouts in DShot
this prevents bad calculated timeouts in DShot. The timeout would
sometimes come out as 0xFFFFFFFF, which led to an assert and could
block the thread

This fix is meant to be minimilistic to allow it to be merged easily
into 4.2. A better fix would fix all the uint32_t wrap handling in
DShot
2022-04-05 17:46:52 +10:00
Andy Piper 23f8a00619 AP_HAL_ChibiOS: use narrower bitwidths for dshot and LEDs to allow more accurate prescaler calculation 2022-03-30 17:11:09 +11:00
Andy Piper 4fa0e275fd AP_HAL_ChibiOS: fix ESCs constantly arming on rover with dshot commands
make sure debug will compile
take into account active channels when configuring bdshot
add channel mask debug output
correct set bdshot telemetry position at startup
make sure all channels in a bdshot group are pulled high to prevent spurious pulses
2022-03-29 10:29:31 +11:00
Randy Mackay 5561a5e82e AP_HAL_ChibiOS: reversible DShot fix
Co-authored-by: Andy Piper <github@andypiper.com>
2022-03-24 08:01:48 +09:00
Peter Barker f7608c22da AP_HAL_ChibiOS: set pwm output values in simstate object 2022-03-17 14:39:55 +11:00
Andy Piper 02219ba3e5 AP_HAL_ChibiOS: ensure chan_offset is initialized before using it 2022-02-23 18:35:43 +11:00
Andy Piper b6022ca5d4 AP_HAL_ChibiOS: add support for alternate alarm PWM group
account for inverted alarms and build on boards without PWM
enable alarm based on pwm
shutdown alarm channel if using a different one
2022-02-23 18:35:43 +11:00
Andrew Tridgell 638e20a0b9 HAL_ChibiOS: bring in hal.h where it is needed 2022-02-22 12:13:19 +11:00
Andy Piper 83ac78e969 AP_HAL_ChibiOS: add support for @SYS/timers.txt
move out prescaler calculation and use closest prescaler everywhere
include timer id in PWM groups
2022-02-16 15:28:04 +11:00
Andy Piper 48c21299f8 AP_HAL_ChibiOS: hwdef for SPRacingH7
hwdef for DevEBoxH7v2
pin definitions for STM32H750
add QSPI to DevEBox bootloader
add external flash to DevEBox
rename EXTERNAL_PROG_FLASH_MB to EXT_FLASH_SIZE_MB
Add support for EXT_FLASH_RESERVE_START_KB and EXT_FLASH_RESERVE_END_KB
Disable HAL_ENABLE_SAVE_PERSISTENT_PARAMS when there is no bootloader flash available
relax storage health status with SD card backend
don't check SD card health unless USE_POSIX
binary sections rearranged on external ram
manage RAMFUNC through ldscript and optimize function placement in external flash
inline timer functions
optimize placement of ChibiOS and functions in ITCM and AXI RAM
fix chibios features on bootloader build with external flash
change H750 memory layout
increase line storage for SD card based parameters
comment external flash linker script
move vtables into DTCM
update ram map for H757
enable crashdump support with external flash
correct bootloader pins and generator on SPRacingH7/DevEBoxH7v2
setup external flash reserve regions
allow different RAM_MAP for external flash on H750 and H757
2022-02-09 12:47:55 +00:00
Andy Piper ab25fc659a AP_HAL_ChibiOS: correct prescaler algorithm
remove redundant PWM reset
2022-02-07 12:56:30 +11:00
Andrew Tridgell d71ec5bb4d HAL_ChibiOS: don't init RCOut twice
this triggered a watchdog if the dshot timer was already active, which caused
the neoled driver to prevent boot of the Matek F405 GPS
2022-01-27 08:26:47 +11:00
Andrew Tridgell e35514b551 HAL_ChibiOS: fixed neopixel control
fixes frequency setup for neopixel, separating out DShot setup. Also
allows for neopixel without other DMA controlled output types for LEDs
in AP_Periph
2022-01-27 08:26:47 +11:00
Michel Pastor 876f478ae1 RCOutput: fix motor stopping with rev thrust and full throttle 2021-10-26 10:53:34 +11:00
Andrew Tridgell 5a68e21435 HAL_ChibiOS: support STM32L431 2021-10-17 20:30:20 +11:00
Iampete1 9751cb5b24 AP_HAL_ChibiOS: move is_dshot_protocol up to AP_HAL 2021-10-06 18:59:57 +11:00
Michel Pastor a9fed2f9bc RCOutput: fix full throttle bug 2021-10-05 11:47:04 +11:00
Andrew Tridgell 6953778b4c HAL_ChibiOS: use micros16() for blheli pass-thru IRQ
saves some IRQ overhead, makes time handling more consistent
2021-10-02 18:26:39 +10:00
Iampete1 53ee7d861d AP_HAL_ChibiOS: remove safe PWM 2021-09-14 09:23:02 +10:00
Iampete1 529a3a9122 AP_HAL_ChibiOS: convert back to full range on IOMCU ONESHOT125 read 2021-09-08 18:01:50 +10:00
Andy Piper 68fd87091c AP_HAL_ChibiOS: output initializing from PWM banner when not available 2021-08-12 19:07:51 +09:00
Andy Piper a51e58022f AP_HAL_ChibiOS: add accessor for reversed mask
allow mask updates to be disabled
send dshot commands even if armed - they will be accepted as long as throttle is at zero
only accept low-priority dshot commands while disarmed
apply reversed and reversible mask as servo channels
2021-08-12 19:00:51 +09:00
Andrew Tridgell 54e53ed71c HAL_ChibiOS: use is_GPIO() instead of BRD_PWM_COUNT 2021-07-22 07:48:12 +10:00
Andy Piper 60b0df0a25 AP_HAL_ChibiOS: only control widest pulse for dshot and oneshot 2021-07-14 17:50:06 +10:00
Andrew Tridgell 7ac895db77 HAL_ChibiOS: always send zero DShot when disarmed
this prevents a misconfigured system (for example SERVOn_REVERSED=1)
from running a motor while disarmed.

See https://discuss.ardupilot.org/t/plane-4-1-0-beta/72434/34?u=tridge
2021-07-03 11:37:28 +10:00
Andy Piper 9e99f724e5 AP_HAL_ChibiOS: add 1Hz update_channel_masks()
Send dshot commands in update function
2021-06-22 09:55:27 +10:00