1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-19 06:15:16 +03:00
Commit graph

18682 commits

Author SHA1 Message Date
ctzsnooze
2d9c9877ff stop activation until throttle raised, but not require airmode
use wasThrottleRaised in place of isAirmodeActivated where airmode isn't really needed
2024-11-27 07:43:49 +11:00
ctzsnooze
5f4027e0c9 allow earth referencing in alt and pos hold 2024-11-27 07:43:49 +11:00
ctzsnooze
64b01e2759 force iTerm to zero when close to target 2024-11-27 07:43:49 +11:00
ctzsnooze
996d6ee379 adjust pids and smoothing; smoothing cutoff to settings 2024-11-27 07:43:48 +11:00
ctzsnooze
9b76715835 calculate PIDs independently for each axis, increas DJ gains 2024-11-27 07:43:48 +11:00
ctzsnooze
c2280b910c fix pid bug and improve iTerm handling 2024-11-27 07:43:48 +11:00
ctzsnooze
b7d6ca7bec sanity check notes 2024-11-27 07:43:48 +11:00
ctzsnooze
3837b0526a PIDJ distance controller, not velocity based. Remove airmode check 2024-11-27 07:43:48 +11:00
ctzsnooze
33f92db305 revise PID gains 2024-11-27 07:43:48 +11:00
ctzsnooze
a853b6ced3 Re-organise included files and functions thanks Karate 2024-11-27 07:43:48 +11:00
ctzsnooze
36f7379d6f add deadbands 2024-11-27 07:43:48 +11:00
ctzsnooze
897b9a9a61 first working example with smoothed acceleration 2024-11-27 07:43:48 +11:00
ctzsnooze
70b1097f08 add debug values for testing 2024-11-27 07:43:48 +11:00
ctzsnooze
29949ee8c5 basic control scheme 2024-11-27 07:43:48 +11:00
ctzsnooze
2b5a105f24 first position hold draft 2024-11-27 07:43:48 +11:00
ctzsnooze
b45ab68c8a get current gps location 2024-11-27 07:43:48 +11:00
ctzsnooze
0c8b636ddf initial position hold setup 2024-11-27 07:43:48 +11:00
ctzsnooze
aa9d3e3ffe autopilot naming, function sharing 2024-11-27 07:43:48 +11:00
Jay Blackman
53d44aa1b1
Adding common source location in ./src/platform (#14044)
* Adding common source location in ./src/platform

To enable the continued clean up of multiple files still in ./src/main/driver (more PRs to follow) that are specifically for AT32, APM32 and STM32

Source will be moved to MCU_COMMON_SRC where it is specifically for that MCU (or variant). The test will be to ensure no files in the MCU_EXCLUDES for SITL.

* Use of +=
2024-11-25 21:16:45 +01:00
Vladimir Demidov
63514c2b54
Added flight IMU pitch, roll, yaw attitudes to blackbox log (#14020)
* added attitude fields desriptions

* the attitude (imu pitch, roll, yaw) added to blackbox log

* Global variable imuAttitudeQuaternion[3] is added to store current normalized imu attitude quaternion

* IMU attitude quaternion added to log instead of Euler angles

* blackbox logging of IMU attitude quaterions is replaced to GYRO group

* Revert "blackbox logging of IMU attitude quaterions is replaced to GYRO group"

This reverts commit a6020ed6b6.

* code refactoring: use quaternion as global variable instead of float[3] array

* USE_ACC apply for attitude log

* quaterion struct data type is changed to union quaternion_t

* resolved issue of Test module

* Code style improvement: removed empty codes row

Co-authored-by: Mark Haslinghuis <mark@numloq.nl>

* Added STATIC_ASSERT check of quaternion components sequence.

Co-authored-by: Petr Ledvina <ledvinap@gmail.com>

* Code style improvement

Co-authored-by: Petr Ledvina <ledvinap@gmail.com>

* Resolved code issue

Co-authored-by: Mark Haslinghuis <mark@numloq.nl>

* resolved wrong data type name

* STATIC_ASSERT error resolved

Co-authored-by: Mark Haslinghuis <mark@numloq.nl>

* Improved assert condition

Co-authored-by: Petr Ledvina <ledvinap@gmail.com>

* added ATTITUDE condition for attitude blackbox log

* added blackbox_disable_attitude cli command

* Attitude position changed in blackbox disabling fields list

* resolved issue wrong quaternion log record condition

---------

Co-authored-by: Mark Haslinghuis <mark@numloq.nl>
Co-authored-by: Petr Ledvina <ledvinap@gmail.com>
2024-11-25 17:32:58 +01:00
Vladimir Demidov
57d32ea1da
Logging of the S -term values in blackbox for Fixed wings. (#14012)
* The S term values are added to blackbox logging for airplanes

* The axisS log fields are placed into NONZERO_WING_S_n group
2024-11-23 18:08:47 +01:00
Ivan Efimov
e422e42122
trailing spaces after #14010 (#14031) 2024-11-18 17:52:20 +01:00
Ivan Efimov
1c1c78f80f
TPA mode PDS + Wing setpoint attenuation (for wings) (#14010)
* TPA mode PDS + Wing setpoint attenuation

* removed brackets by haslinghuis :)

* Ledvinap's review

---------

Co-authored-by: limonspb <gendalf44@yandex.ru>
2024-11-16 02:07:13 +01:00
nerdCopter
ed6a4a4769
duplicate emptyline removal (#14027)
* trailing space removal

Co-authored-by: Petr Ledvina <ledvinap@gmail.com>

* deduplicate empty lines

---------

Co-authored-by: Petr Ledvina <ledvinap@gmail.com>
Co-authored-by: Mark Haslinghuis <mark@numloq.nl>
2024-11-15 23:07:25 +01:00
nerdCopter
493b9bf819
trailing whitespace removal (#14026)
trailing space removal

Co-authored-by: Petr Ledvina <ledvinap@gmail.com>
2024-11-15 22:19:13 +01:00
Steve Evans
0de6278433
Driver for CADDX camera GM3 gimbal (#13926)
* Driver for CADDX camera GM3 gimbal

* Update src/main/cli/settings.c

Fix copy-paste error on variable name.

Co-authored-by: Petr Ledvina <ledvinap@gmail.com>

* Update src/main/io/gimbal_control.c

Co-authored-by: Petr Ledvina <ledvinap@gmail.com>

* Update src/main/io/gimbal_control.c

Co-authored-by: Petr Ledvina <ledvinap@gmail.com>

* Update src/main/io/gimbal_control.c

Co-authored-by: Petr Ledvina <ledvinap@gmail.com>

* Only forward gimbal data with good CRC

---------

Co-authored-by: Petr Ledvina <ledvinap@gmail.com>
2024-11-12 20:29:56 +01:00
ahmedsalah52
b70e98ed5a
MSP Range finder added (#13980)
* MSP Range Finder added (configured and tested on the MTF-01P Lidar)

* MSP Range Finder added (configured and tested on the MTF-01P Lidar)

* fix the license of the added files from INAV

* Update src/main/drivers/rangefinder/rangefinder_virtual.c

Co-authored-by: Mark Haslinghuis <mark@numloq.nl>

* Update src/main/msp/msp.c

Co-authored-by: Mark Haslinghuis <mark@numloq.nl>

* Update src/main/io/rangefinder.h

Co-authored-by: Mark Haslinghuis <mark@numloq.nl>

* Update src/main/msp/msp.c

Co-authored-by: Mark Haslinghuis <mark@numloq.nl>

* refactored the code of INAV for the MSP rangefinder, to be extendable to other MSP rangefinder and more specific about the parameters of the supported ones

* Update src/main/drivers/rangefinder/rangefinder_lidarmt.c

Co-authored-by: Petr Ledvina <ledvinap@gmail.com>

* Update src/main/drivers/rangefinder/rangefinder_lidarmt.c

Co-authored-by: Petr Ledvina <ledvinap@gmail.com>

* refactored the code for readability

* mt lidar msp address

* us the delay MS from the dev directly

* todo

* MT device type datatype

* refactored the code for readability

* spacing

* refactoring

Co-authored-by: Petr Ledvina <ledvinap@gmail.com>

* refactoring

Co-authored-by: Petr Ledvina <ledvinap@gmail.com>

* refactoring

Co-authored-by: Petr Ledvina <ledvinap@gmail.com>

* refactoring

Co-authored-by: Petr Ledvina <ledvinap@gmail.com>

* refactoring

Co-authored-by: Petr Ledvina <ledvinap@gmail.com>

* refactoring

Co-authored-by: Petr Ledvina <ledvinap@gmail.com>

* refactoring

Co-authored-by: Petr Ledvina <ledvinap@gmail.com>

* refactoring

Co-authored-by: Petr Ledvina <ledvinap@gmail.com>

* after the edits fix

* rm idx

* typo fixed

* i think this shouldn't be here

* spacing

* Update src/main/drivers/rangefinder/rangefinder_lidarmt.c

Co-authored-by: Petr Ledvina <ledvinap@gmail.com>

* fix mt models ranges

* remove mt01p model, it doesn't map

* rm "MT01P", it doesn't support map

* rm mt01p, it doesn't support msp

* Update rangefinder_lidarmt.h

* update mt lidar deadzone

* Update rangefinder_lidarmt.c

* Update rangefinder_lidarmt.c

* rm unused variable mtfConnected

---------

Co-authored-by: Mark Haslinghuis <mark@numloq.nl>
Co-authored-by: Petr Ledvina <ledvinap@gmail.com>
2024-11-12 08:42:20 +11:00
Steve Evans
778f93f119
Revert restriction of reading across page boundary (#14015) 2024-11-10 14:53:22 +01:00
Jan Post
061ebcebe7
Chainable vector operations (#13996)
* chainable vector ops

* add subtraction

* Reduce register pressure
2024-11-08 20:38:38 +01:00
Ivan Efimov
89f2ec9880
Angle pitch offset (for wings) (#14009)
* angle pitch offset (for wings)

* made angle_pitch_offset int16, and changed direction to follow BF convention

* Update src/main/blackbox/blackbox.c

Co-authored-by: Jan Post <Rm2k-Freak@web.de>

---------

Co-authored-by: Jan Post <Rm2k-Freak@web.de>
2024-11-08 20:15:09 +01:00
Mark Haslinghuis
56a3688d7d
Change default I2C adddress for IST8310 (#13995) 2024-11-08 20:14:33 +01:00
Petr Ledvina
4d697c2ce1
Serial refactor fix (#14007)
* VCP - zero-init USB port in usbVcpOpen

* Serial - serialPortIdentifier_e is signed

* UART - remove unused serialPortCount

* UART - allow compiling spectrum without UART

* UART - minor improvements

closeSerialPort tests for NULL,
no other functional changes
2024-11-06 22:58:10 +01:00
Steve Evans
6e79712906
Add PRBS checking of BB FLASH with USE_FLASH_TEST_PRBS (#13987)
* Add PRBS checking of BB FLASH with USE_FLASH_TEST_PRBS

* Update src/main/io/flashfs.c

Co-authored-by: Petr Ledvina <ledvinap@gmail.com>

---------

Co-authored-by: Petr Ledvina <ledvinap@gmail.com>
2024-11-06 20:33:32 +01:00
Petr Ledvina
246d04dc57
Refactor uart (#13585)
* serial - refactor serial resource handling

- port related resources (tx/rx/inverted,dma)
  - are stored sequentially, with space in place of ports that are not
  enabled (RESOURCE_UART_COUNT + RESOURCE_LPUART_COUNT +
     RESOURCE_SOFTSERIAL_COUNT)
  - RESOURCE_UART_OFFSET, RESOURCE_LPUART_OFFSET, RESOURCE_SOFTSERIAL_OFFSET
  - resource entries are pointing into this array (UART, LPUART, SOFTSERIAL)
    - both pins and DMA
    - inverter is supproted only for UART + LPUART (makes sense only
     for UART, to be removed)
  - softSerialPinConfig is removed, it is no longer necessary
- serialResourceIndex(identifier) is used universally to get correct
   index into resource array
- unified handling of resources where possible
- serialOwnerTxRx() + serialOwnerIndex() are used for displaying resources
   correctly to user.
- serialType(identifier) implemented
  - serialOwnerTxRx / serialOwnerIndex are trivial with it
  - large switch() statemens are greatly simplified

* serial - merge code duplicated in all UART implementations

- drivers/serial_uart_hw.c contains merged serialUART code.
  Code did not match exactly. Obvious cases are fixed, more complicated
  use #ifs
- pin inversion unified
- uartOpen is refactored a bit

* serial - refactor uartDevice

- use 'compressed' enum from uartDeviceIdx_e. Only enabled ports are
   in this enum.
- uartDeviceIdx directly indexes uartDevice (no search necessary, no
    wasted space)
- use `serialPortIdentifier_e identifier;` for uartHardware
- for DMA remap, define only entries for enabled ports (uartDeviceIdx_e
   does not exist disabled port)

* serial - apply changes to inverter

New implementation is trivial

* serial - HAL - rxIrq, txIrq replaces by irqn

There is only one IRQ for serial

* serial - serial_post.h

Generated code to normalize target configuration.
jinja2 template is used to generate header file. Port handling is
unified a lot.

SERIAL_<type><n>_USED 0/1 - always defined, value depends on target configuration
SERIAL_<type>_MASK        - bitmask of used ports or given type. <port>1 is BIT(0)
SERIAL_<type>_COUNT       - number of enabled ports of given type
SERIAL_<type>_MAX         - <index of highest used port> + 1, 0 when no port is enabled

* targets - remove automatically calculated valued from configs

serial_post.h generated it

* serial - remove definitions replaced by serial_post.h

* serial - change LPUART to UART_LP1 in places

LPUART is mostly handled as another UART port, this change reflects it

* serial - use ARRAYLEN / ARRAYEND in some places

replaces constant that may not match actual array size

* serial - adapt softserial to changes

* serial - whitespace, comments

* softserial - fix serialTimerConfigureTimebase

* serial - suspicious code

* serial - unittests

* serial - cleanup

* serial - simpler port names

Is this useful ?

* serial - no port count for SITL necessary

* serial - fix unittests

include serial_post.h, some ports are defined, so normalization will
work fine

* timers - remove obsolete defines from SITL and unittests

* serial - cosmetic improvements

comments, whitespace, minor refactoring

* serial - fix serialInit bug

serialPortToDisable was preventing further tests

* serial - fix possible NULL pointer dereference

* serial - move serialResourceIndex to drivers

* serial - refactor pp/od and pulldown/pullup/nopull

Centralize serial options handling, decouple it from MCU type

Move some code into new drivers/serial_impl.c

* serial - make port.identifier valid early in port initialization

* serial - fix unittest

Code is moved around a bit to make unittests implementation easier

* serial - bug - fix off-by-one error

uart1/softserial1/lpuart was not working properly because of this

* serial - whipespace + formating + style + comments

No functional changes

* utils - add popcount functions

Wrap __builtin_popcount for easier use. Refactor existing code using
it. Update code using BITCOUNT macro in dynamic context (BITCOUNT is
for compile-time use only)

* serial - inverter - simplify code

* pinio - prevent array access overflow

* serial - refactor SERIAL_BIDIR_*

SERIAL_BIDIR_OD / SERIAL_BIDIR_PP
SERIAL_PULL_DEFAULT / SERIAL_PULL_NONE / SERIAL_PULL_PD

* serial - simplify code

minor refactoring
- cleaner AVOID_UARTx_FOR_PWM_PPM (unused anyway)
- serialFindPortConfiguration* - remove code duplication
- use serialType in smartaudio

* serial - add port names

- const string is assiociated with each compiled-in port (easy to pass around)
- findSerialPortByName

* cli - improve serialpassthrough

- support port options (in current mode argument)
- support port names (`serialpassthrough uart1`)
- improve error handling; check more parse errors

* cli - resources - minor refactor

- prevent SERIAL_TX_NONSENSE when parsing resource type
- fix possible NULL pointer dereference
- store resource tag only after checking all conditions
- slighty better error reporting
- `resource serial_tx 1` will print resource assignment

* serial - remane pulldown to SERIAL_PULL_SMARTAUDIO

Make sure nobody uses it by
mistake. SERIAL_PULL_SMARTAUDIO_SUPER_DANGEROUS_USE_AT_YOUR_OWN_RISK_THIS_WILL_BREAK_EVERYTHING_AND_KILL_YOUR_PET_FISH
would be better choice, but try shorter version first.

* smartaudio - minor refactor/improvement

- Fix softserial on AT32
- make it easier to handle SA on per-cpu basis

* softserial - minor refactoring

no functional changes

* UART - move AF handling before MCU dependent code

* UART - adapt APM32 / APM32F4 code

- Modeled after F4 where possible
- come code moved from APM32 to APM32F4, possbily not necessary, but
   it improves similarity with STM32F4

* UART - APM32 - remove per-pin AF

* UART - APM32 - bugfix - fix pinswap #if conditions

* UART - apply some improvemnts from APM32 to STM32

* UART - add todo for F4 serial speed

* UART - fix typo

* UART - refactor support for USE_SMARTAUDIO_NOPULLDOWN

* UART - typos, comments, minor improvements

* UART - move code into enableRxIrq

TODO: split into mcu-specific filer (but in sepatate PR)

* UART - add UART_TRAIT_xx

makes #if test easier and more consistent
more traits shall follow

* UART - fix variable name

unused branch, would trigger compilation error otherwise

* UART - use tables instead of switch

* UART - smartaudio

minor style change + better comments

* UART - unify mspPorts iteration

* UART - fix spelling

* UART - another typo

* UART - fix serialResourceIndex

offset must be added, not subtracted
offset can be negative

* UART - fix typo

Bad day ...

* UART - use const table

GCC does optimize it better.
Should not cause functional change

* UART - use OwnerIndex for inverter

- 1 based
- only UART has inversion

* UART - refactor serial_resource a bit

Single table + helper function. New table is easier to read

* UART - serial_impl header is necessary

* UART - style-only changes

typos
unify whitespace
comment improvement
add some const modifiers
use cfg in uartConfigureDma
minor improvemnt of for loops

* UART - remove LPUART inverter

LPUART always supports internal inversion, code was incomplete and
unused

* UART - update jinja template, regenerate files

* UART - enable UART module RCC clk before configuring DMA

Does not change anything, UART RCCs are enabled unconditionally
2024-11-04 22:07:25 +01:00
Ivan Efimov
a659189bf0
Yaw type rudder/diff_thrust for TPA calculations (for wings) (#13929)
* Yaw type rudder or diff_thrust for TPA calculations (for wings)

* Added yaw_type to blackbox header

* KarateBrot review

* KarateBrot break

Co-authored-by: Jan Post <Rm2k-Freak@web.de>

---------

Co-authored-by: Jan Post <Rm2k-Freak@web.de>
2024-11-04 22:03:31 +01:00
Steve Evans
b819eceb86
Make three attempts to not only write to FLASH, but also validate it (#14001) 2024-10-31 14:45:16 +01:00
Mark Haslinghuis
954cc1da3a
Remove GYRO_SCALED debug mode (#13101)
Revert removing dual_gyro_scaled
2024-10-26 22:59:39 +02:00
Ivan Efimov
c545435f2e
removed RESCUE_COMPLETE from gps rescue since it's not used (#13993) 2024-10-25 22:21:03 +02:00
Mark Haslinghuis
3e7cbb53ad
Fix SmartAudio (STM32F4) (#13797)
* resubmit after rebase

* Add define for SA without PD

* Move logic to smartaudio
2024-10-25 08:04:36 +11:00
Mark Haslinghuis
2cc63b63a3
Allow configuration for ibat_lpf_period using DEFAULT_IBAT_LPF_PERIOD define (#13903)
Allow configuration for ibat_lpf_period
2024-10-23 21:58:21 +02:00
cvetaevvitaliy
715c1671a8
Add support external clock for gyro ICM42688P (#13912) 2024-10-24 06:49:18 +11:00
Petr Ledvina
866191dfad
Refactor gps (#13853) 2024-10-24 06:45:17 +11:00
J Blackman
2dd6f95aad
Adding RP2350 SDK and target framework (#13988)
* Adding RP2350 SDK and target framework

* Spacing

* Removing board definitions
2024-10-23 01:02:48 +02:00
mygodamn
462cb05930
add spi nor flash support winbond W25Q64JW (#13977)
* add spi nor flash support winbond W25Q64JW

* modify `W25Q64JW` subtype comment

* modify `W25Q64JW` max spi clk to 104MHz

- For none SPI-EBh (Fast Read Quad I/O) mode, max dual output / quad output read clk should be 104MHz
2024-10-23 00:55:47 +02:00
Mark Haslinghuis
a17d8c69d2
Fix SITL build (#13972)
* Fix SITL build

* Remove semicolons
2024-10-22 20:10:02 +02:00
ke deng
d5f899156d
Fixes #13930: fix timer based bidirectional dshot command not working issue (#13978)
* fix timer based bidirectional dshot command not working issue

* smaller scope of isBitbangActive
2024-10-22 16:13:06 +02:00
Mark Haslinghuis
69f75b55f6
Add CRSF baro altitude sensor (#13840)
* Add CRSF baro altitude sensor

* Thanks Ledvinap

* Fix parenthesis

* Review bkleiner

* Review karate

* Rename getVerticalSpeedPacked
2024-10-20 03:06:16 +02:00
Mark Haslinghuis
2c4d76c920
Update build options (#13974) 2024-10-20 11:04:25 +11:00
ctzsnooze
fc52b6b4ff
Use wasThrottleRaised in place of isAirmodeActivated where appropriate (#13968)
* use wasThrottleRaised in place of isAirmodeActivated where airmode isn't really needed

* fix unit test

* fix typo

* remove unnecessary check

* final changes and clarificartions

* Update src/main/flight/mixer.c

Co-authored-by: Ivan Efimov <gendalf44@yandex.ru>

---------

Co-authored-by: Mark Haslinghuis <mark@numloq.nl>
Co-authored-by: Ivan Efimov <gendalf44@yandex.ru>
2024-10-17 10:46:54 +02:00
ctzsnooze
58fc8bbbb8
Shared altitude control function in position_control.c (#13954)
* Altitude control code shared

fewer debugs
subtract D

* remove #include comments, simplify coding, restructuring

thanks JP and MH

* fix cms limits for throttle control

* Use altitude_control debug, fix throttle calculation

minor refactoring

* use AUTO_CONTROL_ALTITUDE debug in place of GPS Rescue throttle pid

* use autopilot for position control names

* fixes from reviews - thanks

* Re-organise included files and functions thanks Karate

* missed init and other typos

* remove old unused unit test file, tidy up thanks Mark

* fix indentation on one line
2024-10-16 23:17:44 +02:00