altos: Debug code for telepyro doesn't fit in telescience
[fw/altos] / src / avr / ao_adc_avr.c
index 5afced74a936acc4e9e911e76f999a7d3accbb52..8c0cade01db2ff4ce9b97955e88195be77314613 100644 (file)
@@ -20,6 +20,7 @@
 volatile __xdata struct ao_adc ao_adc_ring[AO_ADC_RING];
 volatile __data uint8_t                ao_adc_head;
 
+#ifdef TELESCIENCE
 const uint8_t  adc_channels[AO_LOG_TELESCIENCE_NUM_ADC] = {
        0x00,
        0x01,
@@ -34,6 +35,23 @@ const uint8_t        adc_channels[AO_LOG_TELESCIENCE_NUM_ADC] = {
        0x24,
        0x25,
 };
+#endif
+
+#ifdef TELEPYRO
+const uint8_t  adc_channels[AO_TELEPYRO_NUM_ADC] = {
+       0x00,   /* ADC0  v_batt */
+       0x04,   /* ADC4  sense_a */
+       0x05,   /* ADC5  sense_b */
+       0x06,   /* ADC6  sense_c */
+       0x07,   /* ADC7  sense_d */
+       0x23,   /* ADC11 sense_e */
+       0x22,   /* ADC10 sense_f */
+       0x21,   /* ADC9 sense_g */
+       0x20,   /* ADC8 sense_h */
+};
+#endif
+
+#define NUM_ADC        (sizeof (adc_channels) / sizeof (adc_channels[0]))
 
 static uint8_t ao_adc_channel;
 
@@ -48,7 +66,7 @@ static uint8_t        ao_adc_channel;
 
 #define ADCSRB_INIT    ((0 << ADHSM) |         /* No high-speed mode */ \
                         (0 << ACME) |          /* Some comparitor thing */ \
-                        (2 << ADTS0))          /* Free running mode (don't care) */
+                        (0 << ADTS0))          /* Free running mode (don't care) */
 
 static void
 ao_adc_start(void)
@@ -75,7 +93,7 @@ ISR(ADC_vect)
        value = ADCL;
        value |= (ADCH << 8);
        ao_adc_ring[ao_adc_head].adc[ao_adc_channel] = value;
-       if (++ao_adc_channel < AO_TELESCIENCE_NUM_ADC)
+       if (++ao_adc_channel < NUM_ADC)
                ao_adc_start();
        else {
                ADCSRA = ADCSRA_INIT;
@@ -107,10 +125,31 @@ ao_adc_dump(void) __reentrant
        static __xdata struct ao_adc    packet;
        uint8_t i;
        ao_adc_get(&packet);
+#ifdef TELEPYRO
+       printf("ADMUX:  %02x\n", ADMUX);
+       printf("ADCSRA: %02x\n", ADCSRA);
+       printf("ADCSRB: %02x\n", ADCSRB);
+       printf("DIDR0:  %02x\n", DIDR0);
+       printf("DIDR2:  %02x\n", DIDR2);
+       printf("PORTF:  %02x\n", PORTF);
+       printf("DDRF:   %02x\n", DDRF);
+       printf("PINF:   %02x\n", PINF);
+#endif
        printf("tick: %5u",  packet.tick);
-       for (i = 0; i < AO_TELESCIENCE_NUM_ADC; i++)
+       for (i = 0; i < NUM_ADC; i++)
                printf (" %2d: %5u", i, packet.adc[i]);
+
+
+#ifdef TELEPYRO
+       ADMUX = 0x60;
+       ADCSRB = 0x00;
+       ADCSRA = 0xc6;
+       while (ADCSRA & 0x40)
+               ;
+       printf ("ADCL:  %02x\n", ADCL);
+       printf ("ADCH:  %02x\n", ADCH);
        printf ("\n");
+#endif
 }
 
 __code struct ao_cmds ao_adc_cmds[] = {