2 * Copyright © 2010 Keith Packard <keithp@keithp.com>
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; version 2 of the License.
8 * This program is distributed in the hope that it will be useful, but
9 * WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 * General Public License for more details.
13 * You should have received a copy of the GNU General Public License along
14 * with this program; if not, write to the Free Software Foundation, Inc.,
15 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
23 #if defined(TELEMETRUM_V_1_0)
28 #define HAS_SERIAL_1 1
32 #define USE_INTERNAL_FLASH 0
36 #define IGNITE_ON_P2 1
37 #define IGNITE_ON_P0 0
38 #define PACKET_HAS_MASTER 0
39 #define PACKET_HAS_SLAVE 1
42 #define HAS_COMPANION 1
43 #define COMPANION_CS_ON_P1 1
44 #define AO_COMPANION_CS_PORT P1
45 #define AO_COMPANION_CS_PIN 2
46 #define AO_COMPANION_CS P1_2
49 #define LEDS_AVAILABLE (AO_LED_RED)
50 #define HAS_EXTERNAL_TEMP 0
51 #define HAS_ACCEL_REF 0
57 #if defined(TELEMETRUM_V_1_1)
61 #define HAS_BATTERY_REPORT 1
63 #define HAS_SERIAL_1 1
67 #define USE_INTERNAL_FLASH 0
71 #define IGNITE_ON_P2 1
72 #define IGNITE_ON_P0 0
73 #define PACKET_HAS_MASTER 0
74 #define PACKET_HAS_SLAVE 1
76 #define HAS_COMPANION 1
77 #define AO_COMPANION_CS_PORT P1
78 #define AO_COMPANION_CS_PIN 2
79 #define AO_COMPANION_CS P1_2
82 #define LEDS_AVAILABLE (AO_LED_RED)
83 #define HAS_EXTERNAL_TEMP 0
84 #define HAS_ACCEL_REF 1
85 #define SPI_CS_ON_P1 1
86 #define SPI_CS_ON_P0 0
87 #define AO_M25_SPI_CS_MASK 0x02 /* CS0 is P1_1 */
88 #define M25_MAX_CHIPS 1
94 #if defined(TELEMETRUM_V_1_2)
98 #define HAS_BATTERY_REPORT 1
100 #define HAS_SERIAL_1 1
104 #define USE_INTERNAL_FLASH 0
108 #define IGNITE_ON_P2 1
109 #define IGNITE_ON_P0 0
110 #define PACKET_HAS_MASTER 0
111 #define PACKET_HAS_SLAVE 1
113 #define HAS_COMPANION 1
114 #define AO_COMPANION_CS_PORT P1
115 #define AO_COMPANION_CS_PIN 2
116 #define AO_COMPANION_CS P1_2
119 #define LEDS_AVAILABLE (AO_LED_RED)
120 #define HAS_EXTERNAL_TEMP 0
121 #define HAS_ACCEL_REF 1
122 #define SPI_CS_ON_P1 1
123 #define SPI_CS_ON_P0 0
124 #define AO_M25_SPI_CS_MASK 0x02 /* CS0 is P1_1 */
125 #define M25_MAX_CHIPS 1
128 #define HAS_MONITOR 0
131 #if defined(TELEDONGLE_V_0_2)
135 #define HAS_SERIAL_1 0
142 #define IGNITE_ON_P2 0
143 #define IGNITE_ON_P0 0
144 #define PACKET_HAS_MASTER 1
145 #define PACKET_HAS_SLAVE 0
147 #define AO_LED_GREEN 2
148 #define AO_MONITOR_LED AO_LED_GREEN
149 #define LEDS_AVAILABLE (AO_LED_RED|AO_LED_GREEN)
150 #define SPI_CS_ON_P1 1
151 #define SPI_CS_ON_P0 0
153 #define HAS_MONITOR 1
154 #define LEGACY_MONITOR 1
159 #if defined(TELEMINI_V_1_0)
164 #define HAS_SERIAL_1 0
168 #define HAS_FORCE_FREQ 1
169 #define USE_INTERNAL_FLASH 1
171 #define IGNITE_ON_P2 0
172 #define IGNITE_ON_P0 1
173 #define PACKET_HAS_MASTER 0
174 #define PACKET_HAS_SLAVE 1
175 #define USE_FAST_ASCENT_LOG 1
177 #define AO_LED_GREEN 1
179 #define LEDS_AVAILABLE (AO_LED_RED|AO_LED_GREEN)
180 #define HAS_EXTERNAL_TEMP 0
183 #define HAS_MONITOR 0
186 #if defined(TELENANO_V_0_1)
191 #define HAS_SERIAL_1 0
195 #define USE_INTERNAL_FLASH 1
197 #define IGNITE_ON_P2 0
198 #define IGNITE_ON_P0 1
199 #define PACKET_HAS_MASTER 0
200 #define PACKET_HAS_SLAVE 1
202 #define AO_LED_GREEN 1
204 #define LEDS_AVAILABLE (AO_LED_RED|AO_LED_GREEN)
205 #define HAS_EXTERNAL_TEMP 0
208 #define HAS_MONITOR 0
211 #if defined(TELEMETRUM_V_0_1)
216 #define HAS_SERIAL_1 1
221 #define USE_INTERNAL_FLASH 0
224 #define IGNITE_ON_P2 1
225 #define IGNITE_ON_P0 0
226 #define PACKET_HAS_MASTER 0
227 #define PACKET_HAS_SLAVE 1
229 #define AO_LED_GREEN 1
230 #define LEDS_AVAILABLE (AO_LED_RED|AO_LED_GREEN)
231 #define HAS_EXTERNAL_TEMP 1
232 #define HAS_ACCEL_REF 0
233 #define SPI_CS_ON_P1 1
234 #define SPI_CS_ON_P0 0
237 #define HAS_MONITOR 0
238 #define AO_CONFIG_DEFAULT_FLIGHT_LOG_MAX ((uint32_t) 127 * (uint32_t) 1024)
241 #if defined(TELEDONGLE_V_0_1)
245 #define HAS_SERIAL_1 0
252 #define IGNITE_ON_P2 0
253 #define IGNITE_ON_P0 0
254 #define PACKET_HAS_MASTER 1
255 #define PACKET_HAS_SLAVE 0
257 #define AO_LED_GREEN 1
258 #define AO_MONITOR_LED AO_LED_GREEN
259 #define LEDS_AVAILABLE (AO_LED_RED|AO_LED_GREEN)
260 #define SPI_CS_ON_P1 0
261 #define SPI_CS_ON_P0 1
263 #define HAS_MONITOR 1
264 #define LEGACY_MONITOR 1
269 #if defined(TIDONGLE)
273 #define HAS_SERIAL_1 0
280 #define IGNITE_ON_P2 0
281 #define IGNITE_ON_P0 0
282 #define PACKET_HAS_MASTER 1
283 #define PACKET_HAS_SLAVE 0
285 #define AO_MONITOR_LED AO_LED_RED
286 #define LEDS_AVAILABLE (AO_LED_RED)
287 #define SPI_CS_ON_P1 0
288 #define SPI_CS_ON_P0 1
290 #define HAS_MONITOR 1
291 #define LEGACY_MONITOR 1
296 #if defined(TELEBT_V_0_0)
300 #define HAS_SERIAL_1 1
301 #define USE_SERIAL_1_STDIN 1
302 #define DELAY_SERIAL_1_STDIN 1
310 #define IGNITE_ON_P2 0
311 #define IGNITE_ON_P0 0
312 #define PACKET_HAS_MASTER 1
313 #define PACKET_HAS_SLAVE 0
315 #define AO_LED_GREEN 1
316 #define AO_MONITOR_LED AO_LED_RED
317 #define LEDS_AVAILABLE (AO_LED_RED|AO_LED_GREEN)
318 #define SPI_CS_ON_P1 1
319 #define SPI_CS_ON_P0 0
321 #define HAS_IGNITE_REPORT 1
322 #define BT_LINK_ON_P2 1
323 #define BT_LINK_ON_P1 0
324 #define BT_LINK_PIN_INDEX 7
325 #define BT_LINK_PIN P2_1
326 #define HAS_MONITOR 1
327 #define LEGACY_MONITOR 1
332 #if defined(TELEBT_V_0_1)
336 #define HAS_SERIAL_1 1
337 #define HAS_SERIAL_1_ALT_1 1
338 #define HAS_SERIAL_1_ALT_2 0
339 #define HAS_SERIAL_1_HW_FLOW 1
340 #define USE_SERIAL_1_STDIN 1
341 #define DELAY_SERIAL_1_STDIN 1
346 #define USE_INTERNAL_FLASH 0
350 #define IGNITE_ON_P2 0
351 #define IGNITE_ON_P0 0
352 #define PACKET_HAS_MASTER 1
353 #define PACKET_HAS_SLAVE 0
355 #define AO_LED_GREEN 2
356 #define AO_MONITOR_LED AO_LED_RED
357 #define LEDS_AVAILABLE (AO_LED_RED|AO_LED_GREEN)
358 #define SPI_CS_ON_P1 1
359 #define SPI_CS_ON_P0 0
360 #define AO_M25_SPI_CS_MASK 0x04 /* CS0 is P1_2 */
361 #define M25_MAX_CHIPS 1
364 #define HAS_IGNITE_REPORT 1
365 #define BT_LINK_ON_P2 0
366 #define BT_LINK_ON_P1 1
367 #define BT_LINK_PIN_INDEX 7
368 #define BT_LINK_PIN P1_7
369 #define HAS_MONITOR 1
370 #define LEGACY_MONITOR 1
375 #if defined(TELELAUNCH_V_0_1)
380 #define HAS_SERIAL_1 1
385 #define USE_INTERNAL_FLASH 1
388 #define IGNITE_ON_P2 1
389 #define IGNITE_ON_P0 0
390 #define PACKET_HAS_MASTER 0
391 #define PACKET_HAS_SLAVE 0
393 #define AO_LED_GREEN 1
394 #define LEDS_AVAILABLE (AO_LED_RED|AO_LED_GREEN)
395 #define HAS_EXTERNAL_TEMP 1
396 #define HAS_ACCEL_REF 0
397 #define SPI_CS_ON_P1 1
398 #define SPI_CS_ON_P0 0
401 #define HAS_MONITOR 0
407 #define DBG_CLOCK (1 << 4) /* mi0 */
408 #define DBG_DATA (1 << 5) /* mo0 */
409 #define DBG_RESET_N (1 << 3) /* c0 */
411 #define DBG_CLOCK_PIN (P1_4)
412 #define DBG_DATA_PIN (P1_5)
413 #define DBG_RESET_N_PIN (P1_3)
415 #define DBG_PORT_NUM 1
417 #define DBG_PORT_SEL P1SEL
418 #define DBG_PORT_INP P1INP
419 #define DBG_PORT_DIR P1DIR
421 #endif /* DBG_ON_P1 */
425 #define DBG_CLOCK (1 << 3)
426 #define DBG_DATA (1 << 4)
427 #define DBG_RESET_N (1 << 5)
429 #define DBG_CLOCK_PIN (P0_3)
430 #define DBG_DATA_PIN (P0_4)
431 #define DBG_RESET_N_PIN (P0_5)
433 #define DBG_PORT_NUM 0
435 #define DBG_PORT_SEL P0SEL
436 #define DBG_PORT_INP P0INP
437 #define DBG_PORT_DIR P0DIR
439 #endif /* DBG_ON_P0 */
441 #if COMPANION_CS_ON_P1
442 #define COMPANION_CS_PORT P1
443 #define COMPANION_CS_SEL P1SEL
444 #define COMPANION_CS_DIR P1DIR
448 #define SPI_CS_PORT P1
449 #define SPI_CS_SEL P1SEL
450 #define SPI_CS_DIR P1DIR
454 #define SPI_CS_PORT P0
455 #define SPI_CS_SEL P0SEL
456 #define SPI_CS_DIR P0DIR
459 #define AO_M25_SPI_CS_PORT SPI_CS_PORT
462 #error Please define IGNITE_ON_P2
466 #error Please define IGNITE_ON_P0
470 #error Please define HAS_ADC
474 #error Please define HAS_EEPROM
478 #error Please define HAS_LOG
482 #ifndef USE_INTERNAL_FLASH
483 #error Please define USE_INTERNAL_FLASH
488 #error Please define HAS_DBG
492 #error Please define HAS_IGNITE
496 #define HAS_IGNITE_REPORT 1
499 #ifndef PACKET_HAS_MASTER
500 #error Please define PACKET_HAS_MASTER
503 #ifndef PACKET_HAS_SLAVE
504 #error Please define PACKET_HAS_SLAVE
508 #error Please define HAS_MONITOR
513 #error Please define HAS_RSSI
518 #error Please define HAS_ADC
524 #ifndef HAS_ACCEL_REF
525 #error Please define HAS_ACCEL_REF
528 #define HAS_ACCEL_REF 0
534 #define AO_IGNITER_PORT P2
535 #define AO_IGNITER_DROGUE_PORT AO_IGNITER_PORT
536 #define AO_IGNITER_DROGUE P2_3
537 #define AO_IGNITER_MAIN P2_4
538 #define AO_IGNITER_DIR P2DIR
539 #define AO_IGNITER_DROGUE_BIT (1 << 3)
540 #define AO_IGNITER_MAIN_BIT (1 << 4)
541 #define AO_IGNITER_DROGUE_PIN 3
542 #define AO_IGNITER_MAIN_PIN 4
546 #define AO_IGNITER_PORT P0
547 #define AO_IGNITER_DROGUE P0_5
548 #define AO_IGNITER_MAIN P0_4
549 #define AO_IGNITER_DIR P0DIR
550 #define AO_IGNITER_DROGUE_BIT (1 << 5)
551 #define AO_IGNITER_MAIN_BIT (1 << 4)
552 #define AO_IGNITER_DROGUE_PIN 5
553 #define AO_IGNITER_MAIN_PIN 4
556 #define AO_IGNITER_DROGUE_PORT AO_IGNITER_PORT
557 #define AO_IGNITER_MAIN_PORT AO_IGNITER_PORT
559 /* test these values with real igniters */
560 #define AO_IGNITER_OPEN 1000
561 #define AO_IGNITER_CLOSED 7000
562 #define AO_IGNITER_FIRE_TIME AO_MS_TO_TICKS(50)
563 #define AO_IGNITER_CHARGE_TIME AO_MS_TO_TICKS(2000)
566 int16_t accel; /* accelerometer */
567 int16_t pres; /* pressure sensor */
568 int16_t temp; /* temperature sensor */
569 int16_t v_batt; /* battery voltage */
570 int16_t sense_d; /* drogue continuity sense */
571 int16_t sense_m; /* main continuity sense */
573 uint16_t accel_ref; /* acceleration reference */
578 * Voltage divider on ADC battery sampler
580 #define AO_BATTERY_DIV_PLUS 5 /* 5k */
581 #define AO_BATTERY_DIV_MINUS 10 /* 10k */
584 * Voltage divider on ADC igniter samplers
586 #define AO_IGNITE_DIV_PLUS 100 /* 100k */
587 #define AO_IGNITE_DIV_MINUS 27 /* 27k */
590 * ADC reference in decivolts
592 #define AO_ADC_REFERENCE_DV 33
594 #endif /* _AO_PINS_H_ */