1 #include <lpc21xx.h> // LPC21XX Peripheral Registers
\r
4 #include <system_def.h>
\r
7 void pwr_33(char mode, struct power *pwr) // switch on/off 3,3V power line
\r
9 if (mode != PWR_ON) {
\r
11 pwr->pwr_33v_state = PWR_OFF;
\r
14 pwr->pwr_33v_state = PWR_ON;
\r
18 void pwr_50(char mode, struct power *pwr) // switch on/off 5V power line
\r
20 if (mode != PWR_ON) {
\r
22 pwr->pwr_50v_state = PWR_OFF;
\r
25 pwr->pwr_50v_state = PWR_ON;
\r
29 void pwr_80(char mode, struct power *pwr) // switch on/off 8V power line
\r
31 if (mode != PWR_ON) {
\r
33 pwr->pwr_80v_state = PWR_OFF;
\r
36 pwr->pwr_80v_state = PWR_ON;
\r
40 void adc_isr(void) __attribute__ ((interrupt));
\r
44 unsigned char chan =0;
\r
45 unsigned int val =0;
\r
47 chan = (char) ((ADDR>>24) & 0x07);
\r
48 val = ((ADDR >> 6) & 0x3FF);
\r
50 adc_val[chan] = (((val * ADC_CON_CONST + ADC_OFFSET) + adc_val[chan]) >> 1) ;
\r
52 ADCR &= ~(ADC_CR_START_OFF);
\r
57 ADCR = ((ADC_CR_ADC1) | (ADC_CR_CLKS_11) | (ADC_CR_PDN_ON) | (ADC_CR_START_NOW) | (20*ADC_CR_CLK_DIV_1));
\r
61 ADCR = ((ADC_CR_ADC2) | (ADC_CR_CLKS_11) | (ADC_CR_PDN_ON) | (ADC_CR_START_NOW) | (20*ADC_CR_CLK_DIV_1));
\r
65 ADCR = ((ADC_CR_ADC3) | (ADC_CR_CLKS_11) | (ADC_CR_PDN_ON) | (ADC_CR_START_NOW) | (20*ADC_CR_CLK_DIV_1));
\r
69 ADCR = ((ADC_CR_ADC0) | (ADC_CR_CLKS_11) | (ADC_CR_PDN_ON) | (ADC_CR_START_NOW) | (20*ADC_CR_CLK_DIV_1));
\r
76 void init_adc(unsigned rx_isr_vect)
\r
78 PINSEL1 |= ((PINSEL_1 << ADCCH0) | (PINSEL_1 << ADCCH1) | (PINSEL_1 << ADCCH2) | (PINSEL_1 << ADCCH3));
\r
80 ((uint32_t*)&VICVectCntl0)[rx_isr_vect] = 0x32;
\r
81 ((uint32_t*)&VICVectAddr0)[rx_isr_vect] = (unsigned) adc_isr;
\r
82 VICIntEnable = 0x40000;
\r
84 ADCR = ((ADC_CR_ADC0) | (ADC_CR_CLKS_11) | (ADC_CR_PDN_ON) | (ADC_CR_START_NOW) | (10*ADC_CR_CLK_DIV_1));
\r
87 void init_pwr(struct power *pwr) // init power lines
\r
89 IO1DIR |= (PWR33 | PWR50 | PWR80);
\r
90 pwr_33(PWR_OFF, pwr);
\r
91 pwr_50(PWR_OFF, pwr);
\r
92 pwr_80(PWR_OFF, pwr);
\r