Andrew Tridgell
79acaeaef1
AP_Scheduler: cope with high CPU load by stretching loop times
...
this adds an extra budget of time per loop when we are not achieving
scheduled tasks at a rate of at least 1/8 of the desired rate. This
fixes an issue where a vehicle can become uncontrollable if the user
asks for a SCHED_LOOP_RATE which is not achievable. As these events
happen we add extra loop budget until we are able to run all tasks. We
drop the extra time when the CPU pressure eases.
2019-09-19 18:25:20 +10:00
Andrew Tridgell
4027d61e17
AP_Scheduler: log I2C ISR count
2019-08-26 09:13:39 +10:00
Peter Barker
cc7044b360
AP_Scheduler: include internal error count in PM log message
2019-06-12 10:05:59 +10:00
Andrew Tridgell
4888583e17
AP_Scheduler: use task -3 for wait_for_sample()
2019-05-17 09:00:22 +10:00
Andrew Tridgell
e801821f0c
AP_Scheduler: log SPI and I2C counters in PM msg
2019-05-17 08:56:06 +10:00
Andrew Tridgell
49061aae67
AP_Scheduler: use persistent_data for current_task
2019-05-15 15:33:48 +10:00
Peter Barker
85b737db31
AP_Scheduler: add floating point specifier on constant
2019-04-05 23:04:17 -07:00
Tom Pittenger
e9bb6a7d69
AP_Scheduler: rename dataflash to logger
2019-03-28 16:40:57 +11:00
Peter Barker
82f8a7fa1b
AP_Scheduler: include internal errors in dataflash PM message
2019-03-21 21:34:33 +11:00
Tom Pittenger
155a1b7ec7
AP_Scheduler: unify singleton naming to _singleton and get_singleton()
2019-02-10 19:09:58 -07:00
Peter Barker
6fc76a32af
GLOBAL: use AP::logger() and strip redundant Log_ from methods
2019-01-18 18:08:20 +11:00
Peter Barker
b47733142f
GLOBAL: rename DataFlash_Class to AP_Logger
2019-01-18 18:08:20 +11:00
Peter Barker
7d52746267
AP_Scheduler: use AP_FWVersion singleton
2018-06-18 19:10:37 +01:00
Peter Barker
01e0c03a12
AP_Scheduler: add singleton
2018-06-15 08:01:22 +10:00
Peter Barker
2d4d99e836
AP_Scheduler: remove unused log_dropped variable
2018-05-15 08:35:05 +09:00
Andrew Tridgell
ce5db7b813
AP_Scheduler: fixed use of sqrt()
2018-05-07 11:43:23 +10:00
Andrew Tridgell
99884c89c9
AP_Scheduler: fixed build warning
2018-05-07 11:43:23 +10:00
Peter Barker
c4ea83177f
AP_Scheduler: remove unused ins error count logging
2018-04-04 14:21:20 +01:00
Peter Barker
d5c57d949b
AP_Scheduler: eliminate goto update_spare_ticks
2018-03-22 10:01:45 +11:00
Peter Barker
badfde6f18
AP_Scheduler: use continue instead of nested-if (NFC)
2018-03-22 10:01:45 +11:00
Peter Barker
224ea50260
AP_Scheduler: continue in place of nested if (NFC)
2018-03-22 10:01:45 +11:00
Mark Whitehorn
919383a739
AP_Scheduler: add load_average() to PM log message
2018-02-21 23:53:08 +10:00
Andrew Tridgell
6cc007598e
AP_Scheduler: initialise _last_loop_time_s in init()
2018-02-13 17:15:05 +11:00
Andrew Tridgell
8907cb3b23
AP_Scheduler: time in seconds should be a float
2018-02-13 17:15:05 +11:00
Peter Barker
8288198ac8
AP_Scheduler: force single-precision floating point calculations
2018-02-13 17:15:05 +11:00
Andrew Tridgell
491715bec7
AP_Scheduler: added get_last_loop_time_s()
...
this gives compatibility with previous G_Dt in copter
2018-02-13 17:15:05 +11:00
Andrew Tridgell
f436901517
AP_Scheduler: fixed perf info to match previous behaviour
2018-02-13 17:15:05 +11:00
Andrew Tridgell
e0c9d9b592
AP_Scheduler: fixed loop time available
2018-02-13 17:15:05 +11:00
Andrew Tridgell
24d6493453
AP_Scheduler: make loop times cover INS wait_for_sample
...
this matches past behaviour, and gives much more useful information to
a user wanting to know if their board it meeting its desired loop rate
2018-02-13 17:15:05 +11:00
Andrew Tridgell
434c3fffc7
AP_Scheduler: fixed filtered loop time
2018-02-13 17:15:05 +11:00
Andrew Tridgell
620d6ab4b8
AP_Scheduler: fixed merge issues
2018-02-13 17:15:05 +11:00
Peter Barker
73c0905b5e
AP_Scheduler: pass log-performance-bit at init time rather than update time
2018-02-13 17:15:05 +11:00
Peter Barker
4672e9d4eb
AP_Scheduler: resolve debug name conflict
2018-02-13 17:15:05 +11:00
Peter Barker
d3c1b720c6
AP_Scheduler: move logging of PM messages to AP_Scheduler
2018-02-13 17:15:05 +11:00
Peter Barker
d151b27e92
AP_Scheduler: move PERF: statustext sending into AP_Scheduler
2018-02-13 17:15:05 +11:00
Peter Barker
baa6e04854
AP_Scheduler: change loop time to remove sleeping in wait_for_sample
2018-02-13 17:15:05 +11:00
Peter Barker
4909000441
AP_Scheduler: implement loop()
2018-02-13 17:15:05 +11:00
Peter Barker
e713802c24
AP_Scheduler: add accessor for tick counter
2018-02-13 17:15:05 +11:00
Peter Barker
ae9d4d514d
AP_Scheduler: PerfInfo: allow specification of loop rate
2018-02-13 17:15:05 +11:00
Peter Barker
d1781532d4
AP_Scheduler: PerfInfo: add pragma-once to header
2018-02-13 17:15:05 +11:00
Andrew Tridgell
b3ed8fd3f9
AP_Scheduler: scale perf_info with loop rate
...
this allows it to be used for a wide range of loop rates
2018-02-08 17:36:33 +11:00
Andrew Tridgell
8dcf89b2b7
AP_Scheduler: put scheduler debug on console
2018-02-08 17:36:33 +11:00
Andrew Tridgell
8b0e9bcff4
AP_Scheduler: use pre-computed loop constants
...
this prevents changing the loop rate without a reboot. Too many
subsystems rely on a consistent loop rate to allow it to be changed
2018-01-20 15:35:58 +11:00
Peter Barker
f2242e07db
AP_Scheduler: remove memoisation in loop_period_s()
2018-01-20 15:35:58 +11:00
Peter Barker
a6ac37d0ba
AP_Scheduler: eliminate MAIN_LOOP_SECONDS macro
2018-01-20 15:35:58 +11:00
Andrew Tridgell
44dd079cb9
AP_Scheduler: allow for loop rates above 400Hz
...
with ChibiOS we can run copter at 1KHz with no scheduling misses. This
small PR allows that to be configured.
2018-01-20 10:40:37 +11:00
Andrew Tridgell
580af4a69a
AP_Scheduler: removed create() method for objects
...
See discussion here:
https://github.com/ArduPilot/ardupilot/issues/7331
we were getting some uninitialised variables. While it only showed up in
AP_SbusOut, it means we can't be sure it won't happen on other objects,
so safest to remove the approach
Thanks to assistance from Lucas, Peter and Francisco
2017-12-14 08:12:28 +11:00
Peter Barker
fd543fce6d
AP_Scheduler: create AP::PerfInfo class
2017-11-16 15:31:53 +00:00
Peter Barker
5c2f68e8f5
Copter+AP_Scheduler: move perf_info.cpp into Scheduler
2017-11-16 15:31:53 +00:00
Lucas De Marchi
69b6d95cb2
global: use static method to construct AP_Board_Config{,_CAN}
2017-09-26 03:01:21 +01:00