#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
#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))
-// ;
-
}
//
//
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);
}