summaryrefslogtreecommitdiff
path: root/src/cc1111
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2012-07-29 19:44:56 -0700
committerKeith Packard <keithp@keithp.com>2012-07-29 19:47:42 -0700
commit843fcab46d633e5bb6959286adeb68e41a4c30a3 (patch)
tree53e38c7326dbc191d89c9a4059dcb8c28b4a9ce9 /src/cc1111
parente4d244eefa4c779cd9c8a91389bf998c54705b72 (diff)
altos: Add telefire-v0.1
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'src/cc1111')
-rw-r--r--src/cc1111/ao_adc.c20
-rw-r--r--src/cc1111/ao_arch.h12
-rw-r--r--src/cc1111/ao_pins.h12
3 files changed, 32 insertions, 12 deletions
diff --git a/src/cc1111/ao_adc.c b/src/cc1111/ao_adc.c
index ce827e25..f7b52281 100644
--- a/src/cc1111/ao_adc.c
+++ b/src/cc1111/ao_adc.c
@@ -140,6 +140,15 @@ ao_adc_isr(void) __interrupt 1
}
#endif /* telemini || telenano */
+#ifdef TELEFIRE_V_0_1
+ a = (uint8_t __xdata *) (&ao_data_ring[ao_data_head].adc.sense[0] + sequence);
+ a[0] = ADCL;
+ a[1] = ADCH;
+ if (sequence < 5)
+ ADCCON3 = ADCCON3_EREF_VDD | ADCCON3_EDIV_512 | (sequence + 1);
+#define GOT_ADC
+#endif /* TELEFIRE_V_0_1 */
+
#ifndef GOT_ADC
#error No known ADC configuration set
#endif
@@ -157,9 +166,13 @@ ao_adc_dump(void) __reentrant
{
static __xdata struct ao_data packet;
ao_data_get(&packet);
+#ifndef AO_ADC_DUMP
printf("tick: %5u accel: %5d pres: %5d temp: %5d batt: %5d drogue: %5d main: %5d\n",
packet.tick, packet.adc.accel, packet.adc.pres, packet.adc.temp,
packet.adc.v_batt, packet.adc.sense_d, packet.adc.sense_m);
+#else
+ AO_ADC_DUMP(&packet);
+#endif
}
__code struct ao_cmds ao_adc_cmds[] = {
@@ -170,6 +183,11 @@ __code struct ao_cmds ao_adc_cmds[] = {
void
ao_adc_init(void)
{
+#ifdef AO_ADC_PINS
+ ADCCFG = AO_ADC_PINS;
+
+#else
+
#if IGNITE_ON_P2
/* TeleMetrum configuration */
ADCCFG = ((1 << 0) | /* acceleration */
@@ -190,6 +208,8 @@ ao_adc_init(void)
(1 << 3)); /* battery voltage */
#endif
+#endif /* else AO_ADC_PINS */
+
/* enable interrupts */
ADCIF = 0;
IEN0 |= IEN0_ADCIE;
diff --git a/src/cc1111/ao_arch.h b/src/cc1111/ao_arch.h
index 06b04b93..a97515a7 100644
--- a/src/cc1111/ao_arch.h
+++ b/src/cc1111/ao_arch.h
@@ -200,18 +200,6 @@ extern AO_ROMCONFIG_SYMBOL(0x00a6) uint32_t ao_radio_cal;
#define ao_arch_critical(b) __critical { b }
-struct ao_adc {
- int16_t accel; /* accelerometer */
- int16_t pres; /* pressure sensor */
- int16_t temp; /* temperature sensor */
- int16_t v_batt; /* battery voltage */
- int16_t sense_d; /* drogue continuity sense */
- int16_t sense_m; /* main continuity sense */
-#if HAS_ACCEL_REF
- uint16_t accel_ref; /* acceleration reference */
-#endif
-};
-
#define AO_DATA_RING 32
/* ao_button.c */
diff --git a/src/cc1111/ao_pins.h b/src/cc1111/ao_pins.h
index fc6ed3ec..2f0e2884 100644
--- a/src/cc1111/ao_pins.h
+++ b/src/cc1111/ao_pins.h
@@ -560,4 +560,16 @@
#define AO_IGNITER_FIRE_TIME AO_MS_TO_TICKS(50)
#define AO_IGNITER_CHARGE_TIME AO_MS_TO_TICKS(2000)
+struct ao_adc {
+ int16_t accel; /* accelerometer */
+ int16_t pres; /* pressure sensor */
+ int16_t temp; /* temperature sensor */
+ int16_t v_batt; /* battery voltage */
+ int16_t sense_d; /* drogue continuity sense */
+ int16_t sense_m; /* main continuity sense */
+#if HAS_ACCEL_REF
+ uint16_t accel_ref; /* acceleration reference */
+#endif
+};
+
#endif /* _AO_PINS_H_ */