Project/Balancing Robot

[초기화6] Init_ADC()

십자성군 2014. 7. 23. 14:53

void Init_ADC()
{


// AdcRegs.ADCTRL1.bit.RESET = 1 ;  // Adc module Reset
// asm(" RPT #12 || nop ") ;   // Reset는 3 ADC_CLK 지연이 발생한다.
          // 현재 ADC_CLK으로
 InitAdc();

 // ADC 설정
 AdcRegs.ADCTRL3.bit.ADCCLKPS = 15;     // ADCCLKPS = HSPCLK / 30 (ADCCLKPS = 2.5MHz)
 AdcRegs.ADCTRL1.bit.CPS = 1;   // ADCCLK = ADCCLKPS / 2 (ADC의 구동 클럭을 결정 : ADCCLK = 1.25MHz)
 AdcRegs.ADCTRL1.bit.SEQ_CASC = 1;  // 시퀀스 직렬 모드
 AdcRegs.ADCTRL1.bit.ACQ_PS = 7 ;  // 샘플링 윈도우 size를 8 ADC_CLK 설정
// AdcRegs.ADCMAXCONV.all = 0x0002;       // ADC??개수 설정 : 모두 2개 ADC를 변환
 AdcRegs.ADCMAXCONV.all = 0x0004;
 AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0;  // Murata [ Gyro ]
 AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 1; // SA1 [ Tilt ] 4
// AdcRegs.ADCCHSELSEQ1.bit.CONV02 = 2; // Z [ Accelerometer ]
// AdcRegs.ADCCHSELSEQ1.bit.CONV03 = 3; // Y [ Accelerometer ]
// AdcRegs.ADCCHSELSEQ1.bit.CONV02 = 8; // X [ Accelerometer ]
// AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 5; // SCA10T [ Tilt ] 5

// AdcRegs.ADCCHSELSEQ1.bit.CONV02 = 2;
 AdcRegs.ADCTRL1.bit.CONT_RUN = 1;    // Cont. conv. mode
 AdcRegs.ADCTRL2.bit.SOC_SEQ1 = 1;  // 시퀀스 시작


}