@@ -16,6 +16,12 @@ local inc = { x = function(val) x = x + val return x end, y = function(val) y =
16
16
local labels = {}
17
17
local fields = {}
18
18
19
+ local gyroSampleRateKhz
20
+
21
+ if apiVersion >= 1.043 then
22
+ gyroSampleRateKhz = assert (loadScript (" /SCRIPTS/BF/BOARD_INFO/" .. mcuId .. " .lua" ))().gyroSampleRateHz / 1000
23
+ end
24
+
19
25
local escProtocols = { [0 ] = " PWM" , " OS125" , " OS42" , " MSHOT" }
20
26
21
27
if apiVersion >= 1.020 then
@@ -37,23 +43,24 @@ if apiVersion >= 1.043 then
37
43
escProtocols [# escProtocols + 1 ] = " DISABLED"
38
44
end
39
45
46
+ labels [# labels + 1 ] = { t = " System Config" , x = x , y = inc .y (lineSpacing ) }
40
47
if apiVersion >= 1.031 and apiVersion <= 1.040 then
41
- fields [# fields + 1 ] = { t = " 32kHz Sampling" , x = x , y = inc .y (lineSpacing ), sp = x + sp , min = 0 , max = 1 , vals = { 9 }, table = { [0 ] = " OFF" , " ON" }, upd = function (self ) self .updateRateTables (self ) end }
48
+ fields [# fields + 1 ] = { t = " 32kHz Sampling" , x = x + indent , y = inc .y (lineSpacing ), sp = x + sp , min = 0 , max = 1 , vals = { 9 }, table = { [0 ] = " OFF" , " ON" }, upd = function (self ) self .updateRateTables (self ) end }
42
49
end
43
-
44
- if apiVersion >= 1.016 then
45
- if apiVersion <= 1.042 then
46
- fields [# fields + 1 ] = { t = " Gyro Update" , x = x , y = inc .y (lineSpacing ), sp = x + sp , min = 1 , max = 32 , vals = { 1 }, table = {}, upd = function (self ) self .updatePidRateTable (self ) end , mult = - 1 }
47
- fields [# fields + 1 ] = { t = " PID Loop" , x = x , y = inc .y (lineSpacing ), sp = x + sp , min = 1 , max = 16 , vals = { 2 }, table = {}, mult = - 1 }
48
- end
49
- fields [# fields + 1 ] = { t = " Protocol" , x = x , y = inc .y (lineSpacing ), sp = x + sp , min = 0 , max = # escProtocols , vals = { 4 }, table = escProtocols }
50
- fields [# fields + 1 ] = { t = " Unsynced PWM" , x = x , y = inc .y (lineSpacing ), sp = x + sp , min = 0 , max = 1 , vals = { 3 }, table = { [0 ] = " OFF" , " ON" } }
51
- fields [# fields + 1 ] = { t = " PWM Frequency" , x = x , y = inc .y (lineSpacing ), sp = x + sp , min = 200 , max = 32000 , vals = { 5 , 6 }, }
50
+ if apiVersion >= 1.043 then
51
+ fields [# fields + 1 ] = { t = " Gyro Update" , x = x + indent , y = inc .y (lineSpacing ), sp = x + sp , min = 1 , max = 32 , vals = { 1 }, table = {}, upd = function (self ) self .updatePidRateTable (self ) end , mult = - 1 , ro = true }
52
+ else
53
+ fields [# fields + 1 ] = { t = " Gyro Update" , x = x + indent , y = inc .y (lineSpacing ), sp = x + sp , min = 1 , max = 32 , vals = { 1 }, table = {}, upd = function (self ) self .updatePidRateTable (self ) end , mult = - 1 }
52
54
end
55
+ fields [# fields + 1 ] = { t = " PID Loop" , x = x + indent , y = inc .y (lineSpacing ), sp = x + sp , min = 1 , max = 16 , vals = { 2 }, table = {}, mult = - 1 }
53
56
57
+ labels [# labels + 1 ] = { t = " ESC/Motor" , x = x , y = inc .y (lineSpacing ) }
58
+ fields [# fields + 1 ] = { t = " Protocol" , x = x + indent , y = inc .y (lineSpacing ), sp = x + sp , min = 0 , max = # escProtocols , vals = { 4 }, table = escProtocols }
54
59
if apiVersion >= 1.031 then
55
- fields [# fields + 1 ] = { t = " Idle Throttle %" , x = x , y = inc .y (lineSpacing ), sp = x + sp , min = 0 , max = 2000 , vals = { 7 , 8 }, scale = 100 }
60
+ fields [# fields + 1 ] = { t = " Idle Throttle %" , x = x + indent , y = inc .y (lineSpacing ), sp = x + sp , min = 0 , max = 2000 , vals = { 7 , 8 }, scale = 100 }
56
61
end
62
+ fields [# fields + 1 ] = { t = " Unsynced PWM" , x = x + indent , y = inc .y (lineSpacing ), sp = x + sp , min = 0 , max = 1 , vals = { 3 }, table = { [0 ] = " OFF" , " ON" } }
63
+ fields [# fields + 1 ] = { t = " Frequency" , x = x + indent * 2 , y = inc .y (lineSpacing ), sp = x + sp , min = 200 , max = 32000 , vals = { 5 , 6 }, }
57
64
58
65
return {
59
66
read = 90 , -- MSP_ADVANCED_CONFIG
@@ -81,6 +88,7 @@ return {
81
88
end ,
82
89
calculateGyroRates = function (self , baseRate )
83
90
local idx = self .getGyroDenomFieldIndex (self )
91
+ baseRate = gyroSampleRateKhz or baseRate
84
92
for i = 1 , 32 do
85
93
self .gyroRates [i ] = baseRate / i
86
94
self .fields [idx ].table [i ] = string.format (" %.2f" ,baseRate / i )
0 commit comments