1 #include <lpc21xx.h> // LPC21XX Peripheral Registers
\r
4 #include <system_def.h>
\r
8 #define PWR33 (1<<22)
\r
9 #define PWR50 (1<<24)
\r
10 #define PWR80 (1<<23)
\r
12 #define ADC0 (1<<27)
\r
13 #define ADC1 (1<<28)
\r
14 #define ADC2 (1<<29)
\r
15 #define ADC3 (1<<30)
\r
24 // tohla me byt definovano nekde jinde FIXME
\r
27 #define ADC_PIN_0 0x1
\r
28 #define ADC_PIN_1 0x2
\r
29 #define ADC_PIN_2 0x4
\r
30 #define ADC_PIN_3 0x8
\r
32 #define ADC_CR_ADC0 0x1
\r
33 #define ADC_CR_ADC1 0x2
\r
34 #define ADC_CR_ADC2 0x4
\r
35 #define ADC_CR_ADC3 0x8
\r
37 #define ADC_CR_CLK_DIV_1 (1<<8) // this nuber should be multipied sampe
\r
38 // requested divisor 4 ---- clk_div = 4 * ADC_CR_CLK_DIV_1
\r
39 #define ADC_CR_BURST (1<<16)
\r
40 #define ADC_CR_CLKS_11 (0<<17)
\r
41 #define ADC_CR_CLKS_10 (1<<17)
\r
42 #define ADC_CR_CLKS_9 (2<<17)
\r
43 #define ADC_CR_CLKS_8 (3<<17)
\r
44 #define ADC_CR_CLKS_7 (4<<17)
\r
45 #define ADC_CR_CLKS_6 (5<<17)
\r
46 #define ADC_CR_CLKS_5 (6<<17)
\r
47 #define ADC_CR_CLKS_4 (7<<17)
\r
49 #define ADC_CR_PDN_ON (1<<21)
\r
51 #define ADC_CR_START_OFF (0<<24)
\r
52 #define ADC_CR_START_NOW (1<<24)
\r
53 #define ADC_CR_START_P016 (2<<24)
\r
54 #define ADC_CR_START_P022 (3<<24)
\r
55 #define ADC_CR_START_MAT01 (4<<24)
\r
56 #define ADC_CR_START_MAT03 (5<<24)
\r
57 #define ADC_CR_START_MAT10 (6<<24)
\r
58 #define ADC_CR_START_MAT11 (7<<24)
\r
60 #define ADC_CR_EDGE_RISING (0<<27)
\r
61 #define ADC_CR_EDGE_FALLING (1<<27)
\r
69 void pwr_33(char mode) // switch on/off 3,3V power line
\r
82 void pwr_50(char mode) // switch on/off 5V power line
\r
95 void pwr_80(char mode) // switch on/off 8V power line
\r
108 volatile char test =0xF;
\r
110 void adc_isr(void) __attribute__ ((interrupt));
\r
112 void adc_isr(void)
\r
114 unsigned char chan =0;
\r
115 unsigned int val =0;
\r
117 chan = (char) ((ADDR>>24) & 0x07);
\r
118 val = ((ADDR >> 6) & 0x3FF);
\r
120 adc_val[chan] = (((val * ADC_CON_CONST + ADC_OFFSET) + adc_val[chan]) >> 1) ;
\r
122 ADCR &= ~(ADC_CR_START_OFF);
\r
127 ADCR = ((ADC_CR_ADC1) | (ADC_CR_CLKS_11) | (ADC_CR_PDN_ON) | (ADC_CR_START_NOW) | (20*ADC_CR_CLK_DIV_1));
\r
131 ADCR = ((ADC_CR_ADC2) | (ADC_CR_CLKS_11) | (ADC_CR_PDN_ON) | (ADC_CR_START_NOW) | (20*ADC_CR_CLK_DIV_1));
\r
135 ADCR = ((ADC_CR_ADC3) | (ADC_CR_CLKS_11) | (ADC_CR_PDN_ON) | (ADC_CR_START_NOW) | (20*ADC_CR_CLK_DIV_1));
\r
139 ADCR = ((ADC_CR_ADC0) | (ADC_CR_CLKS_11) | (ADC_CR_PDN_ON) | (ADC_CR_START_NOW) | (20*ADC_CR_CLK_DIV_1));
\r
147 void init_adc(unsigned rx_isr_vect)
\r
150 PINSEL1 |= ((PINSEL_1 << ADCCH0) | (PINSEL_1 << ADCCH1) | (PINSEL_1 << ADCCH2) | (PINSEL_1 << ADCCH3));
\r
152 ((uint32_t*)&VICVectCntl0)[rx_isr_vect] = 0x32;
\r
153 ((uint32_t*)&VICVectAddr0)[rx_isr_vect] = (unsigned) adc_isr;
\r
154 VICIntEnable = 0x40000;
\r
156 ADCR = ((ADC_CR_ADC0) | (ADC_CR_CLKS_11) | (ADC_CR_PDN_ON) | (ADC_CR_START_NOW) | (10*ADC_CR_CLK_DIV_1));
\r
160 void init_pwr(void) // init power lines
\r
162 IO1DIR |= (PWR33 | PWR50 | PWR80);
\r