ad converter test unit 20 로봇 sw 교육원 조용수. 학습 목표 조도 센서 값 읽기...

14
AD Converter Test UNIT 20 로로 SW 로로로 로로로

Upload: victor-allison

Post on 17-Dec-2015

230 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: AD Converter Test UNIT 20 로봇 SW 교육원 조용수. 학습 목표 조도 센서 값 읽기 가변 저항 값 읽기 가변 저항 값 읽어서 LED 에 적용 2

AD Converter TestUNIT

20

로봇 SW 교육원조용수

Page 2: AD Converter Test UNIT 20 로봇 SW 교육원 조용수. 학습 목표 조도 센서 값 읽기 가변 저항 값 읽기 가변 저항 값 읽어서 LED 에 적용 2

2학습 목표

• 조도 센서 값 읽기 • 가변 저항 값 읽기 • 가변 저항 값 읽어서 LED 에 적용

Page 3: AD Converter Test UNIT 20 로봇 SW 교육원 조용수. 학습 목표 조도 센서 값 읽기 가변 저항 값 읽기 가변 저항 값 읽어서 LED 에 적용 2

3조도 센서 값 읽기

APDS-9007 :

Ambient Light Photo Sensor with Logarithmic Current Output

Page 4: AD Converter Test UNIT 20 로봇 SW 교육원 조용수. 학습 목표 조도 센서 값 읽기 가변 저항 값 읽기 가변 저항 값 읽어서 LED 에 적용 2

4ADC Init

void SYS_Init(void){ /* Unlock protected registers */ SYS_UnlockReg(); /* Enable IP clock */ CLK->APBCLK |= CLK_APBCLK_UART0_EN_Msk; CLK->APBCLK |= CLK_APBCLK_ADC_EN_Msk;

/* Update System Core Clock */ /* User can use SystemCoreClockUpdate() to calculate SystemCore-Clock and cyclesPerUs automatically. */ SystemCoreClockUpdate(); /* Set P3 multi-function pins for UART0 RXD and TXD */ SYS->P3_MFP = SYS_MFP_P30_RXD0 | SYS_MFP_P31_TXD0; /* Set P1.0 to AIN0 function */ SYS->P1_MFP = SYS_MFP_P10_AIN0 ; /* Lock protected registers */ SYS_LockReg();

}

Page 5: AD Converter Test UNIT 20 로봇 SW 교육원 조용수. 학습 목표 조도 센서 값 읽기 가변 저항 값 읽기 가변 저항 값 읽어서 LED 에 적용 2

5ADC Init

void ADC_Init() {

ADC->ADCR &= ~(0x2 << 2); // Sing ModeADC->ADCR |= 0x1 ; // ADEN Set

}

• ADC Channel 0 Settings

Page 6: AD Converter Test UNIT 20 로봇 SW 교육원 조용수. 학습 목표 조도 센서 값 읽기 가변 저항 값 읽기 가변 저항 값 읽어서 LED 에 적용 2

6ADC Init

int value0 = 0; ADC->ADCHER = (0x1 << 0) ; // ADC Channel 0 Set ADC->ADCR |= 0x1 << 11 ; // Start Convert

while(ADC->ADSR & (0x1 << 3));value0 = ADC->ADDR[0] & 0xFFFF;

printf("Photo Sensor Value 11 : ");printf("%d \n", value0);

• Read ADC Channel 0

Page 7: AD Converter Test UNIT 20 로봇 SW 교육원 조용수. 학습 목표 조도 센서 값 읽기 가변 저항 값 읽기 가변 저항 값 읽어서 LED 에 적용 2

7ADC Init

void ADC_IRQHandler() {

int value0 = 0; int value1 = 0;

NVIC->ICPR[0] = (0x1 << 29);

ADC->ADSR &= ~0x1; // Clear InterruptADC->ADCR &= ~(0x1 <<1) ; // Disable Interrupt

value0 = ADC->ADDR[0] & 0xFFFF;

printf("ADC(Interrupt) : "); printf("%d \n", value0);}

