LCA 2008 Z-axis accelerometer demo
[fw/openalt] / adc / adc.c
1 #include "FreeRTOS.h"
2
3 #include "adc.h"
4
5 //
6 //
7 //
8 int adcRead0_3 (void)
9 {
10 //  AD0_CR = AD_CR_CLKS10 | AD_CR_PDN | ((11 - 1) << AD_CR_CLKDIVSHIFT) | AD_CR_SEL3;
11 //  AD0_CR |= AD_CR_START_NOW;
12
13 //  while (!(AD0_DR3 & AD_DR_DONE))
14 //    ;
15
16 //  return ((AD0_DR3 & AD_DR_RESULTMASK) >> AD_DR_RESULTSHIFT);
17     return (0);
18 }
19
20 //
21 //  Assumes PCLK == 48Mhz
22 //
23 void adcInit (void)
24 {
25 //  SCB_PCONP |= SCB_PCONP_PCAD0;
26   SCB_PCONP |= SCB_PCONP_PCAD1;
27
28 //  PCB_PINSEL1 |= PCB_PINSEL1_P030_AD03;
29
30   PCB_PINSEL0 |= PCB_PINSEL0_P012_AD13;
31   PCB_PINSEL0 |= PCB_PINSEL0_P013_AD14;
32   PCB_PINSEL1 |= PCB_PINSEL1_P021_AD16;
33
34 }
35
36 void adcStartXYZ (void)
37 {
38 //  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;
39 //  AD1_CR = AD_CR_CLKS10 | AD_CR_PDN | ((11 - 1) << AD_CR_CLKDIVSHIFT) | AD_CR_SEL3 | AD_CR_BURST;
40   AD1_CR = AD_CR_CLKS10 | AD_CR_PDN | ((11 - 1) << AD_CR_CLKDIVSHIFT) | AD_CR_SEL6 | AD_CR_BURST;
41   AD1_CR |= AD_CR_START_NOW;
42
43 // wait for conversion to complete
44 //  while (!(AD1_DR3 & AD_DR_DONE))
45 //    ;
46
47 }
48
49 //
50 //  Read and return X accelerometer value
51 //
52 int adcReadX (void)
53 {
54 //  while (!(AD1_DR3 & AD_DR_DONE)) ;
55   return ((AD1_DR3 & AD_DR_RESULTMASK) >> AD_DR_RESULTSHIFT);
56 }
57
58 //
59 //  Read and return Y accelerometer value
60 //
61 int adcReadY (void)
62 {
63 //  while (!(AD1_DR4 & AD_DR_DONE)) ;
64   return ((AD1_DR4 & AD_DR_RESULTMASK) >> AD_DR_RESULTSHIFT);
65 }
66
67 //
68 //  Read and return Z accelerometer value
69 //
70 int adcReadZ (void)
71 {
72   while (!(AD1_DR6 & AD_DR_DONE)) ;
73   return ((AD1_DR6 & AD_DR_RESULTMASK) >> AD_DR_RESULTSHIFT);
74 }