diff options
| -rw-r--r-- | Makefile | 12 | ||||
| -rw-r--r-- | altitude.h | 2048 | ||||
| -rw-r--r-- | ao.h | 96 | ||||
| -rw-r--r-- | ao_cmd.c | 40 | ||||
| -rw-r--r-- | ao_convert.c | 47 | ||||
| -rw-r--r-- | ao_dbg.c | 216 | ||||
| -rw-r--r-- | ao_flight.c | 68 | ||||
| -rw-r--r-- | ao_gps.c | 79 | ||||
| -rw-r--r-- | ao_log.c | 11 | ||||
| -rw-r--r-- | ao_main.c | 2 | ||||
| -rw-r--r-- | ao_serial.c | 123 | ||||
| -rw-r--r-- | ao_task.c | 30 | ||||
| -rw-r--r-- | ao_timer.c | 8 | ||||
| -rw-r--r-- | ao_usb.c | 2 | ||||
| -rwxr-xr-x | gps-cksum | 17 | ||||
| -rw-r--r-- | make-altitude | 192 | 
16 files changed, 2946 insertions, 45 deletions
| @@ -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 */ @@ -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_ */ + @@ -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 <block> <start> <len> <data> ... 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<data>                            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 <count>                          Get data from debug port\n"  	"O <count> <addr>                   Output <count> bytes to target at <addr>\n"  	"I <count> <addr>                   Input <count> bytes to target at <addr>\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 <keithp@keithp.com> + * + * 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 <keithp@keithp.com> + * + * 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 <keithp@keithp.com> + * + * 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); +} @@ -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 @@ -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 <keithp@keithp.com> + * + * 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; +} @@ -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 @@ -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;  } @@ -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 <http://en.wikipedia.org/wiki/International_Standard_Atmosphere + * + * Height measurements use the local tangent plane.  The postive z-direction is up. + * + * All measurements are given in SI units (Kelvin, Pascal, meter, meters/second^2). + *   The lapse rate is given in Kelvin/meter, the gas constant for air is given + *   in Joules/(kilogram-Kelvin). + */ + +const real GRAVITATIONAL_ACCELERATION = -9.80665; +const real AIR_GAS_CONSTANT = 287.053; +const int NUMBER_OF_LAYERS = 7; +const real MAXIMUM_ALTITUDE = 84852; +const real MINIMUM_PRESSURE = 0.3734; +const real LAYER0_BASE_TEMPERATURE = 288.15; +const real LAYER0_BASE_PRESSURE = 101325; + +/* lapse rate and base altitude for each layer in the atmosphere */ +const real[NUMBER_OF_LAYERS] lapse_rate = { +	-0.0065, 0.0, 0.001, 0.0028, 0.0, -0.0028, -0.002 +}; +const int[NUMBER_OF_LAYERS] base_altitude = { +	0, 11000, 20000, 32000, 47000, 51000, 71000 +}; + + +/* outputs atmospheric pressure associated with the given altitude. altitudes +   are measured with respect to the mean sea level */ +real altitude_to_pressure(real altitude) { +  +   real base_temperature = LAYER0_BASE_TEMPERATURE; +   real base_pressure = LAYER0_BASE_PRESSURE; + +   real pressure; +   real base; /* base for function to determine pressure */ +   real exponent; /* exponent for function to determine pressure */ +   int layer_number; /* identifies layer in the atmosphere */ +   int delta_z; /* difference between two altitudes */ +    +   if (altitude > 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); +} | 