• Set Interrupt Handler

Page 8: AD Converter Test UNIT 20 로봇 SW 교육원 조용수. 학습 목표 조도 센서 값 읽기 가변 저항 값 읽기 가변 저항 값 읽어서 LED 에 적용 2

8ADC Init

Int main(){

…//NVIC_EnableIRQ(ADC_IRQn);NVIC->ISER[0] = (0x1 << 29);…printf("Stat ADC\n");ADC->ADCHER = 0x1 ; // ADC Channel 0 Set ADC->ADCR |= (0x1 <<1) ; // Enable InterruptADC->ADCR |= 0x1 << 11 ; // Start Convert

}

• Start ADC using Interrupt

Page 9: AD Converter Test UNIT 20 로봇 SW 교육원 조용수. 학습 목표 조도 센서 값 읽기 가변 저항 값 읽기 가변 저항 값 읽어서 LED 에 적용 2

9가변 저항 값 읽기

• VCC , GND , ADC1 연결

Page 10: AD Converter Test UNIT 20 로봇 SW 교육원 조용수. 학습 목표 조도 센서 값 읽기 가변 저항 값 읽기 가변 저항 값 읽어서 LED 에 적용 2

10가변 저항 값 읽기

• ADC 0, 1 선택

void SYS_Init(void){ /* Unlock protected registers */ SYS_UnlockReg();

… /* Set P1.0 to AIN0 function */ SYS->P1_MFP = SYS_MFP_P10_AIN0 | SYS_MFP_P11_AIN1;

/* Lock protected registers */ SYS_LockReg();

}

Page 11: AD Converter Test UNIT 20 로봇 SW 교육원 조용수. 학습 목표 조도 센서 값 읽기 가변 저항 값 읽기 가변 저항 값 읽어서 LED 에 적용 2

11가변 저항 값 읽기

• ADC 0, 1 선택

void ADC_IRQHandler() { int value0 = 0; int value1 = 0; NVIC->ICPR[0] = (0x1 << 29); ADC->ADSR &= ~0x1; // Clear Interrupt ADC->ADCR &= ~(0x1 <<1) ; // Disable Interrupt

value0 = ADC->ADDR[0] & 0xFFFF; value1 = ADC->ADDR[1] & 0xFFFF;

printf("ADC(Interrupt) : "); printf("%d , %d\n", value0, value1);}

Page 12: AD Converter Test UNIT 20 로봇 SW 교육원 조용수. 학습 목표 조도 센서 값 읽기 가변 저항 값 읽기 가변 저항 값 읽어서 LED 에 적용 2

12가변 저항 값 읽기

• ADC 0, 1 선택

printf("Stat ADC\n");ADC->ADCHER = (0x3 << 0) ; // ADC Channel 0,1 Set ADC->ADCR |= (0x1 <<1) ; // Enable InterruptADC->ADCR |= 0x1 << 11 ; // Start Convert

Page 13: AD Converter Test UNIT 20 로봇 SW 교육원 조용수. 학습 목표 조도 센서 값 읽기 가변 저항 값 읽기 가변 저항 값 읽어서 LED 에 적용 2

13가변 저항 값 읽기

• Single Cycle Scan Mode

void ADC_Init() {

ADC->ADCR &= ~(0x2 << 2); // Sing ModeADC->ADCR |= 0x2; // Single Cycle Scan ModeADC->ADCR |= 0x1 ; // ADEN Set

}

Page 14: AD Converter Test UNIT 20 로봇 SW 교육원 조용수. 학습 목표 조도 센서 값 읽기 가변 저항 값 읽기 가변 저항 값 읽어서 LED 에 적용 2

14가변 저항 값 읽어서 LED 에 적용

• 가변 저항 값 읽어서 구간 별로 4 개의 LED On– 0 ~ 10 : All OFF– 10 ~ 1000 : LED1– 1001 ~ 2000 : LED2– 2001 ~ 3000 : LED3– 3001 ~ : LED4