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; // 시퀀스 시작
}
'Project > Balancing Robot' 카테고리의 다른 글
엔코더와 풀업, 전압분배 (0) | 2014.07.27 |
---|---|
실습코드 해석. 순서 (0) | 2014.07.23 |
[초기화5] Init_SPI() (0) | 2014.07.23 |
[초기화4] Init_SCIA(), Init_SCIB() (0) | 2014.07.23 |
[초기화3] Init_EVA(), Init_EVB() (0) | 2014.07.23 |