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
Andrew Tridgell
984542fa53
AP_IOMCU: fixed error handling for short packets
...
this prevents short packets from the IOMCU being processed. A short
enough read could be processed as a valid status packet, which would
lead to invalid values for safety flag and servo voltage
fixes issue #12030
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
ef5f83d0b5
AP_IOMCU: remove 2s delay on boot and skip crc check on watchdog
...
thanks to @Jaaaky for the suggestion in #11232
2019-05-03 13:44:56 +10:00
Andrew Tridgell
6c50feaead
AP_IOMCU: improved handling of IOMCU reset
...
use IOMCU timestamp to detect reset
2019-04-28 07:45:33 +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
af54e8620e
AP_IOMCU: prevent startup sync causing an internal error
2019-04-28 07:45:33 +10:00
Andrew Tridgell
c7be7d7343
AP_IOMCU: cope with IOMCU reset
2019-04-22 16:53:35 +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
Andrew Tridgell
664e92ed7e
AP_IOMCU: fixed build warnings
2019-02-26 16:18:26 +11:00
Andrew Tridgell
a6e989e263
AP_IOMCU: fixed shadowed variable warning
2019-02-26 16:18:26 +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
41264568ba
AP_IOMCU: added brushed motor feature bit in protocol
2018-11-30 13:14:14 +11: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
Andrew Tridgell
107ccb3eef
AP_IOMCU: enable DSM input in iofirmware
2018-11-07 07:35:45 +11:00
Andrew Tridgell
b9e4916c17
AP_IOMCU: fixed delay in DSM bind
2018-11-07 07:35:45 +11:00
Andrew Tridgell
2488d25284
AP_IOMCU: fixed rate of failsafe handling
2018-11-07 07:35:45 +11:00
Andrew Tridgell
f8dc17f8ff
AP_IOMCU: implement DSM bind
2018-11-07 07:35:45 +11:00
Andrew Tridgell
184c05bc70
AP_IOMCU: fixed DSM bind
2018-11-07 07:35:45 +11:00
Andrew Tridgell
c57fe83217
AP_IOMCU: rename sbus_out.cpp to rc.cpp
...
will also handle DSM input on USART1
2018-11-07 07:35:45 +11:00
Eugene Shamaev
4d64b86f87
AP_IOMCU: Add binding procedure for DSMx
2018-11-07 07:35:45 +11:00
Andrew Tridgell
843772a2bc
AP_IOMCU: added some debug code
...
and lower PKT_MAX_REGS to reduce max DMA size. This fixes an
occasional fault
2018-11-07 07:35:45 +11:00
Andrew Tridgell
8ece4e3f64
AP_IOMCU: implement BRD_SAFETY_MASK in iofirmware
2018-11-07 07:35:45 +11:00
Andrew Tridgell
beff16abe6
AP_IOMCU: implement manual_rc_mask
2018-11-07 07:35:45 +11:00
Andrew Tridgell
27f06ce810
AP_IOMCU: trigger override at 1750
...
thanks Michael
2018-11-07 07:35:45 +11:00
Andrew Tridgell
46fcfe0582
AP_IOMCU: removed rc_channel range check
...
feedback from @WickedShell
2018-11-07 07:35:45 +11:00
Andrew Tridgell
e70a98fa9a
AP_IOMCU: support elevon and vtail mixing in failsafe
2018-11-07 07:35:45 +11:00
Andrew Tridgell
285508d568
AP_IOMCU: added initial mixing support
...
supports aileron, elevator, throttle and rudder
2018-11-07 07:35:45 +11:00
Andrew Tridgell
ec73a7072b
AP_IOMCU: use more bandwidth efficient IO read
2018-11-07 07:35:45 +11:00
Andrew Tridgell
191f72d2e6
AP_IOMCU: added mixing structure to protocol
2018-11-07 07:35:45 +11:00
Andrew Tridgell
cab5199da8
AP_IOMCU: fixed a race in event trigger on startup
...
this fixes the issue with initial safety option state, and with
initial safety mask
2018-11-05 19:24:44 +11:00
Andrew Tridgell
1711b93602
AP_IOMCU: fixed read packet count
2018-10-30 13:00:48 +11:00
Andrew Tridgell
ed48c24600
AP_IOMCU: added shutdown method
...
this cleans up the reboot process
2018-10-30 13:00:48 +11:00
Andrew Tridgell
f600ebd758
AP_IOMCU: added SBUS output support
2018-10-30 13:00:48 +11:00
Andrew Tridgell
af4340d1d1
HAL_ChibiOS: enable analog input on IOMCU
2018-10-30 13:00:48 +11:00
Andrew Tridgell
b45b8ff703
AP_IOMCU: added analog input to iofirmware
2018-10-30 13:00:48 +11:00
Andrew Tridgell
6ec87528db
AP_IOMCU: fixed RCIN failsafe
2018-10-17 15:11:28 +11:00
Andrew Tridgell
92d8ef0e76
AP_IOMCU: run the rcin timer tick in main loop
...
we no longer run a separate RCIN thread
2018-10-17 15:11:28 +11:00
Andrew Tridgell
3641dcee44
AP_IOMCU: only build iofirmware for ChibiOS
2018-09-19 12:14:15 +10:00
Andrew Tridgell
17112c8988
waf: allow build with "./waf iofirmware"
2018-09-19 12:14:15 +10:00
Andrew Tridgell
848dd87d58
AP_IOMCU: fixed code style issues
2018-09-19 12:14:15 +10:00
Andrew Tridgell
ba87856deb
AP_IOMCU: fixed build warning
2018-09-19 12:14:15 +10:00
Siddharth Purohit
605e0de03c
AP_IOMCU: conform to new time conversion API
2018-09-19 12:14:15 +10:00
Siddharth Purohit
bc601c1ff6
AP_IOMCU: add Boardconfig to list of required libraries
2018-09-19 12:14:15 +10:00
Andrew Tridgell
f0b27c9b92
AP_IOMCU: support brushed output
2018-09-19 12:14:15 +10:00
Andrew Tridgell
cfb10fbb2f
AP_IOMCU: fixed oneshot support in IO firmware
2018-09-19 12:14:15 +10:00
Andrew Tridgell
2c7e27374f
AP_IOMCU: use ioevents for oneshot in iofirmware
2018-09-19 12:14:15 +10:00
Andrew Tridgell
ecfe06b9e4
AP_IOMCU: implement safety LED and switch in iofirmware
2018-09-19 12:14:15 +10:00
Andrew Tridgell
037a455784
AP_IOMCU: moved protocol structures to a common header
2018-09-19 12:14:15 +10:00
Andrew Tridgell
89bfd7e850
AP_IOMCU: added blue LED support on PH1
2018-09-19 12:14:15 +10:00
Siddharth Purohit
19c002baaf
AP_IOMCU: add support for iofirmware update
2018-09-19 12:14:15 +10:00
Siddharth Purohit
fe3dda74bd
AP_IOMCU: remove optimize override from iofirmware
2018-09-19 12:14:15 +10:00
Siddharth Purohit
4608e90913
IOMCU: add application for ioboard firmware
2018-09-19 12:14:15 +10:00
Andrew Tridgell
f22d5f0d40
AP_IOMCU: implement failsafe PWM
2018-09-13 08:15:02 +10:00
Andrew Tridgell
135e37e1f4
AP_IOMCU: cope with IOMCU reset in flight
...
this copes with IOMCU reset when we have safety forced off
2018-09-04 15:24:12 +10:00
Lucas De Marchi
668c941717
Global: use new version of ARRAY_SIZE
2018-08-04 15:31:55 +10:00
Siddharth Purohit
9f5dbb74e7
AP_IOMCU: move to using updated time conv API
2018-08-03 13:44:59 +10:00
Andrew Tridgell
8c9f2bc79e
AP_IOMCU: fixed setting of rate masks
...
this affects layouts which set a subset of channels on a timer
2018-07-28 15:25:57 +10:00
Jonathan Challinger
65b20bfd83
AP_IOMCU: fix radio failsafe handling
2018-07-19 06:52:09 +10:00
Andrew Tridgell
ba0fb3d9d2
AP_IOMCU: fixed repeated upload of IO fw
2018-07-11 09:51:43 +10:00
Andrew Tridgell
e200de1f57
AP_IOMCU: use compressed interface for IO fw upload
2018-07-09 19:41:56 +10:00
Andrew Tridgell
0e29bcc4ab
AP_IOMCU: use thread_create() API
2018-07-09 19:41:18 +10:00
Andrew Tridgell
3242b5eeb9
AP_IOMCU: fail to boot if IO firmware CRC and update fails
...
we don't want to fly with a bad IO firmware
2018-06-06 07:15:41 +10:00
Andrew Tridgell
0047807fbf
AP_IOMCU: fixed build error on F7
2018-06-06 07:15:41 +10:00
Andrew Tridgell
7be1125084
AP_IOMCU: implement safety mask and safety pwm
2018-04-17 10:14:01 +10:00
Andrew Tridgell
214fb096eb
AP_IOMCU: added healthy API for use in arming checks
2018-04-17 08:44:44 +10:00
Andrew Tridgell
09e3a3cb78
AP_IOMCU: added IO firmware upload
2018-04-17 08:44:44 +10:00
Michael du Breuil
0e8a9c2ec4
AP_IOMCU: Encapsulate debug prints in a #ifdef, fix whitespace
2018-04-14 08:23:24 +10:00
Andrew Tridgell
f22964a350
AP_IOMCU: implement BRD_SAFETYOPTION
2018-04-14 06:22:07 +10:00
Andrew Tridgell
4a7a66cc16
AP_IOMCU: use a higher thread priority
...
this ensures PWM output gets out as fast as possible
2018-04-07 09:10:29 +10:00
Siddharth Purohit
0c914838b2
AP_IOMCU: fix data type for available bytes
2018-02-07 20:33:45 +11:00
Andrew Tridgell
442b280368
AP_IOMCU: improved error checking
...
and avoid pointless change of rates
2018-02-07 20:33:45 +11:00
Andrew Tridgell
5ffcff1a79
AP_IOMCU: use unbuffered UART writes
...
this lowers latency for servo outputs to the IOMCU
2018-02-07 20:33:45 +11:00
Andrew Tridgell
93fa74518a
AP_IOMCU: limit rate to IOMCU to 500Hz
...
when running with very high loop rates we can saturate the IO link
2018-01-20 17:40:07 +11:00
Andrew Tridgell
30903f2acb
AP_IOMCU: support oneshot mode
2018-01-20 17:40:07 +11:00
Andrew Tridgell
ff3b0ec1bd
AP_IOMCU: added set_default_rate method
2018-01-15 11:46:02 +11:00
Andrew Tridgell
320ada2002
AP_IOMCU: fixed crash with BRD_IO_ENABLE=0
2018-01-15 11:46:02 +11:00
Andrew Tridgell
82b5b94e24
AP_IOMCU: fixed race condition on thread startup
...
thread_ctx may not be set for first trigger_event()
2018-01-15 11:46:02 +11:00
Andrew Tridgell
d1fd843539
AP_IOMCU: support IMU heater
2018-01-15 11:46:02 +11:00
Andrew Tridgell
1568f578d7
AP_IOMCU: added retries on event failure
2018-01-15 11:46:02 +11:00
Andrew Tridgell
9b9b4a169e
AP_IOMCU: fixed build on systems without IO MCU
2018-01-15 11:46:02 +11:00
Andrew Tridgell
71a47303b4
AP_IOMCU: support servo voltage and rssi
2018-01-15 11:46:02 +11:00
Andrew Tridgell
bb3ed9d6a3
AP_IOMCU: added APIs for RC input
2018-01-15 11:46:02 +11:00
Andrew Tridgell
ceeade5822
AP_IOMCU: added periodic reading of RC input
2018-01-15 11:46:02 +11:00