X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=adc%2Fadc.c;h=b34dcf121c5f247989b71444b1c2786eda7ce72a;hb=HEAD;hp=a1a08d56d7618f76bd12536621eb7eee7f89d3d1;hpb=364c8190eed3a8339542303243370f1da8fee1dd;p=fw%2Fopenalt diff --git a/adc/adc.c b/adc/adc.c index a1a08d5..b34dcf1 100644 --- a/adc/adc.c +++ b/adc/adc.c @@ -2,40 +2,21 @@ #include "adc.h" -// -// -// -int adcRead0_3 (void) -{ -// AD0_CR = AD_CR_CLKS10 | AD_CR_PDN | ((11 - 1) << AD_CR_CLKDIVSHIFT) | AD_CR_SEL3; -// AD0_CR |= AD_CR_START_NOW; - -// while (!(AD0_DR3 & AD_DR_DONE)) -// ; - -// return ((AD0_DR3 & AD_DR_RESULTMASK) >> AD_DR_RESULTSHIFT); - return (0); -} - // // Assumes PCLK == 48Mhz // void adcInit (void) { -// SCB_PCONP |= SCB_PCONP_PCAD0; - SCB_PCONP |= SCB_PCONP_PCAD1; + unsigned portLONG ulCompareMatch; -// PCB_PINSEL1 |= PCB_PINSEL1_P030_AD03; + SCB_PCONP |= SCB_PCONP_PCAD0; + SCB_PCONP |= SCB_PCONP_PCAD1; + PCB_PINSEL0 |= PCB_PINSEL0_P06_AD10; + PCB_PINSEL0 |= PCB_PINSEL0_P010_AD12; PCB_PINSEL0 |= PCB_PINSEL0_P012_AD13; PCB_PINSEL0 |= PCB_PINSEL0_P013_AD14; - PCB_PINSEL1 |= PCB_PINSEL1_P021_AD16; - -} - -void adcStartXYZ (void) -{ - unsigned portLONG ulCompareMatch; + PCB_PINSEL0 |= PCB_PINSEL0_P015_AD15; // configure MAT0.1 ... assumes TIMER0 already initialized and running @@ -50,18 +31,10 @@ void adcStartXYZ (void) #endif T0_MR1 = ulCompareMatch; - // burst sample 3 channels of accelerometer triggering on MAT0.1 - AD1_CR = AD_CR_CLKS10 | AD_CR_PDN | ((11 - 1) << AD_CR_CLKDIVSHIFT) | AD_CR_SEL3 | AD_CR_SEL4 | AD_CR_SEL6 | AD_CR_BURST; + // burst sample desired inputs triggering on MAT0.1 + AD1_CR = AD_CR_CLKS10 | AD_CR_PDN | ((11 - 1) << AD_CR_CLKDIVSHIFT); + AD1_CR |= AD_CR_SEL0 | AD_CR_SEL2 | AD_CR_SEL3 | AD_CR_SEL4 | AD_CR_SEL5 | AD_CR_BURST; AD1_CR |= AD_CR_START_MAT01; - -// following works for one channel repeated sampling -// AD1_CR = AD_CR_CLKS10 | AD_CR_PDN | ((11 - 1) << AD_CR_CLKDIVSHIFT) | AD_CR_SEL6 | AD_CR_BURST; -// AD1_CR |= AD_CR_START_NOW; - -// wait for conversion to complete -// while (!(AD1_DR3 & AD_DR_DONE)) -// ; - } // @@ -87,6 +60,24 @@ int adcReadY (void) // int adcReadZ (void) { - while (!(AD1_DR6 & AD_DR_DONE)) ; - return ((AD1_DR6 & AD_DR_RESULTMASK) >> AD_DR_RESULTSHIFT); + while (!(AD1_DR5 & AD_DR_DONE)) ; + return ((AD1_DR5 & AD_DR_RESULTMASK) >> AD_DR_RESULTSHIFT); +} + +// +// Read and return battery voltage +// +int adcReadVbat (void) +{ + while (!(AD1_DR0 & AD_DR_DONE)) ; + return ((AD1_DR0 & AD_DR_RESULTMASK) >> AD_DR_RESULTSHIFT); +} + +// +// Read and return barometric pressure +// +int adcReadPres (void) +{ + while (!(AD1_DR2 & AD_DR_DONE)) ; + return ((AD1_DR2 & AD_DR_RESULTMASK) >> AD_DR_RESULTSHIFT); }