1 /* FreeEMS - the open source engine management system
3 Copyright 2008 Fred Cooke
5 This file is part of the FreeEMS project.
7 FreeEMS software is free software: you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation, either version 3 of the License, or
10 (at your option) any later version.
12 FreeEMS software is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with any FreeEMS software. If not, see http://www.gnu.org/licenses/
20 We ask that if you make any changes to this file you email them upstream to
21 us at admin(at)diyefi(dot)org or, even better, fork the code on github.com!
23 Thank you for choosing FreeEMS to run your engine! */
26 /** @file FuelTables.c
27 * @ingroup dataInitialisers
29 * @brief Fuel VE and Lambda tables
31 * This file contains the definitions of the primary group VE and lambda
32 * tables. The declaration can be found in the global constants header file.
34 * @note At least one Doxygen bug prevents the data structures below being show
35 * correctly in the documentation for this file. Please see the source
36 * code itself for more information.
42 #include "inc/freeEMS.h"
45 const volatile mainTable VETableMainFlash FUELTABLESD
= {
46 MAINTABLE_RPM_LENGTH
, /* VETableMain.RPMLength */
47 MAINTABLE_LOAD_LENGTH
, /* VETableMain.LoadLength */
51 1400, 1750, 2100, 2450,
52 2800, 3150, 3500, 3850,
53 4200, 4550, 4900, 5250,
54 5600, 5950, 6300, 6650,
55 7000, 7350, 7700, 8050,
58 /* VETableMain.Load */
60 1600, 3200, 4800, 6400,
61 8000, 9600, 11200, 12800,
62 14400, 16000, 17600, 19200,
63 20800, 22400, 24000, 25600,
64 27200, 28800, 30400, 32000,
67 /* VETableMain.Table (Laid out to make sense for 24 RPM and 19 Load bins, 8 extras on end to make up size.) */
69 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
70 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
71 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
72 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
73 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
74 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
76 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
77 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
78 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
79 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
80 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
81 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
83 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
84 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
85 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
86 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
87 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
88 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
90 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
91 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
92 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
93 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
94 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
95 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
96 49152, 49152, 49152, 49152, 49152, 0xFFFF /* 6 extras to allow different axis sizes. */
101 const volatile mainTable VETableSecondaryFlash FUELTABLESD
= {
102 MAINTABLE_RPM_LENGTH
, /* VETableSecondary.RPMLength */
103 MAINTABLE_LOAD_LENGTH
, /* VETableSecondary.LoadLength */
104 /* VETableSecondary.RPM */
107 1400, 1750, 2100, 2450,
108 2800, 3150, 3500, 3850,
109 4200, 4550, 4900, 5250,
110 5600, 5950, 6300, 6650,
111 7000, 7350, 7700, 8050,
114 /* VETableSecondary.Load */
116 1600, 3200, 4800, 6400,
117 8000, 9600, 11200, 12800,
118 14400, 16000, 17600, 19200,
119 20800, 22400, 24000, 25600,
120 27200, 28800, 30400, 32000,
123 /* VETableSecondary.Table */
125 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
126 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
127 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
128 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
129 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
130 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
132 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
133 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
134 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
135 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
136 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
137 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
139 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
140 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
141 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
142 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
143 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
144 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
146 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
147 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
148 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
149 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
150 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
151 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
152 49152, 49152, 49152, 49152, 49152, 0xEEEE /* 6 extras to allow different axis sizes. */
157 const volatile mainTable VETableTertiaryFlash FUELTABLESD
= {
158 MAINTABLE_RPM_LENGTH
, /* VETableTertiary.RPMLength */
159 MAINTABLE_LOAD_LENGTH
, /* VETableTertiary.LoadLength */
160 /* VETableTertiary.RPM */
163 1400, 1750, 2100, 2450,
164 2800, 3150, 3500, 3850,
165 4200, 4550, 4900, 5250,
166 5600, 5950, 6300, 6650,
167 7000, 7350, 7700, 8050,
170 /* VETableTertiary.Load */
172 1600, 3200, 4800, 6400,
173 8000, 9600, 11200, 12800,
174 14400, 16000, 17600, 19200,
175 20800, 22400, 24000, 25600,
176 27200, 28800, 30400, 32000,
179 /* VETableTertiary.Table */
181 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
182 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
183 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
184 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
185 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
186 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
188 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
189 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
190 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
191 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
192 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
193 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
195 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
196 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
197 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
198 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
199 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
200 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
202 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
203 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
204 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
205 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
206 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
207 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152, 49152,
208 49152, 49152, 49152, 49152, 49152, 0xDDDD /* 6 extras to allow different axis sizes. */
213 const volatile mainTable LambdaTableFlash FUELTABLESD
= {
214 MAINTABLE_RPM_LENGTH
, /* LambdaTable.RPMLength */
215 MAINTABLE_LOAD_LENGTH
, /* LambdaTable.LoadLength */
216 /* LambdaTable.RPM */
219 1400, 1750, 2100, 2450,
220 2800, 3150, 3500, 3850,
221 4200, 4550, 4900, 5250,
222 5600, 5950, 6300, 6650,
223 7000, 7350, 7700, 8050,
226 /* LambdaTable.Load */
228 1600, 3200, 4800, 6400,
229 8000, 9600, 11200, 12800,
230 14400, 16000, 17600, 19200,
231 20800, 22400, 24000, 25600,
232 27200, 28800, 30400, 32000,
235 /* LambdaTable.Table */
236 { /* Laid out to make sense for 24 RPM and 19 Load bins, 8 extras on end to make up size. */
237 /* 14.7, 14.7, 14.35, 14.0, 13.5, 13.0, 12.5, 12.25, 12.0, 11.75, 11.5, 11.25, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, 11.0, */
238 32768, 32768, 31987, 31207, 30093, 28978, 27863, 27307, 26749, 26192, 25635, 25078, 24520, 24520, 24520, 24520, 24520, 24520, 24520,
239 32768, 32768, 31987, 31207, 30093, 28978, 27863, 27307, 26749, 26192, 25635, 25078, 24520, 24520, 24520, 24520, 24520, 24520, 24520,
240 32768, 32768, 31987, 31207, 30093, 28978, 27863, 27307, 26749, 26192, 25635, 25078, 24520, 24520, 24520, 24520, 24520, 24520, 24520,
241 32768, 32768, 31987, 31207, 30093, 28978, 27863, 27307, 26749, 26192, 25635, 25078, 24520, 24520, 24520, 24520, 24520, 24520, 24520,
242 32768, 32768, 31987, 31207, 30093, 28978, 27863, 27307, 26749, 26192, 25635, 25078, 24520, 24520, 24520, 24520, 24520, 24520, 24520,
243 32768, 32768, 31987, 31207, 30093, 28978, 27863, 27307, 26749, 26192, 25635, 25078, 24520, 24520, 24520, 24520, 24520, 24520, 24520,
245 32768, 32768, 31987, 31207, 30093, 28978, 27863, 27307, 26749, 26192, 25635, 25078, 24520, 24520, 24520, 24520, 24520, 24520, 24520,
246 32768, 32768, 31987, 31207, 30093, 28978, 27863, 27307, 26749, 26192, 25635, 25078, 24520, 24520, 24520, 24520, 24520, 24520, 24520,
247 32768, 32768, 31987, 31207, 30093, 28978, 27863, 27307, 26749, 26192, 25635, 25078, 24520, 24520, 24520, 24520, 24520, 24520, 24520,
248 32768, 32768, 31987, 31207, 30093, 28978, 27863, 27307, 26749, 26192, 25635, 25078, 24520, 24520, 24520, 24520, 24520, 24520, 24520,
249 32768, 32768, 31987, 31207, 30093, 28978, 27863, 27307, 26749, 26192, 25635, 25078, 24520, 24520, 24520, 24520, 24520, 24520, 24520,
250 32768, 32768, 31987, 31207, 30093, 28978, 27863, 27307, 26749, 26192, 25635, 25078, 24520, 24520, 24520, 24520, 24520, 24520, 24520,
252 32768, 32768, 31987, 31207, 30093, 28978, 27863, 27307, 26749, 26192, 25635, 25078, 24520, 24520, 24520, 24520, 24520, 24520, 24520,
253 32768, 32768, 31987, 31207, 30093, 28978, 27863, 27307, 26749, 26192, 25635, 25078, 24520, 24520, 24520, 24520, 24520, 24520, 24520,
254 32768, 32768, 31987, 31207, 30093, 28978, 27863, 27307, 26749, 26192, 25635, 25078, 24520, 24520, 24520, 24520, 24520, 24520, 24520,
255 32768, 32768, 31987, 31207, 30093, 28978, 27863, 27307, 26749, 26192, 25635, 25078, 24520, 24520, 24520, 24520, 24520, 24520, 24520,
256 32768, 32768, 31987, 31207, 30093, 28978, 27863, 27307, 26749, 26192, 25635, 25078, 24520, 24520, 24520, 24520, 24520, 24520, 24520,
257 32768, 32768, 31987, 31207, 30093, 28978, 27863, 27307, 26749, 26192, 25635, 25078, 24520, 24520, 24520, 24520, 24520, 24520, 24520,
259 32768, 32768, 31987, 31207, 30093, 28978, 27863, 27307, 26749, 26192, 25635, 25078, 24520, 24520, 24520, 24520, 24520, 24520, 24520,
260 32768, 32768, 31987, 31207, 30093, 28978, 27863, 27307, 26749, 26192, 25635, 25078, 24520, 24520, 24520, 24520, 24520, 24520, 24520,
261 32768, 32768, 31987, 31207, 30093, 28978, 27863, 27307, 26749, 26192, 25635, 25078, 24520, 24520, 24520, 24520, 24520, 24520, 24520,
262 32768, 32768, 31987, 31207, 30093, 28978, 27863, 27307, 26749, 26192, 25635, 25078, 24520, 24520, 24520, 24520, 24520, 24520, 24520,
263 32768, 32768, 31987, 31207, 30093, 28978, 27863, 27307, 26749, 26192, 25635, 25078, 24520, 24520, 24520, 24520, 24520, 24520, 24520,
264 32768, 32768, 31987, 31207, 30093, 28978, 27863, 27307, 26749, 26192, 25635, 25078, 24520, 24520, 24520, 24520, 24520, 24520, 24520,
265 24520, 24520, 24520, 24520, 24520, 0x9999 /* 6 extras to allow different axis sizes. Rich by default.*/