6 // Assumes PCLK == 48Mhz
10 unsigned portLONG ulCompareMatch;
12 SCB_PCONP |= SCB_PCONP_PCAD0;
13 SCB_PCONP |= SCB_PCONP_PCAD1;
15 PCB_PINSEL0 |= PCB_PINSEL0_P06_AD10;
16 PCB_PINSEL0 |= PCB_PINSEL0_P010_AD12;
17 PCB_PINSEL0 |= PCB_PINSEL0_P012_AD13;
18 PCB_PINSEL0 |= PCB_PINSEL0_P013_AD14;
19 PCB_PINSEL0 |= PCB_PINSEL0_P015_AD15;
21 // configure MAT0.1 ... assumes TIMER0 already initialized and running
23 // Calculate the match value required for 1khz ADC trigger rate
24 ulCompareMatch = configCPU_CLOCK_HZ / 1000;
26 // Account for prescaler, protecting against divide by zero.
27 #if portPRESCALE_VALUE != 0
29 ulCompareMatch /= ( portPRESCALE_VALUE + 1 );
32 T0_MR1 = ulCompareMatch;
34 // burst sample desired inputs triggering on MAT0.1
35 AD1_CR = AD_CR_CLKS10 | AD_CR_PDN | ((11 - 1) << AD_CR_CLKDIVSHIFT);
36 AD1_CR |= AD_CR_SEL0 | AD_CR_SEL2 | AD_CR_SEL3 | AD_CR_SEL4 | AD_CR_SEL5 | AD_CR_BURST;
37 AD1_CR |= AD_CR_START_MAT01;
41 // Read and return X accelerometer value
45 while (!(AD1_DR3 & AD_DR_DONE)) ;
46 return ((AD1_DR3 & AD_DR_RESULTMASK) >> AD_DR_RESULTSHIFT);
50 // Read and return Y accelerometer value
54 while (!(AD1_DR4 & AD_DR_DONE)) ;
55 return ((AD1_DR4 & AD_DR_RESULTMASK) >> AD_DR_RESULTSHIFT);
59 // Read and return Z accelerometer value
63 while (!(AD1_DR5 & AD_DR_DONE)) ;
64 return ((AD1_DR5 & AD_DR_RESULTMASK) >> AD_DR_RESULTSHIFT);
68 // Read and return battery voltage
70 int adcReadVbat (void)
72 while (!(AD1_DR0 & AD_DR_DONE)) ;
73 return ((AD1_DR0 & AD_DR_RESULTMASK) >> AD_DR_RESULTSHIFT);
77 // Read and return barometric pressure
79 int adcReadPres (void)
81 while (!(AD1_DR2 & AD_DR_DONE)) ;
82 return ((AD1_DR2 & AD_DR_RESULTMASK) >> AD_DR_RESULTSHIFT);