본문 바로가기
공부,일/atmega328P

atmega328P ADC (1) 개념 및 레지스터

by fromnothing1 2021. 7. 28.

기본 개념

 

 

atmega328 의 경우 8 채널 10 bit 의 분해능을 가진 축차 비교형 ADC  이다. 

 

축차 비교형 컴버터의 동작원리 :

https://ko.wikipedia.org/wiki/%EC%B6%95%EC%B0%A8_%EB%B9%84%EA%B5%90%ED%98%95_%EC%95%84%EB%82%A0%EB%A1%9C%EA%B7%B8-%EB%94%94%EC%A7%80%ED%84%B8_%EB%B3%80%ED%99%98%ED%9A%8C%EB%A1%9C

 

축차 비교형 아날로그-디지털 변환회로 - 위키백과, 우리 모두의 백과사전

축차 비교형 ADC 기능도 아날로그-디지털 변환회로 방식중에 축차 비교형 아날로그-디지털 변환회로(Successive approximation ADC)는 이진 탐색 방식으로 양자화하는 변환 방식이다. 내부에 DAC와 비교기

ko.wikipedia.org

 

ADC 의 경우 단일 변환 모드(single conversion mode)와 프리 러닝 모드(free running mode)가 존재한다. 

단일 변환 모드는 아날로그 신호가 한 번만 변환되고 , 프리러닝 모드는 계속해서 A to D 변환이 진행된다. 

 

각 동작에 걸리는 클럭수 

ADC 동작에 걸리는 clk 를 나타냈으며 clk는 ADC 분주기로부터 얻은 클럭이다. 

sample and hold 에 소모되는 클럭수는 conversion time 안에 포함된다. 

 

input voltage 범위

conversion 할 아날로그 input voltage 번위는 0 ~ AREF까지 이다. 설정에 따라서 AVcc 또는 1.1v 가 될 수도 있다. 

즉 축차비교형 ADC의 기준 전압(Vref ) 값 까지 번위를 가질 수이다.

 

주파수 

데이터 시트에서 free running mode에서 가장 좋은 분해능을 가지기 위해서는 50kHz ~ 200kHz의 주파수를 필요로 한다고 나와있다. 이러한 주파수를 얻기 위해서 ADC 에는 분주기가 존재하는데 다음 그림과 같이 동작하고 

ADPSn 은 다음의 레지스터 파트를 읽어보면 어떻게 사용할지 알 수 있다. 

CK는 cpu의 클럭이다. 우리는 16 Mhz의 외부 크리스털을 사용함으로 CK = 16 M이다. 

16M / 128 하면 125kHz 임으로 우리가 원하는 주파수 범위이다. 따라서 분주비는 128로 한다. 

 

분해능

단일 입력시 분해능

10bit 분해능을 가지고 있으므로 위와 같이 표현될 수 있다. 


레지스터 

ADMUX

 Bit 7:6 – REFS1:0: Reference Selection Bits

- 축차 비교형 ADC에 사용되는 AREF를 선택하는 bit이다. 

 

표를 보면 알다시피 AVcc와 , internal 1.1v를 사용하기 위해서는 AREF pin 에다가 cap을 꼿 아야 하기 때문에 

나는  AREF(0,0)를 사용하겠다

 

Bit 5 – ADLAR: ADC Left Adjust Result

ADC data register를 좌측 정렬 할것인지 우측 정렬 할 것인지 정함  , 1일때 좌측정렬

Bits 3:0 – MUX3:0: Analog Channel Selection Bits

어떤 채널을 사용할 것인지 설정 

cf (atmega128의 경우 차동 입력까지 지원하지 마 32의 경우는 단극성 입력만 지원)

 

 

ADCSRA – ADC Control and Status Register A

• Bit 7 – ADEN: ADC Enable

1로 set 하면 adc 가 사용 가능 

• Bit 6 – ADSC: ADC Start Conversion

ADSC는 conversion 이 수행 중에는 1로 set 되어 있고 수행 후 자동으로 clear 된다.

 

free running mode 다시 자동으로 1로 set 되어서 변환이 자동으로 수행된다. 

 

• Bit 5 – ADATE: ADC Auto Trigger Enable

1로 set 하면 auto trigger를 사용할 수 있다.  auto trigger는 ADCSRB 레지스터에서 다룬다.

• Bit 4 – ADIF: ADC Interrupt Flag

conversion 이 완료되고 data register를 갱신한 후 1로 set 된다. 

SREG의 I bit 가 1이라면 ADC conversion complete interrupt 가 발생하고 인터럽트가  처리되면 다시 0으로 clear 된다. 

• Bit 3 – ADIE: ADC Interrupt Enable

1로 set 되면 ADC conversion complete interrupt 가 발생 가능하다. 

 

• Bits 2:0 – ADPS2:0: ADC Prescaler Select Bits

ADC의 분주비를 선택한다. 

 

 

ADCL and ADCH – The ADC Data Register

conversion 된 데이터를 저장하는 레지스터 ( 정렬 방식에 따른 차이 ) 

 

ADCSRB – ADC Control and Status Register B

Bit 6 – ACME : analog comparator multiplexer enable bit

아날로그 비교기에서 8개의 아날로그 input 채널을 사용하기 위한 bit 

ADC를 사용할 때는 항상 0으로 clear 되어야 한다. 1로 set 된다면 아날로그 비교기가 작동하고 ADC는 꺼진다.

 

• Bit 2:0 – ADTS2:0: ADC Auto Trigger Source

triger mode를 결정하는 bit 

ADCSRA 레지스터의 ADATE bit 가 1일 때 영향을 줄 수 있다. 

 

free running mode를 제외하고는 선택된 인터럽트의 플레그 비트가 set 1로 될 때 conversion 이 실행된다.

free running mode는 인터럽트에 상관없이 계속 실행되는 모드이다. 

 

23.9.5 DIDR0 – Digital Input Disable Register 0

- ADC5:0번 핀 또한 모드 i/O pint 임으로 digital input buffer를 가지고 있다. 

아날로그 input pin으로 사용될 때는 digital input buffer를 사용할 필요가 없기 때문에 disable 하게 해줘야 한다. 

ADC7, ADC6 pin 은 digital input buffer 가 존재하지 않아서 관련 bit 가 존재 하지 않는다. 

 

• Bit 5:0 – ADC5 D.. ADC0 D: ADC5.. 0 Digital Input Disable

1로 set 하면 각 pin에 연결된 digital input buffer를 사용 불가능하게 만들어 준다. 

 

댓글