AT91SAM7S256

2013.04.29_ARM_조도센서활용(1)

성엽이 2013. 4. 29. 17:43

▶ ARM_조도센서활용(1)

<그림1>

ADC를 활성화 시켜주기위해서 #define PMC_PCER 로 ADC가 포함되어있는 Peripheral identifier ( 주변 장치 )의 주소를 찝어주었고, <그림2> 와 같이 PMC_PCER = 1<<ADC_ID 를 선언해서 ADC를 활성화 시켜주었다. ADC 의 주변 장치번호는 <그림3>에 있다.


<그림2>


<그림3>

<그림4>

 ADC Control Reg 를 이용해서 Conversion(A ->D) 해주기 위해서 ADC_CR 에 있는 RESET 을해주는 레지, START 해주는 레지를 <그림1>에 정의주었다.

 SWRST 는 offset - 0 번째, START 는 offset - 1번째 떨어져있다. 먼저 RESET 을 해주기 위해서 <그림2> 와 같이 ADC_CR = 1<<SWRST 

 ADC_CR(이라는레지스터) = 1(이라는값을) << SWRST(0번만큼 왼쪽으로 쉬프트)해주었다.

 이제 LED를 활용할 것이기 때문에 ADC_CHER ( ADC 채널 핀 ) 중에서 4번핀( AD4 = CH4 )을 선택하였다.  구분을 쉽게 하기위해    <그림1> 과 같이 LIGHT 라고 정의해주었고, <그림2> 와 같이 코딩을 해주었다.

 ADC_CHER(ADC 채널핀중에서) = 1(의값을)<<LIGHT( CH4를 지정해줬으므로 4번옮겨서넣을것이다 )


<그림5>

 LED를 활용할 핀을 CH4 로 지정해주었고, 이제 원하는 값의 크기를 집어주기위해서 PRESCAL 을 이용하여 분주율을 4Mhz로 설정해주었다. 그리고 LOWRES 를 이용하여 분해능을 10bit 로 맞춰주었다.

<그림2> 에 ADC_MR(ADC 모드 레지를) = (5(의값을넣어서)<<PRESCAL(왼쪽으로 8칸이동) |(OR

 (0(의값을넣어서)<<LOWRES(왼쪽으로4번이동)) 를 설명



<그림6>

 위의 과정을 그래프로 그림으로 나타내면 <그림6> 에서 ADC_CR 의 START 를 이용해서 Conversion 시작!

 ②Conversion Time 이 지나면 데이터를 읽을 준비가됨 High!

 ③ADC_CDR4에서 데이터를 읽으면 ADC_SR(상태레지스터가)이 Low가됨!

 ④이를 반복하다가 쓰고있는 채널의 Conversion 이 종료되면 제일 마지막 최근부분에 ADC_LCDR에도 저장이 가능함!

여기서 ADC_LCDR은 제일 최근까지의 DRDY와 EOCx 두개의 데이터를 가진다.

 DRDY 같은 경우는 EOCx 와 다르게 Conversion Time 이 지나도 종료되기전까지 계속 High 상태로 유지된다.

 EOCx 와 DRDY 는 쓰임이 다를뿐이다.