From 022f83ca6fd589005d8eb3e25e633950fef69fa7 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Fri, 17 Apr 2009 23:38:14 -0700 Subject: [PATCH] Add gps, debug dongle support and pressure alt tables GPS also pulled in serial support. The altitude tables take raw 11-bit pressure sample numbers and convert them to standard pressure altitude values. Signed-off-by: Keith Packard --- Makefile | 12 +- altitude.h | 2048 +++++++++++++++++++++++++++++++++++++++++++++++++ ao.h | 96 ++- ao_cmd.c | 40 +- ao_convert.c | 47 ++ ao_dbg.c | 216 ++++++ ao_flight.c | 68 +- ao_gps.c | 79 ++ ao_log.c | 11 +- ao_main.c | 2 + ao_serial.c | 123 +++ ao_task.c | 30 +- ao_timer.c | 8 +- ao_usb.c | 2 +- gps-cksum | 17 + make-altitude | 192 +++++ 16 files changed, 2946 insertions(+), 45 deletions(-) create mode 100644 altitude.h create mode 100644 ao_convert.c create mode 100644 ao_dbg.c create mode 100644 ao_gps.c create mode 100644 ao_serial.c create mode 100755 gps-cksum create mode 100644 make-altitude diff --git a/Makefile b/Makefile index f8c9c73a..b35b1446 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,7 @@ NO_OPT=--nogcse --noinvariant --noinduction --nojtbound --noloopreverse \ --nolabelopt --nooverlay --peep-asm DEBUG=--debug -CFLAGS=--model-small $(DEBUG) --less-pedantic +CFLAGS=--model-small $(DEBUG) --less-pedantic --opt-code-speed LDFLAGS=--out-fmt-ihx LDFLAGS_FLASH=$(LDFLAGS) --code-loc 0x0000 --code-size 0x8000 \ @@ -12,20 +12,25 @@ LDFLAGS_FLASH=$(LDFLAGS) --code-loc 0x0000 --code-size 0x8000 \ INC = \ ao.h \ - cc1111.h + cc1111.h \ + altitude.h SRC = \ ao_adc.c \ ao_beep.c \ ao_cmd.c \ + ao_convert.c \ + ao_dbg.c \ ao_dma.c \ ao_ee.c \ ao_flight.c \ + ao_gps.c \ ao_led.c \ ao_log.c \ ao_mutex.c \ ao_panic.c \ ao_report.c \ + ao_serial.c \ ao_task.c \ ao_timer.c \ ao_usb.c \ @@ -56,6 +61,9 @@ $(PROG).ihx: $(REL) Makefile $(CC) $(LDFLAGS_FLASH) $(CFLAGS) -o $(PROG).ihx $(REL) sh check-stack ao.h $(PROG).mem +altitude.h: make-altitude + nickle make-altitude > altitude.h + clean: rm -f $(ADB) $(ASM) $(LNK) $(LST) $(REL) $(RST) $(SYM) rm -f $(PROGS) $(PCDB) $(PLNK) $(PMAP) $(PMEM) $(PAOM) diff --git a/altitude.h b/altitude.h new file mode 100644 index 00000000..5225df4d --- /dev/null +++ b/altitude.h @@ -0,0 +1,2048 @@ + 15837, /* 10.56 kPa 0 count */ + 15804, /* 10.61 kPa 1 count */ + 15772, /* 10.66 kPa 2 count */ + 15740, /* 10.72 kPa 3 count */ + 15708, /* 10.77 kPa 4 count */ + 15676, /* 10.83 kPa 5 count */ + 15644, /* 10.88 kPa 6 count */ + 15613, /* 10.94 kPa 7 count */ + 15581, /* 10.99 kPa 8 count */ + 15550, /* 11.04 kPa 9 count */ + 15519, /* 11.10 kPa 10 count */ + 15488, /* 11.15 kPa 11 count */ + 15457, /* 11.21 kPa 12 count */ + 15426, /* 11.26 kPa 13 count */ + 15396, /* 11.32 kPa 14 count */ + 15366, /* 11.37 kPa 15 count */ + 15335, /* 11.42 kPa 16 count */ + 15305, /* 11.48 kPa 17 count */ + 15275, /* 11.53 kPa 18 count */ + 15246, /* 11.59 kPa 19 count */ + 15216, /* 11.64 kPa 20 count */ + 15187, /* 11.70 kPa 21 count */ + 15157, /* 11.75 kPa 22 count */ + 15128, /* 11.80 kPa 23 count */ + 15099, /* 11.86 kPa 24 count */ + 15070, /* 11.91 kPa 25 count */ + 15041, /* 11.97 kPa 26 count */ + 15012, /* 12.02 kPa 27 count */ + 14984, /* 12.08 kPa 28 count */ + 14955, /* 12.13 kPa 29 count */ + 14927, /* 12.18 kPa 30 count */ + 14899, /* 12.24 kPa 31 count */ + 14871, /* 12.29 kPa 32 count */ + 14843, /* 12.35 kPa 33 count */ + 14815, /* 12.40 kPa 34 count */ + 14787, /* 12.46 kPa 35 count */ + 14760, /* 12.51 kPa 36 count */ + 14732, /* 12.56 kPa 37 count */ + 14705, /* 12.62 kPa 38 count */ + 14678, /* 12.67 kPa 39 count */ + 14651, /* 12.73 kPa 40 count */ + 14624, /* 12.78 kPa 41 count */ + 14597, /* 12.84 kPa 42 count */ + 14570, /* 12.89 kPa 43 count */ + 14543, /* 12.94 kPa 44 count */ + 14517, /* 13.00 kPa 45 count */ + 14490, /* 13.05 kPa 46 count */ + 14464, /* 13.11 kPa 47 count */ + 14438, /* 13.16 kPa 48 count */ + 14412, /* 13.22 kPa 49 count */ + 14386, /* 13.27 kPa 50 count */ + 14360, /* 13.32 kPa 51 count */ + 14334, /* 13.38 kPa 52 count */ + 14308, /* 13.43 kPa 53 count */ + 14283, /* 13.49 kPa 54 count */ + 14257, /* 13.54 kPa 55 count */ + 14232, /* 13.60 kPa 56 count */ + 14207, /* 13.65 kPa 57 count */ + 14182, /* 13.70 kPa 58 count */ + 14156, /* 13.76 kPa 59 count */ + 14132, /* 13.81 kPa 60 count */ + 14107, /* 13.87 kPa 61 count */ + 14082, /* 13.92 kPa 62 count */ + 14057, /* 13.98 kPa 63 count */ + 14033, /* 14.03 kPa 64 count */ + 14008, /* 14.08 kPa 65 count */ + 13984, /* 14.14 kPa 66 count */ + 13959, /* 14.19 kPa 67 count */ + 13935, /* 14.25 kPa 68 count */ + 13911, /* 14.30 kPa 69 count */ + 13887, /* 14.36 kPa 70 count */ + 13863, /* 14.41 kPa 71 count */ + 13839, /* 14.46 kPa 72 count */ + 13816, /* 14.52 kPa 73 count */ + 13792, /* 14.57 kPa 74 count */ + 13768, /* 14.63 kPa 75 count */ + 13745, /* 14.68 kPa 76 count */ + 13721, /* 14.74 kPa 77 count */ + 13698, /* 14.79 kPa 78 count */ + 13675, /* 14.84 kPa 79 count */ + 13652, /* 14.90 kPa 80 count */ + 13629, /* 14.95 kPa 81 count */ + 13606, /* 15.01 kPa 82 count */ + 13583, /* 15.06 kPa 83 count */ + 13560, /* 15.12 kPa 84 count */ + 13537, /* 15.17 kPa 85 count */ + 13515, /* 15.22 kPa 86 count */ + 13492, /* 15.28 kPa 87 count */ + 13470, /* 15.33 kPa 88 count */ + 13447, /* 15.39 kPa 89 count */ + 13425, /* 15.44 kPa 90 count */ + 13403, /* 15.50 kPa 91 count */ + 13380, /* 15.55 kPa 92 count */ + 13358, /* 15.60 kPa 93 count */ + 13336, /* 15.66 kPa 94 count */ + 13314, /* 15.71 kPa 95 count */ + 13292, /* 15.77 kPa 96 count */ + 13271, /* 15.82 kPa 97 count */ + 13249, /* 15.87 kPa 98 count */ + 13227, /* 15.93 kPa 99 count */ + 13206, /* 15.98 kPa 100 count */ + 13184, /* 16.04 kPa 101 count */ + 13163, /* 16.09 kPa 102 count */ + 13141, /* 16.15 kPa 103 count */ + 13120, /* 16.20 kPa 104 count */ + 13099, /* 16.25 kPa 105 count */ + 13078, /* 16.31 kPa 106 count */ + 13057, /* 16.36 kPa 107 count */ + 13036, /* 16.42 kPa 108 count */ + 13015, /* 16.47 kPa 109 count */ + 12994, /* 16.53 kPa 110 count */ + 12973, /* 16.58 kPa 111 count */ + 12952, /* 16.63 kPa 112 count */ + 12932, /* 16.69 kPa 113 count */ + 12911, /* 16.74 kPa 114 count */ + 12891, /* 16.80 kPa 115 count */ + 12870, /* 16.85 kPa 116 count */ + 12850, /* 16.91 kPa 117 count */ + 12829, /* 16.96 kPa 118 count */ + 12809, /* 17.01 kPa 119 count */ + 12789, /* 17.07 kPa 120 count */ + 12769, /* 17.12 kPa 121 count */ + 12749, /* 17.18 kPa 122 count */ + 12729, /* 17.23 kPa 123 count */ + 12709, /* 17.29 kPa 124 count */ + 12689, /* 17.34 kPa 125 count */ + 12669, /* 17.39 kPa 126 count */ + 12649, /* 17.45 kPa 127 count */ + 12630, /* 17.50 kPa 128 count */ + 12610, /* 17.56 kPa 129 count */ + 12590, /* 17.61 kPa 130 count */ + 12571, /* 17.67 kPa 131 count */ + 12551, /* 17.72 kPa 132 count */ + 12532, /* 17.77 kPa 133 count */ + 12513, /* 17.83 kPa 134 count */ + 12493, /* 17.88 kPa 135 count */ + 12474, /* 17.94 kPa 136 count */ + 12455, /* 17.99 kPa 137 count */ + 12436, /* 18.05 kPa 138 count */ + 12417, /* 18.10 kPa 139 count */ + 12398, /* 18.15 kPa 140 count */ + 12379, /* 18.21 kPa 141 count */ + 12360, /* 18.26 kPa 142 count */ + 12341, /* 18.32 kPa 143 count */ + 12323, /* 18.37 kPa 144 count */ + 12304, /* 18.43 kPa 145 count */ + 12285, /* 18.48 kPa 146 count */ + 12267, /* 18.53 kPa 147 count */ + 12248, /* 18.59 kPa 148 count */ + 12230, /* 18.64 kPa 149 count */ + 12211, /* 18.70 kPa 150 count */ + 12193, /* 18.75 kPa 151 count */ + 12174, /* 18.81 kPa 152 count */ + 12156, /* 18.86 kPa 153 count */ + 12138, /* 18.91 kPa 154 count */ + 12120, /* 18.97 kPa 155 count */ + 12102, /* 19.02 kPa 156 count */ + 12084, /* 19.08 kPa 157 count */ + 12065, /* 19.13 kPa 158 count */ + 12048, /* 19.19 kPa 159 count */ + 12030, /* 19.24 kPa 160 count */ + 12012, /* 19.29 kPa 161 count */ + 11994, /* 19.35 kPa 162 count */ + 11976, /* 19.40 kPa 163 count */ + 11958, /* 19.46 kPa 164 count */ + 11941, /* 19.51 kPa 165 count */ + 11923, /* 19.57 kPa 166 count */ + 11906, /* 19.62 kPa 167 count */ + 11888, /* 19.67 kPa 168 count */ + 11871, /* 19.73 kPa 169 count */ + 11853, /* 19.78 kPa 170 count */ + 11836, /* 19.84 kPa 171 count */ + 11818, /* 19.89 kPa 172 count */ + 11801, /* 19.95 kPa 173 count */ + 11784, /* 20.00 kPa 174 count */ + 11767, /* 20.05 kPa 175 count */ + 11750, /* 20.11 kPa 176 count */ + 11733, /* 20.16 kPa 177 count */ + 11715, /* 20.22 kPa 178 count */ + 11698, /* 20.27 kPa 179 count */ + 11682, /* 20.33 kPa 180 count */ + 11665, /* 20.38 kPa 181 count */ + 11648, /* 20.43 kPa 182 count */ + 11631, /* 20.49 kPa 183 count */ + 11614, /* 20.54 kPa 184 count */ + 11597, /* 20.60 kPa 185 count */ + 11581, /* 20.65 kPa 186 count */ + 11564, /* 20.71 kPa 187 count */ + 11547, /* 20.76 kPa 188 count */ + 11531, /* 20.81 kPa 189 count */ + 11514, /* 20.87 kPa 190 count */ + 11498, /* 20.92 kPa 191 count */ + 11481, /* 20.98 kPa 192 count */ + 11465, /* 21.03 kPa 193 count */ + 11449, /* 21.09 kPa 194 count */ + 11432, /* 21.14 kPa 195 count */ + 11416, /* 21.19 kPa 196 count */ + 11400, /* 21.25 kPa 197 count */ + 11384, /* 21.30 kPa 198 count */ + 11368, /* 21.36 kPa 199 count */ + 11352, /* 21.41 kPa 200 count */ + 11336, /* 21.47 kPa 201 count */ + 11319, /* 21.52 kPa 202 count */ + 11304, /* 21.57 kPa 203 count */ + 11288, /* 21.63 kPa 204 count */ + 11272, /* 21.68 kPa 205 count */ + 11256, /* 21.74 kPa 206 count */ + 11240, /* 21.79 kPa 207 count */ + 11224, /* 21.85 kPa 208 count */ + 11208, /* 21.90 kPa 209 count */ + 11193, /* 21.95 kPa 210 count */ + 11177, /* 22.01 kPa 211 count */ + 11162, /* 22.06 kPa 212 count */ + 11146, /* 22.12 kPa 213 count */ + 11130, /* 22.17 kPa 214 count */ + 11115, /* 22.23 kPa 215 count */ + 11099, /* 22.28 kPa 216 count */ + 11084, /* 22.33 kPa 217 count */ + 11069, /* 22.39 kPa 218 count */ + 11053, /* 22.44 kPa 219 count */ + 11038, /* 22.50 kPa 220 count */ + 11023, /* 22.55 kPa 221 count */ + 11007, /* 22.61 kPa 222 count */ + 10992, /* 22.66 kPa 223 count */ + 10977, /* 22.71 kPa 224 count */ + 10962, /* 22.77 kPa 225 count */ + 10947, /* 22.82 kPa 226 count */ + 10932, /* 22.88 kPa 227 count */ + 10917, /* 22.93 kPa 228 count */ + 10902, /* 22.99 kPa 229 count */ + 10887, /* 23.04 kPa 230 count */ + 10872, /* 23.09 kPa 231 count */ + 10857, /* 23.15 kPa 232 count */ + 10842, /* 23.20 kPa 233 count */ + 10827, /* 23.26 kPa 234 count */ + 10812, /* 23.31 kPa 235 count */ + 10797, /* 23.37 kPa 236 count */ + 10782, /* 23.42 kPa 237 count */ + 10768, /* 23.47 kPa 238 count */ + 10753, /* 23.53 kPa 239 count */ + 10738, /* 23.58 kPa 240 count */ + 10723, /* 23.64 kPa 241 count */ + 10709, /* 23.69 kPa 242 count */ + 10694, /* 23.75 kPa 243 count */ + 10679, /* 23.80 kPa 244 count */ + 10665, /* 23.85 kPa 245 count */ + 10650, /* 23.91 kPa 246 count */ + 10636, /* 23.96 kPa 247 count */ + 10621, /* 24.02 kPa 248 count */ + 10607, /* 24.07 kPa 249 count */ + 10592, /* 24.13 kPa 250 count */ + 10578, /* 24.18 kPa 251 count */ + 10563, /* 24.23 kPa 252 count */ + 10549, /* 24.29 kPa 253 count */ + 10535, /* 24.34 kPa 254 count */ + 10520, /* 24.40 kPa 255 count */ + 10506, /* 24.45 kPa 256 count */ + 10492, /* 24.51 kPa 257 count */ + 10478, /* 24.56 kPa 258 count */ + 10463, /* 24.61 kPa 259 count */ + 10449, /* 24.67 kPa 260 count */ + 10435, /* 24.72 kPa 261 count */ + 10421, /* 24.78 kPa 262 count */ + 10407, /* 24.83 kPa 263 count */ + 10393, /* 24.89 kPa 264 count */ + 10379, /* 24.94 kPa 265 count */ + 10364, /* 24.99 kPa 266 count */ + 10350, /* 25.05 kPa 267 count */ + 10336, /* 25.10 kPa 268 count */ + 10322, /* 25.16 kPa 269 count */ + 10309, /* 25.21 kPa 270 count */ + 10295, /* 25.27 kPa 271 count */ + 10281, /* 25.32 kPa 272 count */ + 10267, /* 25.37 kPa 273 count */ + 10253, /* 25.43 kPa 274 count */ + 10239, /* 25.48 kPa 275 count */ + 10225, /* 25.54 kPa 276 count */ + 10212, /* 25.59 kPa 277 count */ + 10198, /* 25.65 kPa 278 count */ + 10184, /* 25.70 kPa 279 count */ + 10170, /* 25.75 kPa 280 count */ + 10157, /* 25.81 kPa 281 count */ + 10143, /* 25.86 kPa 282 count */ + 10129, /* 25.92 kPa 283 count */ + 10116, /* 25.97 kPa 284 count */ + 10102, /* 26.03 kPa 285 count */ + 10089, /* 26.08 kPa 286 count */ + 10075, /* 26.13 kPa 287 count */ + 10062, /* 26.19 kPa 288 count */ + 10048, /* 26.24 kPa 289 count */ + 10035, /* 26.30 kPa 290 count */ + 10021, /* 26.35 kPa 291 count */ + 10008, /* 26.41 kPa 292 count */ + 9994, /* 26.46 kPa 293 count */ + 9981, /* 26.51 kPa 294 count */ + 9967, /* 26.57 kPa 295 count */ + 9954, /* 26.62 kPa 296 count */ + 9941, /* 26.68 kPa 297 count */ + 9928, /* 26.73 kPa 298 count */ + 9914, /* 26.79 kPa 299 count */ + 9901, /* 26.84 kPa 300 count */ + 9888, /* 26.89 kPa 301 count */ + 9875, /* 26.95 kPa 302 count */ + 9861, /* 27.00 kPa 303 count */ + 9848, /* 27.06 kPa 304 count */ + 9835, /* 27.11 kPa 305 count */ + 9822, /* 27.17 kPa 306 count */ + 9809, /* 27.22 kPa 307 count */ + 9796, /* 27.27 kPa 308 count */ + 9783, /* 27.33 kPa 309 count */ + 9770, /* 27.38 kPa 310 count */ + 9757, /* 27.44 kPa 311 count */ + 9744, /* 27.49 kPa 312 count */ + 9731, /* 27.55 kPa 313 count */ + 9718, /* 27.60 kPa 314 count */ + 9705, /* 27.65 kPa 315 count */ + 9692, /* 27.71 kPa 316 count */ + 9679, /* 27.76 kPa 317 count */ + 9666, /* 27.82 kPa 318 count */ + 9653, /* 27.87 kPa 319 count */ + 9640, /* 27.93 kPa 320 count */ + 9627, /* 27.98 kPa 321 count */ + 9615, /* 28.03 kPa 322 count */ + 9602, /* 28.09 kPa 323 count */ + 9589, /* 28.14 kPa 324 count */ + 9576, /* 28.20 kPa 325 count */ + 9564, /* 28.25 kPa 326 count */ + 9551, /* 28.31 kPa 327 count */ + 9538, /* 28.36 kPa 328 count */ + 9526, /* 28.41 kPa 329 count */ + 9513, /* 28.47 kPa 330 count */ + 9500, /* 28.52 kPa 331 count */ + 9488, /* 28.58 kPa 332 count */ + 9475, /* 28.63 kPa 333 count */ + 9463, /* 28.69 kPa 334 count */ + 9450, /* 28.74 kPa 335 count */ + 9438, /* 28.79 kPa 336 count */ + 9425, /* 28.85 kPa 337 count */ + 9413, /* 28.90 kPa 338 count */ + 9400, /* 28.96 kPa 339 count */ + 9388, /* 29.01 kPa 340 count */ + 9375, /* 29.07 kPa 341 count */ + 9363, /* 29.12 kPa 342 count */ + 9350, /* 29.17 kPa 343 count */ + 9338, /* 29.23 kPa 344 count */ + 9326, /* 29.28 kPa 345 count */ + 9313, /* 29.34 kPa 346 count */ + 9301, /* 29.39 kPa 347 count */ + 9289, /* 29.44 kPa 348 count */ + 9276, /* 29.50 kPa 349 count */ + 9264, /* 29.55 kPa 350 count */ + 9252, /* 29.61 kPa 351 count */ + 9240, /* 29.66 kPa 352 count */ + 9227, /* 29.72 kPa 353 count */ + 9215, /* 29.77 kPa 354 count */ + 9203, /* 29.82 kPa 355 count */ + 9191, /* 29.88 kPa 356 count */ + 9179, /* 29.93 kPa 357 count */ + 9167, /* 29.99 kPa 358 count */ + 9155, /* 30.04 kPa 359 count */ + 9142, /* 30.10 kPa 360 count */ + 9130, /* 30.15 kPa 361 count */ + 9118, /* 30.20 kPa 362 count */ + 9106, /* 30.26 kPa 363 count */ + 9094, /* 30.31 kPa 364 count */ + 9082, /* 30.37 kPa 365 count */ + 9070, /* 30.42 kPa 366 count */ + 9058, /* 30.48 kPa 367 count */ + 9046, /* 30.53 kPa 368 count */ + 9035, /* 30.58 kPa 369 count */ + 9023, /* 30.64 kPa 370 count */ + 9011, /* 30.69 kPa 371 count */ + 8999, /* 30.75 kPa 372 count */ + 8987, /* 30.80 kPa 373 count */ + 8975, /* 30.86 kPa 374 count */ + 8963, /* 30.91 kPa 375 count */ + 8952, /* 30.96 kPa 376 count */ + 8940, /* 31.02 kPa 377 count */ + 8928, /* 31.07 kPa 378 count */ + 8916, /* 31.13 kPa 379 count */ + 8904, /* 31.18 kPa 380 count */ + 8893, /* 31.24 kPa 381 count */ + 8881, /* 31.29 kPa 382 count */ + 8869, /* 31.34 kPa 383 count */ + 8858, /* 31.40 kPa 384 count */ + 8846, /* 31.45 kPa 385 count */ + 8834, /* 31.51 kPa 386 count */ + 8823, /* 31.56 kPa 387 count */ + 8811, /* 31.62 kPa 388 count */ + 8800, /* 31.67 kPa 389 count */ + 8788, /* 31.72 kPa 390 count */ + 8776, /* 31.78 kPa 391 count */ + 8765, /* 31.83 kPa 392 count */ + 8753, /* 31.89 kPa 393 count */ + 8742, /* 31.94 kPa 394 count */ + 8730, /* 32.00 kPa 395 count */ + 8719, /* 32.05 kPa 396 count */ + 8707, /* 32.10 kPa 397 count */ + 8696, /* 32.16 kPa 398 count */ + 8684, /* 32.21 kPa 399 count */ + 8673, /* 32.27 kPa 400 count */ + 8662, /* 32.32 kPa 401 count */ + 8650, /* 32.38 kPa 402 count */ + 8639, /* 32.43 kPa 403 count */ + 8628, /* 32.48 kPa 404 count */ + 8616, /* 32.54 kPa 405 count */ + 8605, /* 32.59 kPa 406 count */ + 8594, /* 32.65 kPa 407 count */ + 8582, /* 32.70 kPa 408 count */ + 8571, /* 32.76 kPa 409 count */ + 8560, /* 32.81 kPa 410 count */ + 8548, /* 32.86 kPa 411 count */ + 8537, /* 32.92 kPa 412 count */ + 8526, /* 32.97 kPa 413 count */ + 8515, /* 33.03 kPa 414 count */ + 8504, /* 33.08 kPa 415 count */ + 8492, /* 33.14 kPa 416 count */ + 8481, /* 33.19 kPa 417 count */ + 8470, /* 33.24 kPa 418 count */ + 8459, /* 33.30 kPa 419 count */ + 8448, /* 33.35 kPa 420 count */ + 8437, /* 33.41 kPa 421 count */ + 8426, /* 33.46 kPa 422 count */ + 8415, /* 33.52 kPa 423 count */ + 8403, /* 33.57 kPa 424 count */ + 8392, /* 33.62 kPa 425 count */ + 8381, /* 33.68 kPa 426 count */ + 8370, /* 33.73 kPa 427 count */ + 8359, /* 33.79 kPa 428 count */ + 8348, /* 33.84 kPa 429 count */ + 8337, /* 33.90 kPa 430 count */ + 8326, /* 33.95 kPa 431 count */ + 8316, /* 34.00 kPa 432 count */ + 8305, /* 34.06 kPa 433 count */ + 8294, /* 34.11 kPa 434 count */ + 8283, /* 34.17 kPa 435 count */ + 8272, /* 34.22 kPa 436 count */ + 8261, /* 34.28 kPa 437 count */ + 8250, /* 34.33 kPa 438 count */ + 8239, /* 34.38 kPa 439 count */ + 8228, /* 34.44 kPa 440 count */ + 8218, /* 34.49 kPa 441 count */ + 8207, /* 34.55 kPa 442 count */ + 8196, /* 34.60 kPa 443 count */ + 8185, /* 34.66 kPa 444 count */ + 8175, /* 34.71 kPa 445 count */ + 8164, /* 34.76 kPa 446 count */ + 8153, /* 34.82 kPa 447 count */ + 8142, /* 34.87 kPa 448 count */ + 8132, /* 34.93 kPa 449 count */ + 8121, /* 34.98 kPa 450 count */ + 8110, /* 35.04 kPa 451 count */ + 8100, /* 35.09 kPa 452 count */ + 8089, /* 35.14 kPa 453 count */ + 8078, /* 35.20 kPa 454 count */ + 8068, /* 35.25 kPa 455 count */ + 8057, /* 35.31 kPa 456 count */ + 8046, /* 35.36 kPa 457 count */ + 8036, /* 35.42 kPa 458 count */ + 8025, /* 35.47 kPa 459 count */ + 8015, /* 35.52 kPa 460 count */ + 8004, /* 35.58 kPa 461 count */ + 7994, /* 35.63 kPa 462 count */ + 7983, /* 35.69 kPa 463 count */ + 7973, /* 35.74 kPa 464 count */ + 7962, /* 35.80 kPa 465 count */ + 7952, /* 35.85 kPa 466 count */ + 7941, /* 35.90 kPa 467 count */ + 7931, /* 35.96 kPa 468 count */ + 7920, /* 36.01 kPa 469 count */ + 7910, /* 36.07 kPa 470 count */ + 7899, /* 36.12 kPa 471 count */ + 7889, /* 36.18 kPa 472 count */ + 7879, /* 36.23 kPa 473 count */ + 7868, /* 36.28 kPa 474 count */ + 7858, /* 36.34 kPa 475 count */ + 7847, /* 36.39 kPa 476 count */ + 7837, /* 36.45 kPa 477 count */ + 7827, /* 36.50 kPa 478 count */ + 7816, /* 36.56 kPa 479 count */ + 7806, /* 36.61 kPa 480 count */ + 7796, /* 36.66 kPa 481 count */ + 7785, /* 36.72 kPa 482 count */ + 7775, /* 36.77 kPa 483 count */ + 7765, /* 36.83 kPa 484 count */ + 7755, /* 36.88 kPa 485 count */ + 7744, /* 36.94 kPa 486 count */ + 7734, /* 36.99 kPa 487 count */ + 7724, /* 37.04 kPa 488 count */ + 7714, /* 37.10 kPa 489 count */ + 7704, /* 37.15 kPa 490 count */ + 7693, /* 37.21 kPa 491 count */ + 7683, /* 37.26 kPa 492 count */ + 7673, /* 37.32 kPa 493 count */ + 7663, /* 37.37 kPa 494 count */ + 7653, /* 37.42 kPa 495 count */ + 7643, /* 37.48 kPa 496 count */ + 7633, /* 37.53 kPa 497 count */ + 7623, /* 37.59 kPa 498 count */ + 7613, /* 37.64 kPa 499 count */ + 7602, /* 37.70 kPa 500 count */ + 7592, /* 37.75 kPa 501 count */ + 7582, /* 37.80 kPa 502 count */ + 7572, /* 37.86 kPa 503 count */ + 7562, /* 37.91 kPa 504 count */ + 7552, /* 37.97 kPa 505 count */ + 7542, /* 38.02 kPa 506 count */ + 7532, /* 38.08 kPa 507 count */ + 7522, /* 38.13 kPa 508 count */ + 7512, /* 38.18 kPa 509 count */ + 7502, /* 38.24 kPa 510 count */ + 7492, /* 38.29 kPa 511 count */ + 7483, /* 38.35 kPa 512 count */ + 7473, /* 38.40 kPa 513 count */ + 7463, /* 38.46 kPa 514 count */ + 7453, /* 38.51 kPa 515 count */ + 7443, /* 38.56 kPa 516 count */ + 7433, /* 38.62 kPa 517 count */ + 7423, /* 38.67 kPa 518 count */ + 7413, /* 38.73 kPa 519 count */ + 7403, /* 38.78 kPa 520 count */ + 7394, /* 38.84 kPa 521 count */ + 7384, /* 38.89 kPa 522 count */ + 7374, /* 38.94 kPa 523 count */ + 7364, /* 39.00 kPa 524 count */ + 7354, /* 39.05 kPa 525 count */ + 7345, /* 39.11 kPa 526 count */ + 7335, /* 39.16 kPa 527 count */ + 7325, /* 39.22 kPa 528 count */ + 7315, /* 39.27 kPa 529 count */ + 7306, /* 39.32 kPa 530 count */ + 7296, /* 39.38 kPa 531 count */ + 7286, /* 39.43 kPa 532 count */ + 7277, /* 39.49 kPa 533 count */ + 7267, /* 39.54 kPa 534 count */ + 7257, /* 39.60 kPa 535 count */ + 7248, /* 39.65 kPa 536 count */ + 7238, /* 39.70 kPa 537 count */ + 7228, /* 39.76 kPa 538 count */ + 7219, /* 39.81 kPa 539 count */ + 7209, /* 39.87 kPa 540 count */ + 7199, /* 39.92 kPa 541 count */ + 7190, /* 39.98 kPa 542 count */ + 7180, /* 40.03 kPa 543 count */ + 7171, /* 40.08 kPa 544 count */ + 7161, /* 40.14 kPa 545 count */ + 7152, /* 40.19 kPa 546 count */ + 7142, /* 40.25 kPa 547 count */ + 7132, /* 40.30 kPa 548 count */ + 7123, /* 40.36 kPa 549 count */ + 7113, /* 40.41 kPa 550 count */ + 7104, /* 40.46 kPa 551 count */ + 7094, /* 40.52 kPa 552 count */ + 7085, /* 40.57 kPa 553 count */ + 7075, /* 40.63 kPa 554 count */ + 7066, /* 40.68 kPa 555 count */ + 7056, /* 40.74 kPa 556 count */ + 7047, /* 40.79 kPa 557 count */ + 7038, /* 40.84 kPa 558 count */ + 7028, /* 40.90 kPa 559 count */ + 7019, /* 40.95 kPa 560 count */ + 7009, /* 41.01 kPa 561 count */ + 7000, /* 41.06 kPa 562 count */ + 6991, /* 41.12 kPa 563 count */ + 6981, /* 41.17 kPa 564 count */ + 6972, /* 41.22 kPa 565 count */ + 6962, /* 41.28 kPa 566 count */ + 6953, /* 41.33 kPa 567 count */ + 6944, /* 41.39 kPa 568 count */ + 6934, /* 41.44 kPa 569 count */ + 6925, /* 41.50 kPa 570 count */ + 6916, /* 41.55 kPa 571 count */ + 6907, /* 41.60 kPa 572 count */ + 6897, /* 41.66 kPa 573 count */ + 6888, /* 41.71 kPa 574 count */ + 6879, /* 41.77 kPa 575 count */ + 6869, /* 41.82 kPa 576 count */ + 6860, /* 41.88 kPa 577 count */ + 6851, /* 41.93 kPa 578 count */ + 6842, /* 41.98 kPa 579 count */ + 6833, /* 42.04 kPa 580 count */ + 6823, /* 42.09 kPa 581 count */ + 6814, /* 42.15 kPa 582 count */ + 6805, /* 42.20 kPa 583 count */ + 6796, /* 42.26 kPa 584 count */ + 6787, /* 42.31 kPa 585 count */ + 6777, /* 42.36 kPa 586 count */ + 6768, /* 42.42 kPa 587 count */ + 6759, /* 42.47 kPa 588 count */ + 6750, /* 42.53 kPa 589 count */ + 6741, /* 42.58 kPa 590 count */ + 6732, /* 42.64 kPa 591 count */ + 6723, /* 42.69 kPa 592 count */ + 6714, /* 42.74 kPa 593 count */ + 6705, /* 42.80 kPa 594 count */ + 6695, /* 42.85 kPa 595 count */ + 6686, /* 42.91 kPa 596 count */ + 6677, /* 42.96 kPa 597 count */ + 6668, /* 43.01 kPa 598 count */ + 6659, /* 43.07 kPa 599 count */ + 6650, /* 43.12 kPa 600 count */ + 6641, /* 43.18 kPa 601 count */ + 6632, /* 43.23 kPa 602 count */ + 6623, /* 43.29 kPa 603 count */ + 6614, /* 43.34 kPa 604 count */ + 6605, /* 43.39 kPa 605 count */ + 6596, /* 43.45 kPa 606 count */ + 6587, /* 43.50 kPa 607 count */ + 6578, /* 43.56 kPa 608 count */ + 6569, /* 43.61 kPa 609 count */ + 6560, /* 43.67 kPa 610 count */ + 6552, /* 43.72 kPa 611 count */ + 6543, /* 43.77 kPa 612 count */ + 6534, /* 43.83 kPa 613 count */ + 6525, /* 43.88 kPa 614 count */ + 6516, /* 43.94 kPa 615 count */ + 6507, /* 43.99 kPa 616 count */ + 6498, /* 44.05 kPa 617 count */ + 6489, /* 44.10 kPa 618 count */ + 6480, /* 44.15 kPa 619 count */ + 6472, /* 44.21 kPa 620 count */ + 6463, /* 44.26 kPa 621 count */ + 6454, /* 44.32 kPa 622 count */ + 6445, /* 44.37 kPa 623 count */ + 6436, /* 44.43 kPa 624 count */ + 6427, /* 44.48 kPa 625 count */ + 6419, /* 44.53 kPa 626 count */ + 6410, /* 44.59 kPa 627 count */ + 6401, /* 44.64 kPa 628 count */ + 6392, /* 44.70 kPa 629 count */ + 6384, /* 44.75 kPa 630 count */ + 6375, /* 44.81 kPa 631 count */ + 6366, /* 44.86 kPa 632 count */ + 6357, /* 44.91 kPa 633 count */ + 6349, /* 44.97 kPa 634 count */ + 6340, /* 45.02 kPa 635 count */ + 6331, /* 45.08 kPa 636 count */ + 6322, /* 45.13 kPa 637 count */ + 6314, /* 45.19 kPa 638 count */ + 6305, /* 45.24 kPa 639 count */ + 6296, /* 45.29 kPa 640 count */ + 6288, /* 45.35 kPa 641 count */ + 6279, /* 45.40 kPa 642 count */ + 6270, /* 45.46 kPa 643 count */ + 6262, /* 45.51 kPa 644 count */ + 6253, /* 45.57 kPa 645 count */ + 6245, /* 45.62 kPa 646 count */ + 6236, /* 45.67 kPa 647 count */ + 6227, /* 45.73 kPa 648 count */ + 6219, /* 45.78 kPa 649 count */ + 6210, /* 45.84 kPa 650 count */ + 6202, /* 45.89 kPa 651 count */ + 6193, /* 45.95 kPa 652 count */ + 6184, /* 46.00 kPa 653 count */ + 6176, /* 46.05 kPa 654 count */ + 6167, /* 46.11 kPa 655 count */ + 6159, /* 46.16 kPa 656 count */ + 6150, /* 46.22 kPa 657 count */ + 6142, /* 46.27 kPa 658 count */ + 6133, /* 46.33 kPa 659 count */ + 6125, /* 46.38 kPa 660 count */ + 6116, /* 46.43 kPa 661 count */ + 6108, /* 46.49 kPa 662 count */ + 6099, /* 46.54 kPa 663 count */ + 6091, /* 46.60 kPa 664 count */ + 6082, /* 46.65 kPa 665 count */ + 6074, /* 46.71 kPa 666 count */ + 6065, /* 46.76 kPa 667 count */ + 6057, /* 46.81 kPa 668 count */ + 6048, /* 46.87 kPa 669 count */ + 6040, /* 46.92 kPa 670 count */ + 6032, /* 46.98 kPa 671 count */ + 6023, /* 47.03 kPa 672 count */ + 6015, /* 47.09 kPa 673 count */ + 6006, /* 47.14 kPa 674 count */ + 5998, /* 47.19 kPa 675 count */ + 5990, /* 47.25 kPa 676 count */ + 5981, /* 47.30 kPa 677 count */ + 5973, /* 47.36 kPa 678 count */ + 5964, /* 47.41 kPa 679 count */ + 5956, /* 47.47 kPa 680 count */ + 5948, /* 47.52 kPa 681 count */ + 5939, /* 47.57 kPa 682 count */ + 5931, /* 47.63 kPa 683 count */ + 5923, /* 47.68 kPa 684 count */ + 5914, /* 47.74 kPa 685 count */ + 5906, /* 47.79 kPa 686 count */ + 5898, /* 47.85 kPa 687 count */ + 5890, /* 47.90 kPa 688 count */ + 5881, /* 47.95 kPa 689 count */ + 5873, /* 48.01 kPa 690 count */ + 5865, /* 48.06 kPa 691 count */ + 5856, /* 48.12 kPa 692 count */ + 5848, /* 48.17 kPa 693 count */ + 5840, /* 48.23 kPa 694 count */ + 5832, /* 48.28 kPa 695 count */ + 5823, /* 48.33 kPa 696 count */ + 5815, /* 48.39 kPa 697 count */ + 5807, /* 48.44 kPa 698 count */ + 5799, /* 48.50 kPa 699 count */ + 5791, /* 48.55 kPa 700 count */ + 5782, /* 48.61 kPa 701 count */ + 5774, /* 48.66 kPa 702 count */ + 5766, /* 48.71 kPa 703 count */ + 5758, /* 48.77 kPa 704 count */ + 5750, /* 48.82 kPa 705 count */ + 5742, /* 48.88 kPa 706 count */ + 5733, /* 48.93 kPa 707 count */ + 5725, /* 48.99 kPa 708 count */ + 5717, /* 49.04 kPa 709 count */ + 5709, /* 49.09 kPa 710 count */ + 5701, /* 49.15 kPa 711 count */ + 5693, /* 49.20 kPa 712 count */ + 5685, /* 49.26 kPa 713 count */ + 5677, /* 49.31 kPa 714 count */ + 5668, /* 49.37 kPa 715 count */ + 5660, /* 49.42 kPa 716 count */ + 5652, /* 49.47 kPa 717 count */ + 5644, /* 49.53 kPa 718 count */ + 5636, /* 49.58 kPa 719 count */ + 5628, /* 49.64 kPa 720 count */ + 5620, /* 49.69 kPa 721 count */ + 5612, /* 49.75 kPa 722 count */ + 5604, /* 49.80 kPa 723 count */ + 5596, /* 49.85 kPa 724 count */ + 5588, /* 49.91 kPa 725 count */ + 5580, /* 49.96 kPa 726 count */ + 5572, /* 50.02 kPa 727 count */ + 5564, /* 50.07 kPa 728 count */ + 5556, /* 50.13 kPa 729 count */ + 5548, /* 50.18 kPa 730 count */ + 5540, /* 50.23 kPa 731 count */ + 5532, /* 50.29 kPa 732 count */ + 5524, /* 50.34 kPa 733 count */ + 5516, /* 50.40 kPa 734 count */ + 5508, /* 50.45 kPa 735 count */ + 5500, /* 50.51 kPa 736 count */ + 5492, /* 50.56 kPa 737 count */ + 5484, /* 50.61 kPa 738 count */ + 5476, /* 50.67 kPa 739 count */ + 5468, /* 50.72 kPa 740 count */ + 5461, /* 50.78 kPa 741 count */ + 5453, /* 50.83 kPa 742 count */ + 5445, /* 50.89 kPa 743 count */ + 5437, /* 50.94 kPa 744 count */ + 5429, /* 50.99 kPa 745 count */ + 5421, /* 51.05 kPa 746 count */ + 5413, /* 51.10 kPa 747 count */ + 5405, /* 51.16 kPa 748 count */ + 5398, /* 51.21 kPa 749 count */ + 5390, /* 51.27 kPa 750 count */ + 5382, /* 51.32 kPa 751 count */ + 5374, /* 51.37 kPa 752 count */ + 5366, /* 51.43 kPa 753 count */ + 5358, /* 51.48 kPa 754 count */ + 5351, /* 51.54 kPa 755 count */ + 5343, /* 51.59 kPa 756 count */ + 5335, /* 51.65 kPa 757 count */ + 5327, /* 51.70 kPa 758 count */ + 5319, /* 51.75 kPa 759 count */ + 5312, /* 51.81 kPa 760 count */ + 5304, /* 51.86 kPa 761 count */ + 5296, /* 51.92 kPa 762 count */ + 5288, /* 51.97 kPa 763 count */ + 5281, /* 52.03 kPa 764 count */ + 5273, /* 52.08 kPa 765 count */ + 5265, /* 52.13 kPa 766 count */ + 5257, /* 52.19 kPa 767 count */ + 5250, /* 52.24 kPa 768 count */ + 5242, /* 52.30 kPa 769 count */ + 5234, /* 52.35 kPa 770 count */ + 5226, /* 52.41 kPa 771 count */ + 5219, /* 52.46 kPa 772 count */ + 5211, /* 52.51 kPa 773 count */ + 5203, /* 52.57 kPa 774 count */ + 5196, /* 52.62 kPa 775 count */ + 5188, /* 52.68 kPa 776 count */ + 5180, /* 52.73 kPa 777 count */ + 5173, /* 52.79 kPa 778 count */ + 5165, /* 52.84 kPa 779 count */ + 5157, /* 52.89 kPa 780 count */ + 5150, /* 52.95 kPa 781 count */ + 5142, /* 53.00 kPa 782 count */ + 5134, /* 53.06 kPa 783 count */ + 5127, /* 53.11 kPa 784 count */ + 5119, /* 53.17 kPa 785 count */ + 5112, /* 53.22 kPa 786 count */ + 5104, /* 53.27 kPa 787 count */ + 5096, /* 53.33 kPa 788 count */ + 5089, /* 53.38 kPa 789 count */ + 5081, /* 53.44 kPa 790 count */ + 5074, /* 53.49 kPa 791 count */ + 5066, /* 53.55 kPa 792 count */ + 5058, /* 53.60 kPa 793 count */ + 5051, /* 53.65 kPa 794 count */ + 5043, /* 53.71 kPa 795 count */ + 5036, /* 53.76 kPa 796 count */ + 5028, /* 53.82 kPa 797 count */ + 5021, /* 53.87 kPa 798 count */ + 5013, /* 53.93 kPa 799 count */ + 5006, /* 53.98 kPa 800 count */ + 4998, /* 54.03 kPa 801 count */ + 4991, /* 54.09 kPa 802 count */ + 4983, /* 54.14 kPa 803 count */ + 4976, /* 54.20 kPa 804 count */ + 4968, /* 54.25 kPa 805 count */ + 4961, /* 54.31 kPa 806 count */ + 4953, /* 54.36 kPa 807 count */ + 4946, /* 54.41 kPa 808 count */ + 4938, /* 54.47 kPa 809 count */ + 4931, /* 54.52 kPa 810 count */ + 4923, /* 54.58 kPa 811 count */ + 4916, /* 54.63 kPa 812 count */ + 4908, /* 54.69 kPa 813 count */ + 4901, /* 54.74 kPa 814 count */ + 4893, /* 54.79 kPa 815 count */ + 4886, /* 54.85 kPa 816 count */ + 4879, /* 54.90 kPa 817 count */ + 4871, /* 54.96 kPa 818 count */ + 4864, /* 55.01 kPa 819 count */ + 4856, /* 55.07 kPa 820 count */ + 4849, /* 55.12 kPa 821 count */ + 4842, /* 55.17 kPa 822 count */ + 4834, /* 55.23 kPa 823 count */ + 4827, /* 55.28 kPa 824 count */ + 4819, /* 55.34 kPa 825 count */ + 4812, /* 55.39 kPa 826 count */ + 4805, /* 55.45 kPa 827 count */ + 4797, /* 55.50 kPa 828 count */ + 4790, /* 55.55 kPa 829 count */ + 4783, /* 55.61 kPa 830 count */ + 4775, /* 55.66 kPa 831 count */ + 4768, /* 55.72 kPa 832 count */ + 4761, /* 55.77 kPa 833 count */ + 4753, /* 55.83 kPa 834 count */ + 4746, /* 55.88 kPa 835 count */ + 4739, /* 55.93 kPa 836 count */ + 4731, /* 55.99 kPa 837 count */ + 4724, /* 56.04 kPa 838 count */ + 4717, /* 56.10 kPa 839 count */ + 4709, /* 56.15 kPa 840 count */ + 4702, /* 56.21 kPa 841 count */ + 4695, /* 56.26 kPa 842 count */ + 4688, /* 56.31 kPa 843 count */ + 4680, /* 56.37 kPa 844 count */ + 4673, /* 56.42 kPa 845 count */ + 4666, /* 56.48 kPa 846 count */ + 4659, /* 56.53 kPa 847 count */ + 4651, /* 56.58 kPa 848 count */ + 4644, /* 56.64 kPa 849 count */ + 4637, /* 56.69 kPa 850 count */ + 4630, /* 56.75 kPa 851 count */ + 4622, /* 56.80 kPa 852 count */ + 4615, /* 56.86 kPa 853 count */ + 4608, /* 56.91 kPa 854 count */ + 4601, /* 56.96 kPa 855 count */ + 4594, /* 57.02 kPa 856 count */ + 4586, /* 57.07 kPa 857 count */ + 4579, /* 57.13 kPa 858 count */ + 4572, /* 57.18 kPa 859 count */ + 4565, /* 57.24 kPa 860 count */ + 4558, /* 57.29 kPa 861 count */ + 4550, /* 57.34 kPa 862 count */ + 4543, /* 57.40 kPa 863 count */ + 4536, /* 57.45 kPa 864 count */ + 4529, /* 57.51 kPa 865 count */ + 4522, /* 57.56 kPa 866 count */ + 4515, /* 57.62 kPa 867 count */ + 4508, /* 57.67 kPa 868 count */ + 4500, /* 57.72 kPa 869 count */ + 4493, /* 57.78 kPa 870 count */ + 4486, /* 57.83 kPa 871 count */ + 4479, /* 57.89 kPa 872 count */ + 4472, /* 57.94 kPa 873 count */ + 4465, /* 58.00 kPa 874 count */ + 4458, /* 58.05 kPa 875 count */ + 4451, /* 58.10 kPa 876 count */ + 4444, /* 58.16 kPa 877 count */ + 4437, /* 58.21 kPa 878 count */ + 4429, /* 58.27 kPa 879 count */ + 4422, /* 58.32 kPa 880 count */ + 4415, /* 58.38 kPa 881 count */ + 4408, /* 58.43 kPa 882 count */ + 4401, /* 58.48 kPa 883 count */ + 4394, /* 58.54 kPa 884 count */ + 4387, /* 58.59 kPa 885 count */ + 4380, /* 58.65 kPa 886 count */ + 4373, /* 58.70 kPa 887 count */ + 4366, /* 58.76 kPa 888 count */ + 4359, /* 58.81 kPa 889 count */ + 4352, /* 58.86 kPa 890 count */ + 4345, /* 58.92 kPa 891 count */ + 4338, /* 58.97 kPa 892 count */ + 4331, /* 59.03 kPa 893 count */ + 4324, /* 59.08 kPa 894 count */ + 4317, /* 59.14 kPa 895 count */ + 4310, /* 59.19 kPa 896 count */ + 4303, /* 59.24 kPa 897 count */ + 4296, /* 59.30 kPa 898 count */ + 4289, /* 59.35 kPa 899 count */ + 4282, /* 59.41 kPa 900 count */ + 4275, /* 59.46 kPa 901 count */ + 4268, /* 59.52 kPa 902 count */ + 4261, /* 59.57 kPa 903 count */ + 4254, /* 59.62 kPa 904 count */ + 4247, /* 59.68 kPa 905 count */ + 4240, /* 59.73 kPa 906 count */ + 4234, /* 59.79 kPa 907 count */ + 4227, /* 59.84 kPa 908 count */ + 4220, /* 59.90 kPa 909 count */ + 4213, /* 59.95 kPa 910 count */ + 4206, /* 60.00 kPa 911 count */ + 4199, /* 60.06 kPa 912 count */ + 4192, /* 60.11 kPa 913 count */ + 4185, /* 60.17 kPa 914 count */ + 4178, /* 60.22 kPa 915 count */ + 4171, /* 60.28 kPa 916 count */ + 4164, /* 60.33 kPa 917 count */ + 4158, /* 60.38 kPa 918 count */ + 4151, /* 60.44 kPa 919 count */ + 4144, /* 60.49 kPa 920 count */ + 4137, /* 60.55 kPa 921 count */ + 4130, /* 60.60 kPa 922 count */ + 4123, /* 60.66 kPa 923 count */ + 4116, /* 60.71 kPa 924 count */ + 4110, /* 60.76 kPa 925 count */ + 4103, /* 60.82 kPa 926 count */ + 4096, /* 60.87 kPa 927 count */ + 4089, /* 60.93 kPa 928 count */ + 4082, /* 60.98 kPa 929 count */ + 4076, /* 61.04 kPa 930 count */ + 4069, /* 61.09 kPa 931 count */ + 4062, /* 61.14 kPa 932 count */ + 4055, /* 61.20 kPa 933 count */ + 4048, /* 61.25 kPa 934 count */ + 4042, /* 61.31 kPa 935 count */ + 4035, /* 61.36 kPa 936 count */ + 4028, /* 61.42 kPa 937 count */ + 4021, /* 61.47 kPa 938 count */ + 4014, /* 61.52 kPa 939 count */ + 4008, /* 61.58 kPa 940 count */ + 4001, /* 61.63 kPa 941 count */ + 3994, /* 61.69 kPa 942 count */ + 3987, /* 61.74 kPa 943 count */ + 3981, /* 61.80 kPa 944 count */ + 3974, /* 61.85 kPa 945 count */ + 3967, /* 61.90 kPa 946 count */ + 3960, /* 61.96 kPa 947 count */ + 3954, /* 62.01 kPa 948 count */ + 3947, /* 62.07 kPa 949 count */ + 3940, /* 62.12 kPa 950 count */ + 3934, /* 62.18 kPa 951 count */ + 3927, /* 62.23 kPa 952 count */ + 3920, /* 62.28 kPa 953 count */ + 3913, /* 62.34 kPa 954 count */ + 3907, /* 62.39 kPa 955 count */ + 3900, /* 62.45 kPa 956 count */ + 3893, /* 62.50 kPa 957 count */ + 3887, /* 62.56 kPa 958 count */ + 3880, /* 62.61 kPa 959 count */ + 3873, /* 62.66 kPa 960 count */ + 3867, /* 62.72 kPa 961 count */ + 3860, /* 62.77 kPa 962 count */ + 3853, /* 62.83 kPa 963 count */ + 3847, /* 62.88 kPa 964 count */ + 3840, /* 62.94 kPa 965 count */ + 3833, /* 62.99 kPa 966 count */ + 3827, /* 63.04 kPa 967 count */ + 3820, /* 63.10 kPa 968 count */ + 3814, /* 63.15 kPa 969 count */ + 3807, /* 63.21 kPa 970 count */ + 3800, /* 63.26 kPa 971 count */ + 3794, /* 63.32 kPa 972 count */ + 3787, /* 63.37 kPa 973 count */ + 3780, /* 63.42 kPa 974 count */ + 3774, /* 63.48 kPa 975 count */ + 3767, /* 63.53 kPa 976 count */ + 3761, /* 63.59 kPa 977 count */ + 3754, /* 63.64 kPa 978 count */ + 3748, /* 63.70 kPa 979 count */ + 3741, /* 63.75 kPa 980 count */ + 3734, /* 63.80 kPa 981 count */ + 3728, /* 63.86 kPa 982 count */ + 3721, /* 63.91 kPa 983 count */ + 3715, /* 63.97 kPa 984 count */ + 3708, /* 64.02 kPa 985 count */ + 3702, /* 64.08 kPa 986 count */ + 3695, /* 64.13 kPa 987 count */ + 3688, /* 64.18 kPa 988 count */ + 3682, /* 64.24 kPa 989 count */ + 3675, /* 64.29 kPa 990 count */ + 3669, /* 64.35 kPa 991 count */ + 3662, /* 64.40 kPa 992 count */ + 3656, /* 64.46 kPa 993 count */ + 3649, /* 64.51 kPa 994 count */ + 3643, /* 64.56 kPa 995 count */ + 3636, /* 64.62 kPa 996 count */ + 3630, /* 64.67 kPa 997 count */ + 3623, /* 64.73 kPa 998 count */ + 3617, /* 64.78 kPa 999 count */ + 3610, /* 64.84 kPa 1000 count */ + 3604, /* 64.89 kPa 1001 count */ + 3597, /* 64.94 kPa 1002 count */ + 3591, /* 65.00 kPa 1003 count */ + 3584, /* 65.05 kPa 1004 count */ + 3578, /* 65.11 kPa 1005 count */ + 3571, /* 65.16 kPa 1006 count */ + 3565, /* 65.22 kPa 1007 count */ + 3559, /* 65.27 kPa 1008 count */ + 3552, /* 65.32 kPa 1009 count */ + 3546, /* 65.38 kPa 1010 count */ + 3539, /* 65.43 kPa 1011 count */ + 3533, /* 65.49 kPa 1012 count */ + 3526, /* 65.54 kPa 1013 count */ + 3520, /* 65.60 kPa 1014 count */ + 3514, /* 65.65 kPa 1015 count */ + 3507, /* 65.70 kPa 1016 count */ + 3501, /* 65.76 kPa 1017 count */ + 3494, /* 65.81 kPa 1018 count */ + 3488, /* 65.87 kPa 1019 count */ + 3481, /* 65.92 kPa 1020 count */ + 3475, /* 65.98 kPa 1021 count */ + 3469, /* 66.03 kPa 1022 count */ + 3462, /* 66.08 kPa 1023 count */ + 3456, /* 66.14 kPa 1024 count */ + 3450, /* 66.19 kPa 1025 count */ + 3443, /* 66.25 kPa 1026 count */ + 3437, /* 66.30 kPa 1027 count */ + 3430, /* 66.36 kPa 1028 count */ + 3424, /* 66.41 kPa 1029 count */ + 3418, /* 66.46 kPa 1030 count */ + 3411, /* 66.52 kPa 1031 count */ + 3405, /* 66.57 kPa 1032 count */ + 3399, /* 66.63 kPa 1033 count */ + 3392, /* 66.68 kPa 1034 count */ + 3386, /* 66.74 kPa 1035 count */ + 3380, /* 66.79 kPa 1036 count */ + 3373, /* 66.84 kPa 1037 count */ + 3367, /* 66.90 kPa 1038 count */ + 3361, /* 66.95 kPa 1039 count */ + 3354, /* 67.01 kPa 1040 count */ + 3348, /* 67.06 kPa 1041 count */ + 3342, /* 67.12 kPa 1042 count */ + 3335, /* 67.17 kPa 1043 count */ + 3329, /* 67.22 kPa 1044 count */ + 3323, /* 67.28 kPa 1045 count */ + 3316, /* 67.33 kPa 1046 count */ + 3310, /* 67.39 kPa 1047 count */ + 3304, /* 67.44 kPa 1048 count */ + 3298, /* 67.50 kPa 1049 count */ + 3291, /* 67.55 kPa 1050 count */ + 3285, /* 67.60 kPa 1051 count */ + 3279, /* 67.66 kPa 1052 count */ + 3273, /* 67.71 kPa 1053 count */ + 3266, /* 67.77 kPa 1054 count */ + 3260, /* 67.82 kPa 1055 count */ + 3254, /* 67.88 kPa 1056 count */ + 3248, /* 67.93 kPa 1057 count */ + 3241, /* 67.98 kPa 1058 count */ + 3235, /* 68.04 kPa 1059 count */ + 3229, /* 68.09 kPa 1060 count */ + 3223, /* 68.15 kPa 1061 count */ + 3216, /* 68.20 kPa 1062 count */ + 3210, /* 68.26 kPa 1063 count */ + 3204, /* 68.31 kPa 1064 count */ + 3198, /* 68.36 kPa 1065 count */ + 3191, /* 68.42 kPa 1066 count */ + 3185, /* 68.47 kPa 1067 count */ + 3179, /* 68.53 kPa 1068 count */ + 3173, /* 68.58 kPa 1069 count */ + 3167, /* 68.64 kPa 1070 count */ + 3160, /* 68.69 kPa 1071 count */ + 3154, /* 68.74 kPa 1072 count */ + 3148, /* 68.80 kPa 1073 count */ + 3142, /* 68.85 kPa 1074 count */ + 3136, /* 68.91 kPa 1075 count */ + 3130, /* 68.96 kPa 1076 count */ + 3123, /* 69.02 kPa 1077 count */ + 3117, /* 69.07 kPa 1078 count */ + 3111, /* 69.12 kPa 1079 count */ + 3105, /* 69.18 kPa 1080 count */ + 3099, /* 69.23 kPa 1081 count */ + 3093, /* 69.29 kPa 1082 count */ + 3087, /* 69.34 kPa 1083 count */ + 3080, /* 69.40 kPa 1084 count */ + 3074, /* 69.45 kPa 1085 count */ + 3068, /* 69.50 kPa 1086 count */ + 3062, /* 69.56 kPa 1087 count */ + 3056, /* 69.61 kPa 1088 count */ + 3050, /* 69.67 kPa 1089 count */ + 3044, /* 69.72 kPa 1090 count */ + 3037, /* 69.78 kPa 1091 count */ + 3031, /* 69.83 kPa 1092 count */ + 3025, /* 69.88 kPa 1093 count */ + 3019, /* 69.94 kPa 1094 count */ + 3013, /* 69.99 kPa 1095 count */ + 3007, /* 70.05 kPa 1096 count */ + 3001, /* 70.10 kPa 1097 count */ + 2995, /* 70.15 kPa 1098 count */ + 2989, /* 70.21 kPa 1099 count */ + 2983, /* 70.26 kPa 1100 count */ + 2977, /* 70.32 kPa 1101 count */ + 2970, /* 70.37 kPa 1102 count */ + 2964, /* 70.43 kPa 1103 count */ + 2958, /* 70.48 kPa 1104 count */ + 2952, /* 70.53 kPa 1105 count */ + 2946, /* 70.59 kPa 1106 count */ + 2940, /* 70.64 kPa 1107 count */ + 2934, /* 70.70 kPa 1108 count */ + 2928, /* 70.75 kPa 1109 count */ + 2922, /* 70.81 kPa 1110 count */ + 2916, /* 70.86 kPa 1111 count */ + 2910, /* 70.91 kPa 1112 count */ + 2904, /* 70.97 kPa 1113 count */ + 2898, /* 71.02 kPa 1114 count */ + 2892, /* 71.08 kPa 1115 count */ + 2886, /* 71.13 kPa 1116 count */ + 2880, /* 71.19 kPa 1117 count */ + 2874, /* 71.24 kPa 1118 count */ + 2868, /* 71.29 kPa 1119 count */ + 2862, /* 71.35 kPa 1120 count */ + 2856, /* 71.40 kPa 1121 count */ + 2850, /* 71.46 kPa 1122 count */ + 2844, /* 71.51 kPa 1123 count */ + 2838, /* 71.57 kPa 1124 count */ + 2832, /* 71.62 kPa 1125 count */ + 2826, /* 71.67 kPa 1126 count */ + 2820, /* 71.73 kPa 1127 count */ + 2814, /* 71.78 kPa 1128 count */ + 2808, /* 71.84 kPa 1129 count */ + 2802, /* 71.89 kPa 1130 count */ + 2796, /* 71.95 kPa 1131 count */ + 2790, /* 72.00 kPa 1132 count */ + 2784, /* 72.05 kPa 1133 count */ + 2778, /* 72.11 kPa 1134 count */ + 2772, /* 72.16 kPa 1135 count */ + 2766, /* 72.22 kPa 1136 count */ + 2760, /* 72.27 kPa 1137 count */ + 2754, /* 72.33 kPa 1138 count */ + 2748, /* 72.38 kPa 1139 count */ + 2743, /* 72.43 kPa 1140 count */ + 2737, /* 72.49 kPa 1141 count */ + 2731, /* 72.54 kPa 1142 count */ + 2725, /* 72.60 kPa 1143 count */ + 2719, /* 72.65 kPa 1144 count */ + 2713, /* 72.71 kPa 1145 count */ + 2707, /* 72.76 kPa 1146 count */ + 2701, /* 72.81 kPa 1147 count */ + 2695, /* 72.87 kPa 1148 count */ + 2689, /* 72.92 kPa 1149 count */ + 2683, /* 72.98 kPa 1150 count */ + 2678, /* 73.03 kPa 1151 count */ + 2672, /* 73.09 kPa 1152 count */ + 2666, /* 73.14 kPa 1153 count */ + 2660, /* 73.19 kPa 1154 count */ + 2654, /* 73.25 kPa 1155 count */ + 2648, /* 73.30 kPa 1156 count */ + 2642, /* 73.36 kPa 1157 count */ + 2636, /* 73.41 kPa 1158 count */ + 2631, /* 73.47 kPa 1159 count */ + 2625, /* 73.52 kPa 1160 count */ + 2619, /* 73.57 kPa 1161 count */ + 2613, /* 73.63 kPa 1162 count */ + 2607, /* 73.68 kPa 1163 count */ + 2601, /* 73.74 kPa 1164 count */ + 2595, /* 73.79 kPa 1165 count */ + 2590, /* 73.85 kPa 1166 count */ + 2584, /* 73.90 kPa 1167 count */ + 2578, /* 73.95 kPa 1168 count */ + 2572, /* 74.01 kPa 1169 count */ + 2566, /* 74.06 kPa 1170 count */ + 2560, /* 74.12 kPa 1171 count */ + 2555, /* 74.17 kPa 1172 count */ + 2549, /* 74.23 kPa 1173 count */ + 2543, /* 74.28 kPa 1174 count */ + 2537, /* 74.33 kPa 1175 count */ + 2531, /* 74.39 kPa 1176 count */ + 2526, /* 74.44 kPa 1177 count */ + 2520, /* 74.50 kPa 1178 count */ + 2514, /* 74.55 kPa 1179 count */ + 2508, /* 74.61 kPa 1180 count */ + 2502, /* 74.66 kPa 1181 count */ + 2497, /* 74.71 kPa 1182 count */ + 2491, /* 74.77 kPa 1183 count */ + 2485, /* 74.82 kPa 1184 count */ + 2479, /* 74.88 kPa 1185 count */ + 2473, /* 74.93 kPa 1186 count */ + 2468, /* 74.99 kPa 1187 count */ + 2462, /* 75.04 kPa 1188 count */ + 2456, /* 75.09 kPa 1189 count */ + 2450, /* 75.15 kPa 1190 count */ + 2445, /* 75.20 kPa 1191 count */ + 2439, /* 75.26 kPa 1192 count */ + 2433, /* 75.31 kPa 1193 count */ + 2427, /* 75.37 kPa 1194 count */ + 2422, /* 75.42 kPa 1195 count */ + 2416, /* 75.47 kPa 1196 count */ + 2410, /* 75.53 kPa 1197 count */ + 2405, /* 75.58 kPa 1198 count */ + 2399, /* 75.64 kPa 1199 count */ + 2393, /* 75.69 kPa 1200 count */ + 2387, /* 75.75 kPa 1201 count */ + 2382, /* 75.80 kPa 1202 count */ + 2376, /* 75.85 kPa 1203 count */ + 2370, /* 75.91 kPa 1204 count */ + 2364, /* 75.96 kPa 1205 count */ + 2359, /* 76.02 kPa 1206 count */ + 2353, /* 76.07 kPa 1207 count */ + 2347, /* 76.13 kPa 1208 count */ + 2342, /* 76.18 kPa 1209 count */ + 2336, /* 76.23 kPa 1210 count */ + 2330, /* 76.29 kPa 1211 count */ + 2325, /* 76.34 kPa 1212 count */ + 2319, /* 76.40 kPa 1213 count */ + 2313, /* 76.45 kPa 1214 count */ + 2308, /* 76.51 kPa 1215 count */ + 2302, /* 76.56 kPa 1216 count */ + 2296, /* 76.61 kPa 1217 count */ + 2291, /* 76.67 kPa 1218 count */ + 2285, /* 76.72 kPa 1219 count */ + 2279, /* 76.78 kPa 1220 count */ + 2274, /* 76.83 kPa 1221 count */ + 2268, /* 76.89 kPa 1222 count */ + 2262, /* 76.94 kPa 1223 count */ + 2257, /* 76.99 kPa 1224 count */ + 2251, /* 77.05 kPa 1225 count */ + 2245, /* 77.10 kPa 1226 count */ + 2240, /* 77.16 kPa 1227 count */ + 2234, /* 77.21 kPa 1228 count */ + 2228, /* 77.27 kPa 1229 count */ + 2223, /* 77.32 kPa 1230 count */ + 2217, /* 77.37 kPa 1231 count */ + 2212, /* 77.43 kPa 1232 count */ + 2206, /* 77.48 kPa 1233 count */ + 2200, /* 77.54 kPa 1234 count */ + 2195, /* 77.59 kPa 1235 count */ + 2189, /* 77.65 kPa 1236 count */ + 2184, /* 77.70 kPa 1237 count */ + 2178, /* 77.75 kPa 1238 count */ + 2172, /* 77.81 kPa 1239 count */ + 2167, /* 77.86 kPa 1240 count */ + 2161, /* 77.92 kPa 1241 count */ + 2156, /* 77.97 kPa 1242 count */ + 2150, /* 78.03 kPa 1243 count */ + 2144, /* 78.08 kPa 1244 count */ + 2139, /* 78.13 kPa 1245 count */ + 2133, /* 78.19 kPa 1246 count */ + 2128, /* 78.24 kPa 1247 count */ + 2122, /* 78.30 kPa 1248 count */ + 2117, /* 78.35 kPa 1249 count */ + 2111, /* 78.41 kPa 1250 count */ + 2105, /* 78.46 kPa 1251 count */ + 2100, /* 78.51 kPa 1252 count */ + 2094, /* 78.57 kPa 1253 count */ + 2089, /* 78.62 kPa 1254 count */ + 2083, /* 78.68 kPa 1255 count */ + 2078, /* 78.73 kPa 1256 count */ + 2072, /* 78.79 kPa 1257 count */ + 2067, /* 78.84 kPa 1258 count */ + 2061, /* 78.89 kPa 1259 count */ + 2056, /* 78.95 kPa 1260 count */ + 2050, /* 79.00 kPa 1261 count */ + 2045, /* 79.06 kPa 1262 count */ + 2039, /* 79.11 kPa 1263 count */ + 2033, /* 79.17 kPa 1264 count */ + 2028, /* 79.22 kPa 1265 count */ + 2022, /* 79.27 kPa 1266 count */ + 2017, /* 79.33 kPa 1267 count */ + 2011, /* 79.38 kPa 1268 count */ + 2006, /* 79.44 kPa 1269 count */ + 2000, /* 79.49 kPa 1270 count */ + 1995, /* 79.55 kPa 1271 count */ + 1989, /* 79.60 kPa 1272 count */ + 1984, /* 79.65 kPa 1273 count */ + 1978, /* 79.71 kPa 1274 count */ + 1973, /* 79.76 kPa 1275 count */ + 1967, /* 79.82 kPa 1276 count */ + 1962, /* 79.87 kPa 1277 count */ + 1957, /* 79.93 kPa 1278 count */ + 1951, /* 79.98 kPa 1279 count */ + 1946, /* 80.03 kPa 1280 count */ + 1940, /* 80.09 kPa 1281 count */ + 1935, /* 80.14 kPa 1282 count */ + 1929, /* 80.20 kPa 1283 count */ + 1924, /* 80.25 kPa 1284 count */ + 1918, /* 80.31 kPa 1285 count */ + 1913, /* 80.36 kPa 1286 count */ + 1907, /* 80.41 kPa 1287 count */ + 1902, /* 80.47 kPa 1288 count */ + 1896, /* 80.52 kPa 1289 count */ + 1891, /* 80.58 kPa 1290 count */ + 1886, /* 80.63 kPa 1291 count */ + 1880, /* 80.69 kPa 1292 count */ + 1875, /* 80.74 kPa 1293 count */ + 1869, /* 80.79 kPa 1294 count */ + 1864, /* 80.85 kPa 1295 count */ + 1858, /* 80.90 kPa 1296 count */ + 1853, /* 80.96 kPa 1297 count */ + 1848, /* 81.01 kPa 1298 count */ + 1842, /* 81.07 kPa 1299 count */ + 1837, /* 81.12 kPa 1300 count */ + 1831, /* 81.17 kPa 1301 count */ + 1826, /* 81.23 kPa 1302 count */ + 1821, /* 81.28 kPa 1303 count */ + 1815, /* 81.34 kPa 1304 count */ + 1810, /* 81.39 kPa 1305 count */ + 1804, /* 81.45 kPa 1306 count */ + 1799, /* 81.50 kPa 1307 count */ + 1794, /* 81.55 kPa 1308 count */ + 1788, /* 81.61 kPa 1309 count */ + 1783, /* 81.66 kPa 1310 count */ + 1777, /* 81.72 kPa 1311 count */ + 1772, /* 81.77 kPa 1312 count */ + 1767, /* 81.83 kPa 1313 count */ + 1761, /* 81.88 kPa 1314 count */ + 1756, /* 81.93 kPa 1315 count */ + 1751, /* 81.99 kPa 1316 count */ + 1745, /* 82.04 kPa 1317 count */ + 1740, /* 82.10 kPa 1318 count */ + 1735, /* 82.15 kPa 1319 count */ + 1729, /* 82.21 kPa 1320 count */ + 1724, /* 82.26 kPa 1321 count */ + 1718, /* 82.31 kPa 1322 count */ + 1713, /* 82.37 kPa 1323 count */ + 1708, /* 82.42 kPa 1324 count */ + 1702, /* 82.48 kPa 1325 count */ + 1697, /* 82.53 kPa 1326 count */ + 1692, /* 82.59 kPa 1327 count */ + 1686, /* 82.64 kPa 1328 count */ + 1681, /* 82.69 kPa 1329 count */ + 1676, /* 82.75 kPa 1330 count */ + 1670, /* 82.80 kPa 1331 count */ + 1665, /* 82.86 kPa 1332 count */ + 1660, /* 82.91 kPa 1333 count */ + 1655, /* 82.97 kPa 1334 count */ + 1649, /* 83.02 kPa 1335 count */ + 1644, /* 83.07 kPa 1336 count */ + 1639, /* 83.13 kPa 1337 count */ + 1633, /* 83.18 kPa 1338 count */ + 1628, /* 83.24 kPa 1339 count */ + 1623, /* 83.29 kPa 1340 count */ + 1617, /* 83.35 kPa 1341 count */ + 1612, /* 83.40 kPa 1342 count */ + 1607, /* 83.45 kPa 1343 count */ + 1602, /* 83.51 kPa 1344 count */ + 1596, /* 83.56 kPa 1345 count */ + 1591, /* 83.62 kPa 1346 count */ + 1586, /* 83.67 kPa 1347 count */ + 1580, /* 83.72 kPa 1348 count */ + 1575, /* 83.78 kPa 1349 count */ + 1570, /* 83.83 kPa 1350 count */ + 1565, /* 83.89 kPa 1351 count */ + 1559, /* 83.94 kPa 1352 count */ + 1554, /* 84.00 kPa 1353 count */ + 1549, /* 84.05 kPa 1354 count */ + 1544, /* 84.10 kPa 1355 count */ + 1538, /* 84.16 kPa 1356 count */ + 1533, /* 84.21 kPa 1357 count */ + 1528, /* 84.27 kPa 1358 count */ + 1523, /* 84.32 kPa 1359 count */ + 1517, /* 84.38 kPa 1360 count */ + 1512, /* 84.43 kPa 1361 count */ + 1507, /* 84.48 kPa 1362 count */ + 1502, /* 84.54 kPa 1363 count */ + 1496, /* 84.59 kPa 1364 count */ + 1491, /* 84.65 kPa 1365 count */ + 1486, /* 84.70 kPa 1366 count */ + 1481, /* 84.76 kPa 1367 count */ + 1475, /* 84.81 kPa 1368 count */ + 1470, /* 84.86 kPa 1369 count */ + 1465, /* 84.92 kPa 1370 count */ + 1460, /* 84.97 kPa 1371 count */ + 1455, /* 85.03 kPa 1372 count */ + 1449, /* 85.08 kPa 1373 count */ + 1444, /* 85.14 kPa 1374 count */ + 1439, /* 85.19 kPa 1375 count */ + 1434, /* 85.24 kPa 1376 count */ + 1429, /* 85.30 kPa 1377 count */ + 1423, /* 85.35 kPa 1378 count */ + 1418, /* 85.41 kPa 1379 count */ + 1413, /* 85.46 kPa 1380 count */ + 1408, /* 85.52 kPa 1381 count */ + 1403, /* 85.57 kPa 1382 count */ + 1398, /* 85.62 kPa 1383 count */ + 1392, /* 85.68 kPa 1384 count */ + 1387, /* 85.73 kPa 1385 count */ + 1382, /* 85.79 kPa 1386 count */ + 1377, /* 85.84 kPa 1387 count */ + 1372, /* 85.90 kPa 1388 count */ + 1366, /* 85.95 kPa 1389 count */ + 1361, /* 86.00 kPa 1390 count */ + 1356, /* 86.06 kPa 1391 count */ + 1351, /* 86.11 kPa 1392 count */ + 1346, /* 86.17 kPa 1393 count */ + 1341, /* 86.22 kPa 1394 count */ + 1336, /* 86.28 kPa 1395 count */ + 1330, /* 86.33 kPa 1396 count */ + 1325, /* 86.38 kPa 1397 count */ + 1320, /* 86.44 kPa 1398 count */ + 1315, /* 86.49 kPa 1399 count */ + 1310, /* 86.55 kPa 1400 count */ + 1305, /* 86.60 kPa 1401 count */ + 1300, /* 86.66 kPa 1402 count */ + 1294, /* 86.71 kPa 1403 count */ + 1289, /* 86.76 kPa 1404 count */ + 1284, /* 86.82 kPa 1405 count */ + 1279, /* 86.87 kPa 1406 count */ + 1274, /* 86.93 kPa 1407 count */ + 1269, /* 86.98 kPa 1408 count */ + 1264, /* 87.04 kPa 1409 count */ + 1259, /* 87.09 kPa 1410 count */ + 1254, /* 87.14 kPa 1411 count */ + 1248, /* 87.20 kPa 1412 count */ + 1243, /* 87.25 kPa 1413 count */ + 1238, /* 87.31 kPa 1414 count */ + 1233, /* 87.36 kPa 1415 count */ + 1228, /* 87.42 kPa 1416 count */ + 1223, /* 87.47 kPa 1417 count */ + 1218, /* 87.52 kPa 1418 count */ + 1213, /* 87.58 kPa 1419 count */ + 1208, /* 87.63 kPa 1420 count */ + 1203, /* 87.69 kPa 1421 count */ + 1198, /* 87.74 kPa 1422 count */ + 1192, /* 87.80 kPa 1423 count */ + 1187, /* 87.85 kPa 1424 count */ + 1182, /* 87.90 kPa 1425 count */ + 1177, /* 87.96 kPa 1426 count */ + 1172, /* 88.01 kPa 1427 count */ + 1167, /* 88.07 kPa 1428 count */ + 1162, /* 88.12 kPa 1429 count */ + 1157, /* 88.18 kPa 1430 count */ + 1152, /* 88.23 kPa 1431 count */ + 1147, /* 88.28 kPa 1432 count */ + 1142, /* 88.34 kPa 1433 count */ + 1137, /* 88.39 kPa 1434 count */ + 1132, /* 88.45 kPa 1435 count */ + 1127, /* 88.50 kPa 1436 count */ + 1122, /* 88.56 kPa 1437 count */ + 1117, /* 88.61 kPa 1438 count */ + 1112, /* 88.66 kPa 1439 count */ + 1107, /* 88.72 kPa 1440 count */ + 1102, /* 88.77 kPa 1441 count */ + 1097, /* 88.83 kPa 1442 count */ + 1091, /* 88.88 kPa 1443 count */ + 1086, /* 88.94 kPa 1444 count */ + 1081, /* 88.99 kPa 1445 count */ + 1076, /* 89.04 kPa 1446 count */ + 1071, /* 89.10 kPa 1447 count */ + 1066, /* 89.15 kPa 1448 count */ + 1061, /* 89.21 kPa 1449 count */ + 1056, /* 89.26 kPa 1450 count */ + 1051, /* 89.32 kPa 1451 count */ + 1046, /* 89.37 kPa 1452 count */ + 1041, /* 89.42 kPa 1453 count */ + 1036, /* 89.48 kPa 1454 count */ + 1031, /* 89.53 kPa 1455 count */ + 1026, /* 89.59 kPa 1456 count */ + 1021, /* 89.64 kPa 1457 count */ + 1016, /* 89.70 kPa 1458 count */ + 1011, /* 89.75 kPa 1459 count */ + 1006, /* 89.80 kPa 1460 count */ + 1001, /* 89.86 kPa 1461 count */ + 996, /* 89.91 kPa 1462 count */ + 992, /* 89.97 kPa 1463 count */ + 987, /* 90.02 kPa 1464 count */ + 982, /* 90.08 kPa 1465 count */ + 977, /* 90.13 kPa 1466 count */ + 972, /* 90.18 kPa 1467 count */ + 967, /* 90.24 kPa 1468 count */ + 962, /* 90.29 kPa 1469 count */ + 957, /* 90.35 kPa 1470 count */ + 952, /* 90.40 kPa 1471 count */ + 947, /* 90.46 kPa 1472 count */ + 942, /* 90.51 kPa 1473 count */ + 937, /* 90.56 kPa 1474 count */ + 932, /* 90.62 kPa 1475 count */ + 927, /* 90.67 kPa 1476 count */ + 922, /* 90.73 kPa 1477 count */ + 917, /* 90.78 kPa 1478 count */ + 912, /* 90.84 kPa 1479 count */ + 907, /* 90.89 kPa 1480 count */ + 902, /* 90.94 kPa 1481 count */ + 897, /* 91.00 kPa 1482 count */ + 892, /* 91.05 kPa 1483 count */ + 888, /* 91.11 kPa 1484 count */ + 883, /* 91.16 kPa 1485 count */ + 878, /* 91.22 kPa 1486 count */ + 873, /* 91.27 kPa 1487 count */ + 868, /* 91.32 kPa 1488 count */ + 863, /* 91.38 kPa 1489 count */ + 858, /* 91.43 kPa 1490 count */ + 853, /* 91.49 kPa 1491 count */ + 848, /* 91.54 kPa 1492 count */ + 843, /* 91.60 kPa 1493 count */ + 838, /* 91.65 kPa 1494 count */ + 834, /* 91.70 kPa 1495 count */ + 829, /* 91.76 kPa 1496 count */ + 824, /* 91.81 kPa 1497 count */ + 819, /* 91.87 kPa 1498 count */ + 814, /* 91.92 kPa 1499 count */ + 809, /* 91.98 kPa 1500 count */ + 804, /* 92.03 kPa 1501 count */ + 799, /* 92.08 kPa 1502 count */ + 794, /* 92.14 kPa 1503 count */ + 790, /* 92.19 kPa 1504 count */ + 785, /* 92.25 kPa 1505 count */ + 780, /* 92.30 kPa 1506 count */ + 775, /* 92.36 kPa 1507 count */ + 770, /* 92.41 kPa 1508 count */ + 765, /* 92.46 kPa 1509 count */ + 760, /* 92.52 kPa 1510 count */ + 755, /* 92.57 kPa 1511 count */ + 751, /* 92.63 kPa 1512 count */ + 746, /* 92.68 kPa 1513 count */ + 741, /* 92.74 kPa 1514 count */ + 736, /* 92.79 kPa 1515 count */ + 731, /* 92.84 kPa 1516 count */ + 726, /* 92.90 kPa 1517 count */ + 721, /* 92.95 kPa 1518 count */ + 717, /* 93.01 kPa 1519 count */ + 712, /* 93.06 kPa 1520 count */ + 707, /* 93.12 kPa 1521 count */ + 702, /* 93.17 kPa 1522 count */ + 697, /* 93.22 kPa 1523 count */ + 692, /* 93.28 kPa 1524 count */ + 688, /* 93.33 kPa 1525 count */ + 683, /* 93.39 kPa 1526 count */ + 678, /* 93.44 kPa 1527 count */ + 673, /* 93.50 kPa 1528 count */ + 668, /* 93.55 kPa 1529 count */ + 664, /* 93.60 kPa 1530 count */ + 659, /* 93.66 kPa 1531 count */ + 654, /* 93.71 kPa 1532 count */ + 649, /* 93.77 kPa 1533 count */ + 644, /* 93.82 kPa 1534 count */ + 639, /* 93.88 kPa 1535 count */ + 635, /* 93.93 kPa 1536 count */ + 630, /* 93.98 kPa 1537 count */ + 625, /* 94.04 kPa 1538 count */ + 620, /* 94.09 kPa 1539 count */ + 615, /* 94.15 kPa 1540 count */ + 611, /* 94.20 kPa 1541 count */ + 606, /* 94.26 kPa 1542 count */ + 601, /* 94.31 kPa 1543 count */ + 596, /* 94.36 kPa 1544 count */ + 591, /* 94.42 kPa 1545 count */ + 587, /* 94.47 kPa 1546 count */ + 582, /* 94.53 kPa 1547 count */ + 577, /* 94.58 kPa 1548 count */ + 572, /* 94.64 kPa 1549 count */ + 568, /* 94.69 kPa 1550 count */ + 563, /* 94.74 kPa 1551 count */ + 558, /* 94.80 kPa 1552 count */ + 553, /* 94.85 kPa 1553 count */ + 549, /* 94.91 kPa 1554 count */ + 544, /* 94.96 kPa 1555 count */ + 539, /* 95.02 kPa 1556 count */ + 534, /* 95.07 kPa 1557 count */ + 529, /* 95.12 kPa 1558 count */ + 525, /* 95.18 kPa 1559 count */ + 520, /* 95.23 kPa 1560 count */ + 515, /* 95.29 kPa 1561 count */ + 510, /* 95.34 kPa 1562 count */ + 506, /* 95.40 kPa 1563 count */ + 501, /* 95.45 kPa 1564 count */ + 496, /* 95.50 kPa 1565 count */ + 492, /* 95.56 kPa 1566 count */ + 487, /* 95.61 kPa 1567 count */ + 482, /* 95.67 kPa 1568 count */ + 477, /* 95.72 kPa 1569 count */ + 473, /* 95.78 kPa 1570 count */ + 468, /* 95.83 kPa 1571 count */ + 463, /* 95.88 kPa 1572 count */ + 458, /* 95.94 kPa 1573 count */ + 454, /* 95.99 kPa 1574 count */ + 449, /* 96.05 kPa 1575 count */ + 444, /* 96.10 kPa 1576 count */ + 440, /* 96.16 kPa 1577 count */ + 435, /* 96.21 kPa 1578 count */ + 430, /* 96.26 kPa 1579 count */ + 425, /* 96.32 kPa 1580 count */ + 421, /* 96.37 kPa 1581 count */ + 416, /* 96.43 kPa 1582 count */ + 411, /* 96.48 kPa 1583 count */ + 407, /* 96.54 kPa 1584 count */ + 402, /* 96.59 kPa 1585 count */ + 397, /* 96.64 kPa 1586 count */ + 392, /* 96.70 kPa 1587 count */ + 388, /* 96.75 kPa 1588 count */ + 383, /* 96.81 kPa 1589 count */ + 378, /* 96.86 kPa 1590 count */ + 374, /* 96.91 kPa 1591 count */ + 369, /* 96.97 kPa 1592 count */ + 364, /* 97.02 kPa 1593 count */ + 360, /* 97.08 kPa 1594 count */ + 355, /* 97.13 kPa 1595 count */ + 350, /* 97.19 kPa 1596 count */ + 346, /* 97.24 kPa 1597 count */ + 341, /* 97.29 kPa 1598 count */ + 336, /* 97.35 kPa 1599 count */ + 332, /* 97.40 kPa 1600 count */ + 327, /* 97.46 kPa 1601 count */ + 322, /* 97.51 kPa 1602 count */ + 318, /* 97.57 kPa 1603 count */ + 313, /* 97.62 kPa 1604 count */ + 308, /* 97.67 kPa 1605 count */ + 304, /* 97.73 kPa 1606 count */ + 299, /* 97.78 kPa 1607 count */ + 294, /* 97.84 kPa 1608 count */ + 290, /* 97.89 kPa 1609 count */ + 285, /* 97.95 kPa 1610 count */ + 280, /* 98.00 kPa 1611 count */ + 276, /* 98.05 kPa 1612 count */ + 271, /* 98.11 kPa 1613 count */ + 267, /* 98.16 kPa 1614 count */ + 262, /* 98.22 kPa 1615 count */ + 257, /* 98.27 kPa 1616 count */ + 253, /* 98.33 kPa 1617 count */ + 248, /* 98.38 kPa 1618 count */ + 243, /* 98.43 kPa 1619 count */ + 239, /* 98.49 kPa 1620 count */ + 234, /* 98.54 kPa 1621 count */ + 230, /* 98.60 kPa 1622 count */ + 225, /* 98.65 kPa 1623 count */ + 220, /* 98.71 kPa 1624 count */ + 216, /* 98.76 kPa 1625 count */ + 211, /* 98.81 kPa 1626 count */ + 206, /* 98.87 kPa 1627 count */ + 202, /* 98.92 kPa 1628 count */ + 197, /* 98.98 kPa 1629 count */ + 193, /* 99.03 kPa 1630 count */ + 188, /* 99.09 kPa 1631 count */ + 183, /* 99.14 kPa 1632 count */ + 179, /* 99.19 kPa 1633 count */ + 174, /* 99.25 kPa 1634 count */ + 170, /* 99.30 kPa 1635 count */ + 165, /* 99.36 kPa 1636 count */ + 160, /* 99.41 kPa 1637 count */ + 156, /* 99.47 kPa 1638 count */ + 151, /* 99.52 kPa 1639 count */ + 147, /* 99.57 kPa 1640 count */ + 142, /* 99.63 kPa 1641 count */ + 138, /* 99.68 kPa 1642 count */ + 133, /* 99.74 kPa 1643 count */ + 128, /* 99.79 kPa 1644 count */ + 124, /* 99.85 kPa 1645 count */ + 119, /* 99.90 kPa 1646 count */ + 115, /* 99.95 kPa 1647 count */ + 110, /* 100.01 kPa 1648 count */ + 106, /* 100.06 kPa 1649 count */ + 101, /* 100.12 kPa 1650 count */ + 96, /* 100.17 kPa 1651 count */ + 92, /* 100.23 kPa 1652 count */ + 87, /* 100.28 kPa 1653 count */ + 83, /* 100.33 kPa 1654 count */ + 78, /* 100.39 kPa 1655 count */ + 74, /* 100.44 kPa 1656 count */ + 69, /* 100.50 kPa 1657 count */ + 65, /* 100.55 kPa 1658 count */ + 60, /* 100.61 kPa 1659 count */ + 55, /* 100.66 kPa 1660 count */ + 51, /* 100.71 kPa 1661 count */ + 46, /* 100.77 kPa 1662 count */ + 42, /* 100.82 kPa 1663 count */ + 37, /* 100.88 kPa 1664 count */ + 33, /* 100.93 kPa 1665 count */ + 28, /* 100.99 kPa 1666 count */ + 24, /* 101.04 kPa 1667 count */ + 19, /* 101.09 kPa 1668 count */ + 15, /* 101.15 kPa 1669 count */ + 10, /* 101.20 kPa 1670 count */ + 6, /* 101.26 kPa 1671 count */ + 1, /* 101.31 kPa 1672 count */ + -3, /* 101.37 kPa 1673 count */ + -8, /* 101.42 kPa 1674 count */ + -12, /* 101.47 kPa 1675 count */ + -17, /* 101.53 kPa 1676 count */ + -21, /* 101.58 kPa 1677 count */ + -26, /* 101.64 kPa 1678 count */ + -30, /* 101.69 kPa 1679 count */ + -35, /* 101.75 kPa 1680 count */ + -39, /* 101.80 kPa 1681 count */ + -44, /* 101.85 kPa 1682 count */ + -48, /* 101.91 kPa 1683 count */ + -53, /* 101.96 kPa 1684 count */ + -57, /* 102.02 kPa 1685 count */ + -62, /* 102.07 kPa 1686 count */ + -66, /* 102.13 kPa 1687 count */ + -71, /* 102.18 kPa 1688 count */ + -75, /* 102.23 kPa 1689 count */ + -80, /* 102.29 kPa 1690 count */ + -84, /* 102.34 kPa 1691 count */ + -89, /* 102.40 kPa 1692 count */ + -93, /* 102.45 kPa 1693 count */ + -98, /* 102.51 kPa 1694 count */ + -102, /* 102.56 kPa 1695 count */ + -107, /* 102.61 kPa 1696 count */ + -111, /* 102.67 kPa 1697 count */ + -116, /* 102.72 kPa 1698 count */ + -120, /* 102.78 kPa 1699 count */ + -125, /* 102.83 kPa 1700 count */ + -129, /* 102.89 kPa 1701 count */ + -134, /* 102.94 kPa 1702 count */ + -138, /* 102.99 kPa 1703 count */ + -143, /* 103.05 kPa 1704 count */ + -147, /* 103.10 kPa 1705 count */ + -151, /* 103.16 kPa 1706 count */ + -156, /* 103.21 kPa 1707 count */ + -160, /* 103.27 kPa 1708 count */ + -165, /* 103.32 kPa 1709 count */ + -169, /* 103.37 kPa 1710 count */ + -174, /* 103.43 kPa 1711 count */ + -178, /* 103.48 kPa 1712 count */ + -183, /* 103.54 kPa 1713 count */ + -187, /* 103.59 kPa 1714 count */ + -191, /* 103.65 kPa 1715 count */ + -196, /* 103.70 kPa 1716 count */ + -200, /* 103.75 kPa 1717 count */ + -205, /* 103.81 kPa 1718 count */ + -209, /* 103.86 kPa 1719 count */ + -214, /* 103.92 kPa 1720 count */ + -218, /* 103.97 kPa 1721 count */ + -222, /* 104.03 kPa 1722 count */ + -227, /* 104.08 kPa 1723 count */ + -231, /* 104.13 kPa 1724 count */ + -236, /* 104.19 kPa 1725 count */ + -240, /* 104.24 kPa 1726 count */ + -245, /* 104.30 kPa 1727 count */ + -249, /* 104.35 kPa 1728 count */ + -253, /* 104.41 kPa 1729 count */ + -258, /* 104.46 kPa 1730 count */ + -262, /* 104.51 kPa 1731 count */ + -267, /* 104.57 kPa 1732 count */ + -271, /* 104.62 kPa 1733 count */ + -275, /* 104.68 kPa 1734 count */ + -280, /* 104.73 kPa 1735 count */ + -284, /* 104.79 kPa 1736 count */ + -289, /* 104.84 kPa 1737 count */ + -293, /* 104.89 kPa 1738 count */ + -297, /* 104.95 kPa 1739 count */ + -302, /* 105.00 kPa 1740 count */ + -306, /* 105.06 kPa 1741 count */ + -311, /* 105.11 kPa 1742 count */ + -315, /* 105.17 kPa 1743 count */ + -319, /* 105.22 kPa 1744 count */ + -324, /* 105.27 kPa 1745 count */ + -328, /* 105.33 kPa 1746 count */ + -332, /* 105.38 kPa 1747 count */ + -337, /* 105.44 kPa 1748 count */ + -341, /* 105.49 kPa 1749 count */ + -346, /* 105.55 kPa 1750 count */ + -350, /* 105.60 kPa 1751 count */ + -354, /* 105.65 kPa 1752 count */ + -359, /* 105.71 kPa 1753 count */ + -363, /* 105.76 kPa 1754 count */ + -367, /* 105.82 kPa 1755 count */ + -372, /* 105.87 kPa 1756 count */ + -376, /* 105.93 kPa 1757 count */ + -380, /* 105.98 kPa 1758 count */ + -385, /* 106.03 kPa 1759 count */ + -389, /* 106.09 kPa 1760 count */ + -394, /* 106.14 kPa 1761 count */ + -398, /* 106.20 kPa 1762 count */ + -402, /* 106.25 kPa 1763 count */ + -407, /* 106.31 kPa 1764 count */ + -411, /* 106.36 kPa 1765 count */ + -415, /* 106.41 kPa 1766 count */ + -420, /* 106.47 kPa 1767 count */ + -424, /* 106.52 kPa 1768 count */ + -428, /* 106.58 kPa 1769 count */ + -433, /* 106.63 kPa 1770 count */ + -437, /* 106.69 kPa 1771 count */ + -441, /* 106.74 kPa 1772 count */ + -446, /* 106.79 kPa 1773 count */ + -450, /* 106.85 kPa 1774 count */ + -454, /* 106.90 kPa 1775 count */ + -459, /* 106.96 kPa 1776 count */ + -463, /* 107.01 kPa 1777 count */ + -467, /* 107.07 kPa 1778 count */ + -472, /* 107.12 kPa 1779 count */ + -476, /* 107.17 kPa 1780 count */ + -480, /* 107.23 kPa 1781 count */ + -485, /* 107.28 kPa 1782 count */ + -489, /* 107.34 kPa 1783 count */ + -493, /* 107.39 kPa 1784 count */ + -497, /* 107.45 kPa 1785 count */ + -502, /* 107.50 kPa 1786 count */ + -506, /* 107.55 kPa 1787 count */ + -510, /* 107.61 kPa 1788 count */ + -515, /* 107.66 kPa 1789 count */ + -519, /* 107.72 kPa 1790 count */ + -523, /* 107.77 kPa 1791 count */ + -528, /* 107.83 kPa 1792 count */ + -532, /* 107.88 kPa 1793 count */ + -536, /* 107.93 kPa 1794 count */ + -540, /* 107.99 kPa 1795 count */ + -545, /* 108.04 kPa 1796 count */ + -549, /* 108.10 kPa 1797 count */ + -553, /* 108.15 kPa 1798 count */ + -558, /* 108.21 kPa 1799 count */ + -562, /* 108.26 kPa 1800 count */ + -566, /* 108.31 kPa 1801 count */ + -570, /* 108.37 kPa 1802 count */ + -575, /* 108.42 kPa 1803 count */ + -579, /* 108.48 kPa 1804 count */ + -583, /* 108.53 kPa 1805 count */ + -588, /* 108.59 kPa 1806 count */ + -592, /* 108.64 kPa 1807 count */ + -596, /* 108.69 kPa 1808 count */ + -600, /* 108.75 kPa 1809 count */ + -605, /* 108.80 kPa 1810 count */ + -609, /* 108.86 kPa 1811 count */ + -613, /* 108.91 kPa 1812 count */ + -617, /* 108.97 kPa 1813 count */ + -622, /* 109.02 kPa 1814 count */ + -626, /* 109.07 kPa 1815 count */ + -630, /* 109.13 kPa 1816 count */ + -634, /* 109.18 kPa 1817 count */ + -639, /* 109.24 kPa 1818 count */ + -643, /* 109.29 kPa 1819 count */ + -647, /* 109.35 kPa 1820 count */ + -651, /* 109.40 kPa 1821 count */ + -656, /* 109.45 kPa 1822 count */ + -660, /* 109.51 kPa 1823 count */ + -664, /* 109.56 kPa 1824 count */ + -668, /* 109.62 kPa 1825 count */ + -673, /* 109.67 kPa 1826 count */ + -677, /* 109.73 kPa 1827 count */ + -681, /* 109.78 kPa 1828 count */ + -685, /* 109.83 kPa 1829 count */ + -690, /* 109.89 kPa 1830 count */ + -694, /* 109.94 kPa 1831 count */ + -698, /* 110.00 kPa 1832 count */ + -702, /* 110.05 kPa 1833 count */ + -706, /* 110.11 kPa 1834 count */ + -711, /* 110.16 kPa 1835 count */ + -715, /* 110.21 kPa 1836 count */ + -719, /* 110.27 kPa 1837 count */ + -723, /* 110.32 kPa 1838 count */ + -728, /* 110.38 kPa 1839 count */ + -732, /* 110.43 kPa 1840 count */ + -736, /* 110.48 kPa 1841 count */ + -740, /* 110.54 kPa 1842 count */ + -744, /* 110.59 kPa 1843 count */ + -749, /* 110.65 kPa 1844 count */ + -753, /* 110.70 kPa 1845 count */ + -757, /* 110.76 kPa 1846 count */ + -761, /* 110.81 kPa 1847 count */ + -765, /* 110.86 kPa 1848 count */ + -770, /* 110.92 kPa 1849 count */ + -774, /* 110.97 kPa 1850 count */ + -778, /* 111.03 kPa 1851 count */ + -782, /* 111.08 kPa 1852 count */ + -786, /* 111.14 kPa 1853 count */ + -791, /* 111.19 kPa 1854 count */ + -795, /* 111.24 kPa 1855 count */ + -799, /* 111.30 kPa 1856 count */ + -803, /* 111.35 kPa 1857 count */ + -807, /* 111.41 kPa 1858 count */ + -812, /* 111.46 kPa 1859 count */ + -816, /* 111.52 kPa 1860 count */ + -820, /* 111.57 kPa 1861 count */ + -824, /* 111.62 kPa 1862 count */ + -828, /* 111.68 kPa 1863 count */ + -832, /* 111.73 kPa 1864 count */ + -837, /* 111.79 kPa 1865 count */ + -841, /* 111.84 kPa 1866 count */ + -845, /* 111.90 kPa 1867 count */ + -849, /* 111.95 kPa 1868 count */ + -853, /* 112.00 kPa 1869 count */ + -857, /* 112.06 kPa 1870 count */ + -862, /* 112.11 kPa 1871 count */ + -866, /* 112.17 kPa 1872 count */ + -870, /* 112.22 kPa 1873 count */ + -874, /* 112.28 kPa 1874 count */ + -878, /* 112.33 kPa 1875 count */ + -882, /* 112.38 kPa 1876 count */ + -887, /* 112.44 kPa 1877 count */ + -891, /* 112.49 kPa 1878 count */ + -895, /* 112.55 kPa 1879 count */ + -899, /* 112.60 kPa 1880 count */ + -903, /* 112.66 kPa 1881 count */ + -907, /* 112.71 kPa 1882 count */ + -911, /* 112.76 kPa 1883 count */ + -916, /* 112.82 kPa 1884 count */ + -920, /* 112.87 kPa 1885 count */ + -924, /* 112.93 kPa 1886 count */ + -928, /* 112.98 kPa 1887 count */ + -932, /* 113.04 kPa 1888 count */ + -936, /* 113.09 kPa 1889 count */ + -940, /* 113.14 kPa 1890 count */ + -945, /* 113.20 kPa 1891 count */ + -949, /* 113.25 kPa 1892 count */ + -953, /* 113.31 kPa 1893 count */ + -957, /* 113.36 kPa 1894 count */ + -961, /* 113.42 kPa 1895 count */ + -965, /* 113.47 kPa 1896 count */ + -969, /* 113.52 kPa 1897 count */ + -973, /* 113.58 kPa 1898 count */ + -978, /* 113.63 kPa 1899 count */ + -982, /* 113.69 kPa 1900 count */ + -986, /* 113.74 kPa 1901 count */ + -990, /* 113.80 kPa 1902 count */ + -994, /* 113.85 kPa 1903 count */ + -998, /* 113.90 kPa 1904 count */ + -1002, /* 113.96 kPa 1905 count */ + -1006, /* 114.01 kPa 1906 count */ + -1010, /* 114.07 kPa 1907 count */ + -1015, /* 114.12 kPa 1908 count */ + -1019, /* 114.18 kPa 1909 count */ + -1023, /* 114.23 kPa 1910 count */ + -1027, /* 114.28 kPa 1911 count */ + -1031, /* 114.34 kPa 1912 count */ + -1035, /* 114.39 kPa 1913 count */ + -1039, /* 114.45 kPa 1914 count */ + -1043, /* 114.50 kPa 1915 count */ + -1047, /* 114.56 kPa 1916 count */ + -1051, /* 114.61 kPa 1917 count */ + -1056, /* 114.66 kPa 1918 count */ + -1060, /* 114.72 kPa 1919 count */ + -1064, /* 114.77 kPa 1920 count */ + -1068, /* 114.83 kPa 1921 count */ + -1072, /* 114.88 kPa 1922 count */ + -1076, /* 114.94 kPa 1923 count */ + -1080, /* 114.99 kPa 1924 count */ + -1084, /* 115.04 kPa 1925 count */ + -1088, /* 115.10 kPa 1926 count */ + -1092, /* 115.15 kPa 1927 count */ + -1096, /* 115.21 kPa 1928 count */ + -1100, /* 115.26 kPa 1929 count */ + -1104, /* 115.32 kPa 1930 count */ + -1109, /* 115.37 kPa 1931 count */ + -1113, /* 115.42 kPa 1932 count */ + -1117, /* 115.48 kPa 1933 count */ + -1121, /* 115.53 kPa 1934 count */ + -1125, /* 115.59 kPa 1935 count */ + -1129, /* 115.64 kPa 1936 count */ + -1133, /* 115.70 kPa 1937 count */ + -1137, /* 115.75 kPa 1938 count */ + -1141, /* 115.80 kPa 1939 count */ + -1145, /* 115.86 kPa 1940 count */ + -1149, /* 115.91 kPa 1941 count */ + -1153, /* 115.97 kPa 1942 count */ + -1157, /* 116.02 kPa 1943 count */ + -1161, /* 116.08 kPa 1944 count */ + -1165, /* 116.13 kPa 1945 count */ + -1169, /* 116.18 kPa 1946 count */ + -1173, /* 116.24 kPa 1947 count */ + -1177, /* 116.29 kPa 1948 count */ + -1182, /* 116.35 kPa 1949 count */ + -1186, /* 116.40 kPa 1950 count */ + -1190, /* 116.46 kPa 1951 count */ + -1194, /* 116.51 kPa 1952 count */ + -1198, /* 116.56 kPa 1953 count */ + -1202, /* 116.62 kPa 1954 count */ + -1206, /* 116.67 kPa 1955 count */ + -1210, /* 116.73 kPa 1956 count */ + -1214, /* 116.78 kPa 1957 count */ + -1218, /* 116.84 kPa 1958 count */ + -1222, /* 116.89 kPa 1959 count */ + -1226, /* 116.94 kPa 1960 count */ + -1230, /* 117.00 kPa 1961 count */ + -1234, /* 117.05 kPa 1962 count */ + -1238, /* 117.11 kPa 1963 count */ + -1242, /* 117.16 kPa 1964 count */ + -1246, /* 117.22 kPa 1965 count */ + -1250, /* 117.27 kPa 1966 count */ + -1254, /* 117.32 kPa 1967 count */ + -1258, /* 117.38 kPa 1968 count */ + -1262, /* 117.43 kPa 1969 count */ + -1266, /* 117.49 kPa 1970 count */ + -1270, /* 117.54 kPa 1971 count */ + -1274, /* 117.60 kPa 1972 count */ + -1278, /* 117.65 kPa 1973 count */ + -1282, /* 117.70 kPa 1974 count */ + -1286, /* 117.76 kPa 1975 count */ + -1290, /* 117.81 kPa 1976 count */ + -1294, /* 117.87 kPa 1977 count */ + -1298, /* 117.92 kPa 1978 count */ + -1302, /* 117.98 kPa 1979 count */ + -1306, /* 118.03 kPa 1980 count */ + -1310, /* 118.08 kPa 1981 count */ + -1314, /* 118.14 kPa 1982 count */ + -1318, /* 118.19 kPa 1983 count */ + -1322, /* 118.25 kPa 1984 count */ + -1326, /* 118.30 kPa 1985 count */ + -1330, /* 118.36 kPa 1986 count */ + -1334, /* 118.41 kPa 1987 count */ + -1338, /* 118.46 kPa 1988 count */ + -1342, /* 118.52 kPa 1989 count */ + -1346, /* 118.57 kPa 1990 count */ + -1350, /* 118.63 kPa 1991 count */ + -1354, /* 118.68 kPa 1992 count */ + -1358, /* 118.74 kPa 1993 count */ + -1362, /* 118.79 kPa 1994 count */ + -1366, /* 118.84 kPa 1995 count */ + -1370, /* 118.90 kPa 1996 count */ + -1374, /* 118.95 kPa 1997 count */ + -1378, /* 119.01 kPa 1998 count */ + -1382, /* 119.06 kPa 1999 count */ + -1386, /* 119.12 kPa 2000 count */ + -1390, /* 119.17 kPa 2001 count */ + -1394, /* 119.22 kPa 2002 count */ + -1397, /* 119.28 kPa 2003 count */ + -1401, /* 119.33 kPa 2004 count */ + -1405, /* 119.39 kPa 2005 count */ + -1409, /* 119.44 kPa 2006 count */ + -1413, /* 119.50 kPa 2007 count */ + -1417, /* 119.55 kPa 2008 count */ + -1421, /* 119.60 kPa 2009 count */ + -1425, /* 119.66 kPa 2010 count */ + -1429, /* 119.71 kPa 2011 count */ + -1433, /* 119.77 kPa 2012 count */ + -1437, /* 119.82 kPa 2013 count */ + -1441, /* 119.88 kPa 2014 count */ + -1445, /* 119.93 kPa 2015 count */ + -1449, /* 119.98 kPa 2016 count */ + -1453, /* 120.04 kPa 2017 count */ + -1457, /* 120.09 kPa 2018 count */ + -1461, /* 120.15 kPa 2019 count */ + -1465, /* 120.20 kPa 2020 count */ + -1469, /* 120.26 kPa 2021 count */ + -1472, /* 120.31 kPa 2022 count */ + -1476, /* 120.36 kPa 2023 count */ + -1480, /* 120.42 kPa 2024 count */ + -1484, /* 120.47 kPa 2025 count */ + -1488, /* 120.53 kPa 2026 count */ + -1492, /* 120.58 kPa 2027 count */ + -1496, /* 120.64 kPa 2028 count */ + -1500, /* 120.69 kPa 2029 count */ + -1504, /* 120.74 kPa 2030 count */ + -1508, /* 120.80 kPa 2031 count */ + -1512, /* 120.85 kPa 2032 count */ + -1516, /* 120.91 kPa 2033 count */ + -1520, /* 120.96 kPa 2034 count */ + -1523, /* 121.02 kPa 2035 count */ + -1527, /* 121.07 kPa 2036 count */ + -1531, /* 121.12 kPa 2037 count */ + -1535, /* 121.18 kPa 2038 count */ + -1539, /* 121.23 kPa 2039 count */ + -1543, /* 121.29 kPa 2040 count */ + -1547, /* 121.34 kPa 2041 count */ + -1551, /* 121.40 kPa 2042 count */ + -1555, /* 121.45 kPa 2043 count */ + -1559, /* 121.50 kPa 2044 count */ + -1562, /* 121.56 kPa 2045 count */ + -1566, /* 121.61 kPa 2046 count */ + -1570, /* 121.67 kPa 2047 count */ diff --git a/ao.h b/ao.h index 23f13172..853738b2 100644 --- a/ao.h +++ b/ao.h @@ -29,7 +29,7 @@ /* Stack runs from above the allocated __data space to 0xfe, which avoids * writing to 0xff as that triggers the stack overflow indicator */ -#define AO_STACK_START 0x5c +#define AO_STACK_START 0x6f #define AO_STACK_END 0xfe #define AO_STACK_SIZE (AO_STACK_END - AO_STACK_START + 1) @@ -447,6 +447,10 @@ ao_log(void); void ao_log_start(void); +/* Stop logging */ +void +ao_log_stop(void); + /* Initialize the logging system */ void ao_log_init(void); @@ -470,7 +474,7 @@ enum ao_flight_state { extern __xdata struct ao_adc ao_flight_data; extern __data enum flight_state ao_flight_state; -extern __data uint16_t ao_flight_state_tick; +extern __data uint16_t ao_flight_tick; extern __data int16_t ao_flight_accel; extern __data int16_t ao_flight_pres; extern __data int16_t ao_ground_pres; @@ -496,4 +500,92 @@ ao_report_notify(void); void ao_report_init(void); +/* + * ao_convert.c + * + * Given raw data, convert to SI units + */ + +/* pressure from the sensor to altitude in meters */ +int16_t +ao_pres_to_altitude(int16_t pres) __reentrant; + +int16_t +ao_temp_to_dC(int16_t temp) __reentrant; + +int16_t +ao_accel_to_dm_per_s2(int16_t accel) +{ + return (998 - (accel >> 4)) * 3300 / 2047; +} + +/* + * ao_dbg.c + * + * debug another telemetrum board + */ + +/* Send a byte to the dbg target */ +void +ao_dbg_send_byte(uint8_t byte); + +/* Receive a byte from the dbg target */ +uint8_t +ao_dbg_recv_byte(void); + +/* Start a bulk transfer to/from dbg target memory */ +void +ao_dbg_start_transfer(uint16_t addr); + +/* End a bulk transfer to/from dbg target memory */ +void +ao_dbg_end_transfer(void); + +/* Write a byte to dbg target memory */ +void +ao_dbg_write_byte(uint8_t byte); + +/* Read a byte from dbg target memory */ +uint8_t +ao_dbg_read_byte(void); + +/* Enable dbg mode, switching use of the pins */ +void +ao_dbg_debug_mode(void); + +/* Reset the dbg target */ +void +ao_dbg_reset(void); + +/* + * ao_serial.c + */ + +void +ao_serial_rx1_isr(void) interrupt 3; + +void +ao_serial_tx1_isr(void) interrupt 14; + +uint8_t +ao_serial_getchar(void) __critical; + +void +ao_serial_putchar(uint8_t c) __critical; + +void +ao_serial_init(void); + +/* + * ao_gps.c + */ + +void +ao_gps(void); + +void +ao_gps_init(void); + + #endif /* _AO_H_ */ + diff --git a/ao_cmd.c b/ao_cmd.c index 74cbb7b1..3b69541b 100644 --- a/ao_cmd.c +++ b/ao_cmd.c @@ -342,17 +342,16 @@ echo(void) lex_echo = lex_i != 0; } -#if INCLUDE_REMOTE_DEBUG static void debug_enable(void) { - dbg_debug_mode(); + ao_dbg_debug_mode(); } static void debug_reset(void) { - dbg_reset(); + ao_dbg_reset(); } static void @@ -365,7 +364,7 @@ debug_put(void) hex(); if (lex_status != SUCCESS) break; - dbg_send_byte(lex_i); + ao_dbg_send_byte(lex_i); } } @@ -386,7 +385,7 @@ debug_get(void) for (i = 0; i < count; i++) { if (i && (i & 7) == 0) put_string("\n"); - byte = dbg_recv_byte(); + byte = ao_dbg_recv_byte(); put8(byte); putchar(' '); } @@ -423,15 +422,15 @@ debug_input(void) addr = lex_i; if (lex_status != SUCCESS) return; - dbg_start_transfer(addr); + ao_dbg_start_transfer(addr); i = 0; while (count--) { if (!(i++ & 7)) put_string("\n"); - b = dbg_read_byte(); + b = ao_dbg_read_byte(); put8(b); } - dbg_end_transfer(); + ao_dbg_end_transfer(); put_string("\n"); } @@ -448,17 +447,16 @@ debug_output(void) addr = lex_i; if (lex_status != SUCCESS) return; - dbg_start_transfer(addr); + ao_dbg_start_transfer(addr); while (count--) { b = getnibble() << 4; b |= getnibble(); if (lex_status != SUCCESS) return; - dbg_write_byte(b); + ao_dbg_write_byte(b); } - dbg_end_transfer(); + ao_dbg_end_transfer(); } -#endif static void dump_log(void) @@ -477,6 +475,16 @@ dump_log(void) } } +static void +send_serial(void) +{ + white(); + while (lex_c != '\n') { + ao_serial_putchar(lex_c); + lex(); + } +} + static const uint8_t help_txt[] = "All numbers are in hex\n" "? Print this message\n" @@ -486,7 +494,7 @@ static const uint8_t help_txt[] = "w ... Write data to EEPROM\n" "l Dump last flight log\n" "E <0 off, 1 on> Set command echo mode\n" -#if INCLUDE_REMOTE_DEBUG + "S Send data to serial line\n" "\n" "Target debug commands:\n" "D Enable debug mode\n" @@ -495,7 +503,6 @@ static const uint8_t help_txt[] = "G Get data from debug port\n" "O Output bytes to target at \n" "I Input bytes to target at \n" -#endif ; static void @@ -548,10 +555,12 @@ ao_cmd(void *parameters) case 'l': dump_log(); break; + case 'S': + send_serial(); + break; case 'E': echo(); break; -#if INCLUDE_REMOTE_DEBUG case 'D': debug_enable(); break; @@ -570,7 +579,6 @@ ao_cmd(void *parameters) case 'O': debug_output(); break; -#endif case '\r': case '\n': break; diff --git a/ao_convert.c b/ao_convert.c new file mode 100644 index 00000000..08f628b4 --- /dev/null +++ b/ao_convert.c @@ -0,0 +1,47 @@ +/* + * Copyright © 2009 Keith Packard + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +#include "ao.h" + +static const int16_t altitude_table[2048] = { +#include "altitude.h" +}; + +int16_t +ao_pres_to_altitude(int16_t pres) __reentrant +{ + pres = pres >> 4; + if (pres < 0) pres = 0; + if (pres > 2047) pres = 2047; + return altitude_table[pres]; +} + +static __xdata uint8_t ao_temp_mutex; + +int16_t +ao_temp_to_dC(int16_t temp) __reentrant +{ + int16_t ret; + + ao_mutex_get(&ao_temp_mutex); + ret = (int16_t) ((temp >> 4) * 3300L / 2047L) - 500; + ao_mutex_put(&ao_temp_mutex); + return ret; +} + +int16_t +ao_accel_to_cm_per_s2(int16_t accel) __reentrant; diff --git a/ao_dbg.c b/ao_dbg.c new file mode 100644 index 00000000..3ccfa052 --- /dev/null +++ b/ao_dbg.c @@ -0,0 +1,216 @@ +/* + * Copyright © 2009 Keith Packard + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +#include "ao.h" + +#define DBG_CLOCK (1 << 3) +#define DBG_DATA (1 << 4) +#define DBG_RESET_N (1 << 5) + +#define DBG_CLOCK_PIN (P0_3) +#define DBG_DATA_PIN (P0_4) +#define DBG_RESET_N_PIN (P0_5) + +static void +ao_dbg_send_bits(uint8_t msk, uint8_t val) +{ + P0 = (P0 & ~msk) | (val & msk); +} + +#define ao_dbg_pause() do { _asm nop; nop; nop _endasm; } while (0); + +void +ao_dbg_send_byte(uint8_t byte) +{ + __xdata uint8_t b, d; + + P0 |= DBG_DATA; + P0DIR |= DBG_DATA; + for (b = 0; b < 8; b++) { + d = 0; + if (byte & 0x80) + d = DBG_DATA; + byte <<= 1; + ao_dbg_send_bits(DBG_CLOCK|DBG_DATA, DBG_CLOCK|d); + ao_dbg_pause(); + ao_dbg_send_bits(DBG_CLOCK|DBG_DATA, 0 |d); + ao_dbg_pause(); + } + P0DIR &= ~DBG_DATA; +} + +uint8_t +ao_dbg_recv_byte(void) +{ + __xdata uint8_t byte, b; + + byte = 0; + for (b = 0; b < 8; b++) { + byte = byte << 1; + ao_dbg_send_bits(DBG_CLOCK, DBG_CLOCK); + ao_dbg_pause(); + if (DBG_DATA_PIN) + byte |= 1; + ao_dbg_send_bits(DBG_CLOCK, 0); + ao_dbg_pause(); + } + return byte; +} + +/* 8051 instructions + */ +#define NOP 0x00 +#define MOV_direct_data 0x75 +#define LJMP 0x02 +#define MOV_Rn_data(n) (0x78 | (n)) +#define DJNZ_Rn_rel(n) (0xd8 | (n)) +#define MOV_A_direct 0xe5 +#define MOV_direct1_direct2 0x85 +#define MOV_direct_A 0xf5 +#define MOV_DPTR_data16 0x90 +#define MOV_A_data 0x74 +#define MOVX_atDPTR_A 0xf0 +#define MOVX_A_atDPTR 0xe0 +#define INC_DPTR 0xa3 +#define TRAP 0xa5 +#define SJMP 0x80 +#define JB 0x20 + +#define DEBUG_INSTR(l) (0x54 | (l)) + +#define SFR_PSW 0xD0 +#define SFR_DPL0 0x82 +#define SFR_DPH0 0x83 +#define SFR_DPL1 0x84 +#define SFR_DPH1 0x85 + +__xdata uint8_t save_acc; +__xdata uint8_t save_psw; +__xdata uint8_t save_dpl0; +__xdata uint8_t save_dph0; +__xdata uint8_t save_dpl1; +__xdata uint8_t save_dph1; + +static uint8_t +ao_dbg_inst1(uint8_t a) +{ + ao_dbg_send_byte(DEBUG_INSTR(1)); + ao_dbg_send_byte(a); + return ao_dbg_recv_byte(); +} + +static uint8_t +ao_dbg_inst2(uint8_t a, uint8_t b) +{ + ao_dbg_send_byte(DEBUG_INSTR(2)); + ao_dbg_send_byte(a); + ao_dbg_send_byte(b); + return ao_dbg_recv_byte(); +} + +static uint8_t +ao_dbg_inst3(uint8_t a, uint8_t b, uint8_t c) +{ + ao_dbg_send_byte(DEBUG_INSTR(3)); + ao_dbg_send_byte(a); + ao_dbg_send_byte(b); + ao_dbg_send_byte(c); + return ao_dbg_recv_byte(); +} + +void +ao_dbg_start_transfer(uint16_t addr) +{ + save_acc = ao_dbg_inst1(NOP); + save_psw = ao_dbg_inst2(MOV_A_direct, SFR_PSW); + save_dpl0 = ao_dbg_inst2(MOV_A_direct, SFR_DPL0); + save_dph0 = ao_dbg_inst2(MOV_A_direct, SFR_DPH0); + save_dpl1 = ao_dbg_inst2(MOV_A_direct, SFR_DPL1); + save_dph1 = ao_dbg_inst2(MOV_A_direct, SFR_DPH1); + ao_dbg_inst3(MOV_DPTR_data16, addr >> 8, addr); +} + +void +ao_dbg_end_transfer(void) +{ + ao_dbg_inst3(MOV_direct_data, SFR_DPL0, save_dpl0); + ao_dbg_inst3(MOV_direct_data, SFR_DPH0, save_dph0); + ao_dbg_inst3(MOV_direct_data, SFR_DPL1, save_dpl1); + ao_dbg_inst3(MOV_direct_data, SFR_DPH1, save_dph1); + ao_dbg_inst3(MOV_direct_data, SFR_PSW, save_psw); + ao_dbg_inst2(MOV_A_data, save_acc); +} + +void +ao_dbg_write_byte(uint8_t byte) +{ + ao_dbg_inst2(MOV_A_data, byte); + ao_dbg_inst1(MOVX_atDPTR_A); + ao_dbg_inst1(INC_DPTR); +} + +uint8_t +ao_dbg_read_byte(void) +{ + ao_dbg_inst1(MOVX_A_atDPTR); + return ao_dbg_inst1(INC_DPTR); +} + +static void +ao_dbg_set_pins(void) +{ + /* Disable peripheral use of P0 */ + ADCCFG = 0; + P0SEL = 0; + + + /* make P0_4 tri-state */ + P0INP = DBG_DATA; + P2INP &= ~(P2INP_PDUP0_PULL_DOWN); + + /* Raise RESET_N and CLOCK */ + P0 = DBG_RESET_N | DBG_CLOCK; + + /* RESET_N and CLOCK are outputs now */ + P0DIR = DBG_RESET_N | DBG_CLOCK; +} + +void +ao_dbg_debug_mode(void) +{ + ao_dbg_set_pins(); + ao_dbg_send_bits(DBG_CLOCK|DBG_DATA|DBG_RESET_N, DBG_CLOCK|DBG_DATA|DBG_RESET_N); + ao_dbg_send_bits(DBG_CLOCK|DBG_DATA|DBG_RESET_N, 0 |DBG_DATA| 0 ); + ao_dbg_send_bits(DBG_CLOCK|DBG_DATA|DBG_RESET_N, DBG_CLOCK|DBG_DATA| 0 ); + ao_dbg_send_bits(DBG_CLOCK|DBG_DATA|DBG_RESET_N, 0 |DBG_DATA| 0 ); + ao_dbg_send_bits(DBG_CLOCK|DBG_DATA|DBG_RESET_N, DBG_CLOCK|DBG_DATA| 0 ); + ao_dbg_send_bits(DBG_CLOCK|DBG_DATA|DBG_RESET_N, 0 |DBG_DATA|DBG_RESET_N); +} + +void +ao_dbg_reset(void) +{ + ao_dbg_set_pins(); + ao_dbg_send_bits(DBG_CLOCK|DBG_DATA|DBG_RESET_N, DBG_CLOCK|DBG_DATA|DBG_RESET_N); + ao_dbg_send_bits(DBG_CLOCK|DBG_DATA|DBG_RESET_N, DBG_CLOCK|DBG_DATA| 0 ); + ao_dbg_send_bits(DBG_CLOCK|DBG_DATA|DBG_RESET_N, DBG_CLOCK|DBG_DATA| 0 ); + ao_dbg_send_bits(DBG_CLOCK|DBG_DATA|DBG_RESET_N, DBG_CLOCK|DBG_DATA| 0 ); + ao_dbg_send_bits(DBG_CLOCK|DBG_DATA|DBG_RESET_N, DBG_CLOCK|DBG_DATA| 0 ); + ao_dbg_send_bits(DBG_CLOCK|DBG_DATA|DBG_RESET_N, DBG_CLOCK|DBG_DATA|DBG_RESET_N); +} + diff --git a/ao_flight.c b/ao_flight.c index 5060b53c..d4f2ae80 100644 --- a/ao_flight.c +++ b/ao_flight.c @@ -22,13 +22,30 @@ __xdata struct ao_adc ao_flight_data; /* last acquired data */ __data enum flight_state ao_flight_state; /* current flight state */ -__data uint16_t ao_flight_state_tick; /* time of last data */ +__data uint16_t ao_flight_tick; /* time of last data */ __data int16_t ao_flight_accel; /* filtered acceleration */ __data int16_t ao_flight_pres; /* filtered pressure */ __data int16_t ao_ground_pres; /* startup pressure */ __data int16_t ao_ground_accel; /* startup acceleration */ __data int16_t ao_min_pres; /* minimum recorded pressure */ __data uint16_t ao_launch_time; /* time of launch detect */ +__data int16_t ao_main_pres; /* pressure to eject main */ + +/* + * track min/max data over a long interval to detect + * resting + */ +__data uint16_t ao_interval_end; +__data int16_t ao_interval_cur_min_accel; +__data int16_t ao_interval_cur_max_accel; +__data int16_t ao_interval_cur_min_pres; +__data int16_t ao_interval_cur_max_pres; +__data int16_t ao_interval_min_accel; +__data int16_t ao_interval_max_accel; +__data int16_t ao_interval_min_pres; +__data int16_t ao_interval_max_pres; + +#define AO_INTERVAL_TICKS AO_SEC_TO_TICKS(5) /* Accelerometer calibration * @@ -73,6 +90,8 @@ __data uint16_t ao_launch_time; /* time of launch detect */ #define BARO_kPa 268 #define BARO_LAUNCH (BARO_kPa / 5) /* .2kPa */ #define BARO_APOGEE (BARO_kPa / 10) /* .1kPa */ +#define BARO_MAIN (BARO_kPa) /* 1kPa */ +#define BARO_LAND (BARO_kPa / 20) /* .05kPa */ /* We also have a clock, which can be used to sanity check things in * case of other failures @@ -92,7 +111,17 @@ ao_flight(void) ao_flight_accel += ao_flight_data.accel >> 4; ao_flight_pres -= ao_flight_pres >> 4; ao_flight_pres += ao_flight_data.pres >> 4; + ao_flight_tick = ao_time(); + ao_flight_tick = ao_time(); + if ((int16_t) (ao_flight_tick - ao_interval_end) >= 0) { + ao_interval_max_pres = ao_interval_cur_max_pres; + ao_interval_min_pres = ao_interval_cur_min_pres; + ao_interval_max_accel = ao_interval_cur_max_accel; + ao_interval_min_accel = ao_interval_cur_min_accel; + ao_interval_end = ao_flight_tick + AO_INTERVAL_TICKS; + } + switch (ao_flight_state) { case ao_flight_startup: if (nsamples < 100) { @@ -102,13 +131,15 @@ ao_flight(void) ao_ground_accel = ao_flight_accel; ao_ground_pres = ao_flight_pres; ao_min_pres = ao_flight_pres; + ao_main_pres = ao_ground_pres - BARO_MAIN; + + ao_interval_end = ao_flight_tick; + if (ao_flight_accel < ACCEL_NOSE_UP) { ao_flight_state = ao_flight_launchpad; - ao_flight_state_tick = ao_time(); ao_report_notify(); } else { ao_flight_state = ao_flight_idle; - ao_flight_state_tick = ao_time(); ao_report_notify(); } /* signal successful initialization by turning off the LED */ @@ -119,7 +150,6 @@ ao_flight(void) ao_flight_pres + BARO_LAUNCH < ao_ground_pres) { ao_flight_state = ao_flight_boost; - ao_flight_state_tick = ao_time(); ao_log_start(); ao_report_notify(); break; @@ -130,7 +160,6 @@ ao_flight(void) (int16_t) (ao_flight_data.tick - ao_launch_time) > BOOST_TICKS_MAX) { ao_flight_state = ao_flight_coast; - ao_flight_state_tick = ao_time(); ao_report_notify(); break; } @@ -140,11 +169,33 @@ ao_flight(void) ao_min_pres = ao_flight_pres; if (ao_flight_pres - BARO_APOGEE > ao_min_pres) { ao_flight_state = ao_flight_apogee; - ao_flight_state_tick = ao_time(); ao_report_notify(); } break; case ao_flight_apogee: +// ao_ignite(AO_IGNITE_DROGUE); + ao_flight_state = ao_flight_drogue; + ao_report_notify(); + break; + case ao_flight_drogue: + if (ao_flight_pres >= ao_main_pres) { +// ao_ignite(AO_IGNITE_MAIN); + ao_flight_state = ao_flight_main; + ao_report_notify(); + } + if ((ao_interval_max_pres - ao_interval_min_pres) < BARO_LAND) { + ao_flight_state = ao_flight_landed; + ao_report_notify(); + } + break; + case ao_flight_main: + if ((ao_interval_max_pres - ao_interval_min_pres) < BARO_LAND) { + ao_flight_state = ao_flight_landed; + ao_report_notify(); + } + break; + case ao_flight_landed: + ao_log_stop(); break; } } @@ -156,6 +207,11 @@ void ao_flight_init(void) { ao_flight_state = ao_flight_startup; + ao_interval_min_accel = 0; + ao_interval_max_accel = 0x7fff; + ao_interval_min_pres = 0; + ao_interval_max_pres = 0x7fff; + ao_interval_end = AO_INTERVAL_TICKS; ao_add_task(&flight_task, ao_flight); } diff --git a/ao_gps.c b/ao_gps.c new file mode 100644 index 00000000..e689b704 --- /dev/null +++ b/ao_gps.c @@ -0,0 +1,79 @@ +/* + * Copyright © 2009 Keith Packard + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +#include "ao.h" + +__xdata struct ao_task ao_gps_task; + +#define AO_GPS_MAX_LINE 80 + +#define AO_GPS_LEADER 6 + +__xdata uint8_t ao_gps_line[AO_GPS_MAX_LINE+1] = "GPGGA,"; +__xdata uint8_t ao_gps_mutex; +__xdata uint8_t ao_gps_data; + +const uint8_t ao_gps_config[] = + "$PSRF103,00,00,01,01*25\r\n" /* GGA 1 per sec */ + "$PSRF103,01,00,00,01*25\r\n" /* GLL disable */ + "$PSRF103,02,00,00,01*26\r\n" /* GSA disable */ + "$PSRF103,03,00,00,01*27\r\n" /* GSV disable */ + "$PSRF103,04,00,00,01*20\r\n" /* RMC disable */ + "$PSRF103,05,00,00,01*21\r\n"; /* VTG disable */ + + +void +ao_gps(void) +{ + uint8_t c; + uint8_t i; + + for (i = 0; (c = ao_gps_config[i]); i++) + ao_serial_putchar(c); + for (;;) { + for (;;) { + c = ao_serial_getchar(); + if (c == '$') + break; + } + for (i = 0; i < AO_GPS_LEADER; i++) + if (ao_serial_getchar() != ao_gps_line[i]) + break; + if (i != AO_GPS_LEADER) + continue; + ao_mutex_get(&ao_gps_mutex); + for (;;) { + c = ao_serial_getchar(); + if (c < ' ') + break; + if (i < AO_GPS_MAX_LINE) + ao_gps_line[i++] = c; + } + ao_gps_line[i] = '\0'; + ao_gps_data = 1; + ao_mutex_put(&ao_gps_mutex); + ao_wakeup(&ao_gps_data); + puts(ao_gps_line); + ao_usb_flush(); + } +} + +void +ao_gps_init(void) +{ + ao_add_task(&ao_gps_task, ao_gps); +} diff --git a/ao_log.c b/ao_log.c index 65196ae2..b24602e9 100644 --- a/ao_log.c +++ b/ao_log.c @@ -121,7 +121,7 @@ ao_log(void) ao_sleep(&ao_log_running); log.type = AO_LOG_FLIGHT; - log.tick = ao_flight_state_tick; + log.tick = ao_flight_tick; log.u.flight.serial = 0; log.u.flight.flight = ao_log_dump_flight + 1; ao_log_data(&log); @@ -130,7 +130,7 @@ ao_log(void) if (ao_flight_state != ao_log_state) { ao_log_state = ao_flight_state; log.type = AO_LOG_STATE; - log.tick = ao_flight_state_tick; + log.tick = ao_flight_tick; log.u.state.state = ao_log_state; log.u.state.reason = 0; ao_log_data(&log); @@ -172,6 +172,13 @@ ao_log_start(void) ao_wakeup(&ao_log_running); } +void +ao_log_stop(void) +{ + ao_log_running = 0; + ao_log_flush(); +} + static __xdata struct ao_task ao_log_task; void diff --git a/ao_main.c b/ao_main.c index a63cadb7..e4ccdf59 100644 --- a/ao_main.c +++ b/ao_main.c @@ -37,5 +37,7 @@ main(void) ao_log_init(); ao_report_init(); ao_usb_init(); + ao_serial_init(); + ao_gps_init(); ao_start_scheduler(); } diff --git a/ao_serial.c b/ao_serial.c new file mode 100644 index 00000000..215a301d --- /dev/null +++ b/ao_serial.c @@ -0,0 +1,123 @@ +/* + * Copyright © 2009 Keith Packard + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +#include "ao.h" + +#define SERIAL_FIFO 32 + +struct ao_fifo { + uint8_t insert; + uint8_t remove; + uint8_t fifo[SERIAL_FIFO]; +}; + +volatile __xdata struct ao_fifo ao_usart1_rx_fifo; +volatile __xdata struct ao_fifo ao_usart1_tx_fifo; + +#define ao_fifo_insert(f,c) do { \ + (f).fifo[(f).insert] = (c); \ + (f).insert = ((f).insert + 1) & (SERIAL_FIFO-1); \ +} while(0) + +#define ao_fifo_remove(f,c) do {\ + c = (f).fifo[(f).remove]; \ + (f).remove = ((f).remove + 1) & (SERIAL_FIFO-1); \ +} while(0) + +#define ao_fifo_full(f) ((((f).insert + 1) & (SERIAL_FIFO-1)) == (f).remove) +#define ao_fifo_empty(f) ((f).insert == (f).remove) + +void +ao_serial_rx1_isr(void) interrupt 3 +{ + if (!ao_fifo_full(ao_usart1_rx_fifo)) + ao_fifo_insert(ao_usart1_rx_fifo, U1DBUF); + ao_wakeup(&ao_usart1_rx_fifo); +} + +static __xdata uint8_t ao_serial_tx1_started; + +static void +ao_serial_tx1_start(void) +{ + if (!ao_fifo_empty(ao_usart1_tx_fifo) && + !ao_serial_tx1_started) + { + ao_serial_tx1_started = 1; + ao_fifo_remove(ao_usart1_tx_fifo, U1DBUF); + } +} + +void +ao_serial_tx1_isr(void) interrupt 14 +{ + UTX1IF = 0; + ao_serial_tx1_started = 0; + ao_serial_tx1_start(); + ao_wakeup(&ao_usart1_tx_fifo); +} + +uint8_t +ao_serial_getchar(void) __critical +{ + uint8_t c; + while (ao_fifo_empty(ao_usart1_rx_fifo)) + ao_sleep(&ao_usart1_rx_fifo); + ao_fifo_remove(ao_usart1_rx_fifo, c); + return c; +} + +void +ao_serial_putchar(uint8_t c) __critical +{ + while (ao_fifo_full(ao_usart1_tx_fifo)) + ao_sleep(&ao_usart1_tx_fifo); + ao_fifo_insert(ao_usart1_tx_fifo, c); + ao_serial_tx1_start(); +} + +void +ao_serial_init(void) +{ + /* Set up the USART pin assignment */ + PERCFG = (PERCFG & ~PERCFG_U1CFG_ALT_MASK) | PERCFG_U1CFG_ALT_2; + + /* ee has already set the P2SEL bits */ + + /* Make the USART pins be controlled by the USART */ + P1SEL |= (1 << 6) | (1 << 7); + + /* UART mode with receiver enabled */ + U1CSR = (UxCSR_MODE_UART | UxCSR_RE); + + /* Pick a 4800 baud rate */ + U1BAUD = 163; /* 4800 */ + U1GCR = 7 << UxGCR_BAUD_E_SHIFT; /* 4800 */ + + /* Reasonable serial parameters */ + U1UCR = (UxUCR_FLUSH | + UxUCR_FLOW_DISABLE | + UxUCR_D9_ODD_PARITY | + UxUCR_BIT9_8_BITS | + UxUCR_PARITY_DISABLE | + UxUCR_SPB_1_STOP_BIT | + UxUCR_STOP_HIGH | + UxUCR_START_LOW); + + IEN0 |= IEN0_URX1IE; + IEN2 |= IEN2_UTX1IE; +} diff --git a/ao_task.c b/ao_task.c index f79d6e1f..4fb84055 100644 --- a/ao_task.c +++ b/ao_task.c @@ -65,9 +65,6 @@ ao_add_task(__xdata struct ao_task * task, void (*start)(void)) void ao_yield(void) _naked { - static uint8_t __data stack_len; - static __data uint8_t * __data stack_ptr; - static __xdata uint8_t * __data save_ptr; /* Save current context */ _asm @@ -97,13 +94,17 @@ ao_yield(void) _naked if (ao_cur_task_index != AO_NO_TASK_INDEX) { + uint8_t stack_len; + __data uint8_t * stack_ptr; + __xdata uint8_t * save_ptr; /* Save the current stack */ stack_len = SP - (AO_STACK_START - 1); ao_cur_task->stack_count = stack_len; stack_ptr = (uint8_t __data *) AO_STACK_START; save_ptr = (uint8_t __xdata *) ao_cur_task->stack; - while (stack_len--) + do *save_ptr++ = *stack_ptr++; + while (--stack_len); } /* Empty the stack; might as well let interrupts have the whole thing */ @@ -121,14 +122,21 @@ ao_yield(void) _naked break; } - /* Restore the old stack */ - stack_len = ao_cur_task->stack_count; - SP = AO_STACK_START - 1 + stack_len; + { + uint8_t stack_len; + __data uint8_t * stack_ptr; + __xdata uint8_t * save_ptr; - stack_ptr = (uint8_t __data *) AO_STACK_START; - save_ptr = (uint8_t __xdata *) ao_cur_task->stack; - while (stack_len--) - *stack_ptr++ = *save_ptr++; + /* Restore the old stack */ + stack_len = ao_cur_task->stack_count; + SP = AO_STACK_START - 1 + stack_len; + + stack_ptr = (uint8_t __data *) AO_STACK_START; + save_ptr = (uint8_t __xdata *) ao_cur_task->stack; + do + *stack_ptr++ = *save_ptr++; + while (--stack_len); + } _asm pop _bp diff --git a/ao_timer.c b/ao_timer.c index 702159b7..2bd47af1 100644 --- a/ao_timer.c +++ b/ao_timer.c @@ -21,12 +21,10 @@ static volatile __data uint16_t ao_tick_count; uint16_t ao_time(void) { - volatile bit ea_save; __data uint16_t ret; - - ea_save = EA; - ret = ao_tick_count; - EA = ea_save; + __critical { + ret = ao_tick_count; + } return ret; } diff --git a/ao_usb.c b/ao_usb.c index 8a0c672c..a7462ed5 100644 --- a/ao_usb.c +++ b/ao_usb.c @@ -241,7 +241,7 @@ static const uint8_t ao_usb_descriptors [] = /* iSerial */ 0x0e, AO_USB_DESC_STRING, - 't', 0, 'e', 0, 'l', 0, 'e', 0, '-', 0, '0', 0, + '0', 0, '0', 0, '0', 0, '0', 0, '0', 0, '0', 0, /* Terminating zero */ 0 diff --git a/gps-cksum b/gps-cksum new file mode 100755 index 00000000..a08153bf --- /dev/null +++ b/gps-cksum @@ -0,0 +1,17 @@ +#!/usr/bin/env nickle + +int checksum(string a) +{ + int c = 0; + for (int i = 0; i < String::length(a); i++) + c ^= a[i]; + return c; +} + +void main() +{ + for (int i = 1; i < dim(argv); i++) + printf ("$%s*%02x\n", argv[i], checksum(argv[i])); +} + +main(); diff --git a/make-altitude b/make-altitude new file mode 100644 index 00000000..ddfab5fc --- /dev/null +++ b/make-altitude @@ -0,0 +1,192 @@ +#!/usr/bin/nickle -f +/* + * Pressure Sensor Model, version 1.1 + * + * written by Holly Grimes + * + * Uses the International Standard Atmosphere as described in + * "A Quick Derivation relating altitude to air pressure" (version 1.03) + * from the Portland State Aerospace Society, except that the atmosphere + * is divided into layers with each layer having a different lapse rate. + * + * Lapse rate data for each layer was obtained from Wikipedia on Sept. 1, 2007 + * at site MAXIMUM_ALTITUDE) /* FIX ME: use sensor data to improve model */ + return 0; + + /* calculate the base temperature and pressure for the atmospheric layer + associated with the inputted altitude */ + for(layer_number = 0; layer_number < NUMBER_OF_LAYERS - 1 && altitude > base_altitude[layer_number + 1]; layer_number++) { + delta_z = base_altitude[layer_number + 1] - base_altitude[layer_number]; + if (lapse_rate[layer_number] == 0.0) { + exponent = GRAVITATIONAL_ACCELERATION * delta_z + / AIR_GAS_CONSTANT / base_temperature; + base_pressure *= exp(exponent); + } + else { + base = (lapse_rate[layer_number] * delta_z / base_temperature) + 1.0; + exponent = GRAVITATIONAL_ACCELERATION / + (AIR_GAS_CONSTANT * lapse_rate[layer_number]); + base_pressure *= pow(base, exponent); + } + base_temperature += delta_z * lapse_rate[layer_number]; + } + + /* calculate the pressure at the inputted altitude */ + delta_z = altitude - base_altitude[layer_number]; + if (lapse_rate[layer_number] == 0.0) { + exponent = GRAVITATIONAL_ACCELERATION * delta_z + / AIR_GAS_CONSTANT / base_temperature; + pressure = base_pressure * exp(exponent); + } + else { + base = (lapse_rate[layer_number] * delta_z / base_temperature) + 1.0; + exponent = GRAVITATIONAL_ACCELERATION / + (AIR_GAS_CONSTANT * lapse_rate[layer_number]); + pressure = base_pressure * pow(base, exponent); + } + + return pressure; +} + + +/* outputs the altitude associated with the given pressure. the altitude + returned is measured with respect to the mean sea level */ +real pressure_to_altitude(real pressure) { + + real next_base_temperature = LAYER0_BASE_TEMPERATURE; + real next_base_pressure = LAYER0_BASE_PRESSURE; + + real altitude; + real base_pressure; + real base_temperature; + real base; /* base for function to determine base pressure of next layer */ + real exponent; /* exponent for function to determine base pressure + of next layer */ + real coefficient; + int layer_number; /* identifies layer in the atmosphere */ + int delta_z; /* difference between two altitudes */ + + if (pressure < 0) /* illegal pressure */ + return -1; + if (pressure < MINIMUM_PRESSURE) /* FIX ME: use sensor data to improve model */ + return MAXIMUM_ALTITUDE; + + /* calculate the base temperature and pressure for the atmospheric layer + associated with the inputted pressure. */ + layer_number = -1; + do { + layer_number++; + base_pressure = next_base_pressure; + base_temperature = next_base_temperature; + delta_z = base_altitude[layer_number + 1] - base_altitude[layer_number]; + if (lapse_rate[layer_number] == 0.0) { + exponent = GRAVITATIONAL_ACCELERATION * delta_z + / AIR_GAS_CONSTANT / base_temperature; + next_base_pressure *= exp(exponent); + } + else { + base = (lapse_rate[layer_number] * delta_z / base_temperature) + 1.0; + exponent = GRAVITATIONAL_ACCELERATION / + (AIR_GAS_CONSTANT * lapse_rate[layer_number]); + next_base_pressure *= pow(base, exponent); + } + next_base_temperature += delta_z * lapse_rate[layer_number]; + } + while(layer_number < NUMBER_OF_LAYERS - 1 && pressure < next_base_pressure); + + /* calculate the altitude associated with the inputted pressure */ + if (lapse_rate[layer_number] == 0.0) { + coefficient = (AIR_GAS_CONSTANT / GRAVITATIONAL_ACCELERATION) + * base_temperature; + altitude = base_altitude[layer_number] + + coefficient * log(pressure / base_pressure); + } + else { + base = pressure / base_pressure; + exponent = AIR_GAS_CONSTANT * lapse_rate[layer_number] + / GRAVITATIONAL_ACCELERATION; + coefficient = base_temperature / lapse_rate[layer_number]; + altitude = base_altitude[layer_number] + + coefficient * (pow(base, exponent) - 1); + } + + return altitude; +} + +real feet_to_meters(real feet) +{ + return feet * (12 * 2.54 / 100); +} + +real meters_to_feet(real meters) +{ + return meters / (12 * 2.54 / 100); +} + +/* + * Values for our MP3H6115A pressure sensor + * + * From the data sheet: + * + * Pressure range: 15-115 kPa + * Voltage at 115kPa: 2.82 + * Output scale: 27mV/kPa + * + * + * 27 mV/kPa * 2047 / 3300 counts/mV = 16.75 counts/kPa + * 2.82V * 2047 / 3.3 counts/V = 1749 counts/115 kPa + */ + +real counts_per_kPa = 27 * 2047 / 3300; +real counts_at_101_3kPa = 1674; + +real count_to_kPa(real count) +{ + return (count / 2047 + 0.095) / 0.009; +} + +for (real count = 0; count <= 2047; count++) { + real kPa = count_to_kPa(count); + real meters = pressure_to_altitude(kPa * 1000); + printf (" %d, /* %6.2g kPa %d count */\n", + floor (meters + 0.5), kPa, count); +} -- 2.30.2