X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=src%2Fao_adc.c;h=cbeb6a24e5b13b141878fea484dfc2d77459f4a5;hp=ce935716a1142b2d3be4a7bc1106ccca5f0e63e8;hb=480b48837db31987b947e4d32248965d4a16be03;hpb=ddd7485f05d0cad8f5b3e1ee9b9a4d2812ea1837 diff --git a/src/ao_adc.c b/src/ao_adc.c index ce935716..cbeb6a24 100644 --- a/src/ao_adc.c +++ b/src/ao_adc.c @@ -30,14 +30,18 @@ ao_adc_poll(void) #if HAS_ACCEL_REF ADCCON3 = ADCCON3_EREF_VDD | ADCCON3_EDIV_512 | 2; #else +# ifdef TELENANO_V_0_1 + ADCCON3 = ADCCON3_EREF_VDD | ADCCON3_EDIV_512 | 1; +# else ADCCON3 = ADCCON3_EREF_VDD | ADCCON3_EDIV_512 | 0; +# endif #endif } void ao_adc_get(__xdata struct ao_adc *packet) { - uint8_t i = ao_adc_ring_prev(ao_flight_adc); + uint8_t i = ao_adc_ring_prev(ao_sample_adc); memcpy(packet, &ao_adc_ring[i], sizeof (struct ao_adc)); } @@ -62,6 +66,7 @@ ao_adc_isr(void) __interrupt 1 a = (uint8_t __xdata *) (&ao_adc_ring[ao_adc_head].accel + sequence); sequence++; } +#define GOT_ADC a[0] = ADCL; a[1] = ADCH; if (sequence < 6) { @@ -79,6 +84,7 @@ ao_adc_isr(void) __interrupt 1 #if IGNITE_ON_P0 /* TeleMini readings */ a = (uint8_t __xdata *) (&ao_adc_ring[ao_adc_head].pres); +#ifdef TELEMINI_V_0_1 switch (sequence) { case 0: /* pressure */ @@ -105,12 +111,36 @@ ao_adc_isr(void) __interrupt 1 sequence = 0; break; } +#define GOT_ADC +#endif +#ifdef TELENANO_V_0_1 + switch (sequence) { + case 1: + /* pressure */ + a += 0; + sequence = ADCCON3_EREF_VDD | ADCCON3_EDIV_512 | 3; + break; + case 3: + /* battery */ + a += 4; + sequence = ADCCON3_EREF_1_25 | ADCCON3_EDIV_512 | ADCCON3_ECH_TEMP; + break; + case ADCCON3_ECH_TEMP: + a += 2; + sequence = 0; + break; + } +#define GOT_ADC +#endif a[0] = ADCL; a[1] = ADCH; if (sequence) { /* Start next conversion */ ADCCON3 = sequence; } +#endif +#ifndef GOT_ADC +#error No known ADC configuration set #endif else { @@ -132,7 +162,7 @@ ao_adc_dump(void) __reentrant } __code struct ao_cmds ao_adc_cmds[] = { - { ao_adc_dump, "a\0Display current ADC values" }, + { ao_adc_dump, "a\0Current ADC" }, { 0, NULL }, };