altos: Add telemetrum-v1.1 directory
authorKeith Packard <keithp@keithp.com>
Wed, 24 Nov 2010 18:57:00 +0000 (10:57 -0800)
committerKeith Packard <keithp@keithp.com>
Wed, 24 Nov 2010 18:57:00 +0000 (10:57 -0800)
Telemetrum v1.1 may have the 5V line sampled to improve the
accelerometer readings.

Signed-off-by: Keith Packard <keithp@keithp.com>
src/Makefile
src/ao_adc.c
src/ao_pins.h
src/telemetrum-v1.1/.gitignore [new file with mode: 0644]
src/telemetrum-v1.1/.sdcdbrc [new file with mode: 0644]
src/telemetrum-v1.1/Makefile [new file with mode: 0644]
src/telemetrum-v1.1/Makefile.defs [new file with mode: 0644]

index 95d24425df9212f58ffe6a05897f8af9f83efa84..a6615321e9f564402e6ce3a19eceaa1619338b4b 100644 (file)
@@ -6,7 +6,7 @@ CC=sdcc
 
 include Version
 
-SUBDIRS=telemetrum-v1.0 teledongle-v0.2 telemetrum-v0.1-sky telemetrum-v0.1-sirf teledongle-v0.1 tidongle test
+SUBDIRS=telemetrum-v1.1 telemetrum-v1.0 teledongle-v0.2 telemetrum-v0.1-sky telemetrum-v0.1-sirf teledongle-v0.1 tidongle test
 
 all: all-recursive
 
index 49d2519e209d5c4f2faf594c5afb08da9da42af6..cd8550fdfaa61bc4aec471783d4c2fce5cb1832e 100644 (file)
@@ -40,6 +40,29 @@ ao_adc_get(__xdata struct ao_adc *packet)
        memcpy(packet, &ao_adc_ring[i], sizeof (struct ao_adc));
 }
 
+#ifdef HAS_ADC_5V
+static void
+ao_fix_accel(void)
+{
+       uint32_t        total;
+       uint8_t         adc_l, adc_h;
+       uint8_t         ref_l, ref_h;
+       uint8_t __xdata *p = (uint8_t __xdata *) &ao_adc_ring[ao_adc_head].accel;
+
+       ref_l = ADCL;
+       adc_l = p[0];
+       total = (uint32_t) (uint16_t) (adc_l * ref_l);
+
+       adc_h = p[1];
+       total += (uint32_t) (uint16_t) (adc_h * ref_l) << 8;
+
+       ref_h = ADCH;
+       total += (uint32_t) (uint16_t) (adc_l * ref_h) << 8;
+       total += (uint32_t) (uint16_t) (adc_h * ref_h) << 16;
+       *(uint16_t __xdata *) p = total >> 16;
+}
+#endif
+
 void
 ao_adc_isr(void) __interrupt 1
 {
@@ -47,13 +70,23 @@ ao_adc_isr(void) __interrupt 1
        uint8_t __xdata *a;
 
        sequence = (ADCCON2 & ADCCON2_SCH_MASK) >> ADCCON2_SCH_SHIFT;
+#if HAS_ADC_5V
+       if (sequence == 2) {
+               ao_fix_accel();
+               /* and launch the temp sensor next */
+               ADCCON3 = ADCCON3_EREF_1_25 | ADCCON3_EDIV_512 | ADCCON3_ECH_TEMP;
+               return;
+       }
+#endif
+#if HAS_EXTERNAL_TEMP
        if (sequence == ADCCON3_ECH_TEMP)
                sequence = 2;
+#endif
        a = (uint8_t __xdata *) (&ao_adc_ring[ao_adc_head].accel + sequence);
        a[0] = ADCL;
        a[1] = ADCH;
        if (sequence < 5) {
-#if HAS_EXTERNAL_TEMP == 0
+#if !HAS_EXTERNAL_TEMP && !HAS_ADC_5V
                /* start next channel conversion */
                /* v0.2 replaces external temp sensor with internal one */
                if (sequence == 1)
index e9a265b0837a4c300f54f1c8e51e94b4b6d1ee54..374b4bf23690d34e589efe32cab04464f7331e2e 100644 (file)
        #define DBG_ON_P0               0
        #define PACKET_HAS_MASTER       0
        #define PACKET_HAS_SLAVE        1
+       #define HAS_ADC_5V              0
+
+       #define AO_LED_RED              1
+       #define LEDS_AVAILABLE          (AO_LED_RED)
+       #define HAS_EXTERNAL_TEMP       0
+#endif
+
+#if defined(TELEMETRUM_V_1_1)
+       #define HAS_SERIAL_1            1
+       #define HAS_ADC                 1
+       #define HAS_EEPROM              1
+       #define HAS_DBG                 1
+       #define DBG_ON_P1               1
+       #define DBG_ON_P0               0
+       #define PACKET_HAS_MASTER       0
+       #define PACKET_HAS_SLAVE        1
+       #define HAS_ADC_5V              1
 
        #define AO_LED_RED              1
        #define LEDS_AVAILABLE          (AO_LED_RED)
diff --git a/src/telemetrum-v1.1/.gitignore b/src/telemetrum-v1.1/.gitignore
new file mode 100644 (file)
index 0000000..c221215
--- /dev/null
@@ -0,0 +1,2 @@
+telemetrum-*
+ao_product.h
diff --git a/src/telemetrum-v1.1/.sdcdbrc b/src/telemetrum-v1.1/.sdcdbrc
new file mode 100644 (file)
index 0000000..710b4a2
--- /dev/null
@@ -0,0 +1 @@
+--directory=..
diff --git a/src/telemetrum-v1.1/Makefile b/src/telemetrum-v1.1/Makefile
new file mode 100644 (file)
index 0000000..d8867b1
--- /dev/null
@@ -0,0 +1 @@
+include ../Makefile.proto
diff --git a/src/telemetrum-v1.1/Makefile.defs b/src/telemetrum-v1.1/Makefile.defs
new file mode 100644 (file)
index 0000000..ada4424
--- /dev/null
@@ -0,0 +1,11 @@
+PROG = telemetrum-v1.1-$(VERSION).ihx
+
+SRC = \
+       $(TM_BASE_SRC) \
+       $(FLASH_DRIVER_SRC) \
+       $(SKY_DRIVER_SRC) \
+       $(DBG_SRC)
+
+PRODUCT=TeleMetrum-v1.1
+PRODUCT_DEF=-DTELEMETRUM_V_1_1
+IDPRODUCT=0x000b