SlideShare a Scribd company logo
1 of 16
Download to read offline
임베디드임베디드 마이크로프로세서마이크로프로세서
프로그래밍프로그래밍 실전실전
제작제작 :: 네네 로로 테테 크크
강의강의 :: 김김 종종 형형
--22--20062006--0404--0101
Embedded AVR ProgrammingEmbedded AVR Programming
ATMEGA128 A/DATMEGA128 A/D 컨버터컨버터
1. A/D 컨버터의 개요
2. A/D 컨버터 관련 레지스터
3. 클럭의 선택 및 동작 타이밍
4. A/D 변환 결과
5. A/D 변환 오차
6. 잡음 제거 방법
7. A/D 컨버터 실습
--33--20062006--0404--0101
Embedded AVR ProgrammingEmbedded AVR Programming
1-1 A/D 컨버터의 개요
⊙ 아날로그 값을 디지털 값으로 변환
⊙ 8채널 10비트 분해능의 축차비교형(successive approximation) A/D 컨버터
⊙ A/D 컨버터는 한 개이며 채널을 바꿔가며 아날로그 신호를 입력 받음
⊙ 안정된 동작을 위한 MCU의 디지털 전원과 별도의 아날로그 회로 전원단자 AVCC를 가지며,
A/D 변환에 필요한 기준전압 AREF 단자 지원
⊙ A/D 컨버젼 설정 순서
- ADMUX로 A/D 신호를 입력받을 채널을 0에서 7까지 선택
- ADCSR로 컨버전 프리스케일러 설정, 컨버전 완료 인터럽트를 설정
- 전역 인터럽트 플래그를 ‘SET’하여 인터럽트 활성화
- 아날로그 디지털 변환 완료 인터럽트 처리 루틴을 구성한 후 ADCSR의 6번 비트를 셋하여
A/D 변환을 시작
- 변환 완료 플래그를 주기적으로 점검하거나 아날로그 디지털 컨버전 완료 인터럽트를
이용하여 A/D 컨버전 이후의 데이터 처리 루틴을 구성
- 반드시 ADCL(하위 데이터)를 먼저 읽어서 저장한 다음에 ADCH(상위 데이터)를 저장
--44--20062006--0404--0101
Embedded AVR ProgrammingEmbedded AVR Programming
1-2 A/D 컨버터 관련 레지스터 1
⊙ A/D 컨버터 멀티플렉서 선택 레지스터(ADMUX)
- A/D 컨버터의 아날로그 입력 채널을 선택
- A/D 컨버터의 기준 전압 소스를 선택하거나 변환결과 레지스터의 데이터 저장 형식을 지정
REFS1 ~ 0 (Reference Selection Bit) : A/D 컨버터에서 사용하는 기준전압 선택
ADLAR (ADC Left Adjust Result) : A/D 컨버터 데이터 레지스터와 연관작동
ADMUX ( ADC Multiplexer Selection Register )
Value
$07($27)
BIT
00000000
MUX0MUX1MUX2MUX3MUX4ADLARREFS0REFS1
01234567
내부의 기준전압 2.56V 사용11
예약01
AVCC 단자로 입력된 전압을 사용10
AREF 단자로 입력된 전압을 사용00
기준전압REFS0REFS1
--55--20062006--0404--0101
Embedded AVR ProgrammingEmbedded AVR Programming
1-2 A/D 컨버터 관련 레지스터 1
⊙ A/D 컨버터 멀티플렉서 선택 레지스터(ADMUX)
MUX4 ~ 0 (Analog Channel and Gain Selection Bit) : 아날로그 입력 채널 선택
단일 전압 입력
--66--20062006--0404--0101
Embedded AVR ProgrammingEmbedded AVR Programming
1-2 A/D 컨버터 관련 레지스터 1
⊙ A/D 컨버터 멀티플렉서 선택 레지스터(ADMUX)
--77--20062006--0404--0101
Embedded AVR ProgrammingEmbedded AVR Programming
1-2 A/D 컨버터 관련 레지스터 2
⊙ A/D 컨버터 제어 및 상태 레지스터 A (ADCSRA)
- A/D 컨버터의 동작을 설정하거나 동작 상태를 표시하는 기능
ADEN (ADC Enable) : A/D 컨버터 작동유무 지정
ADSC (ADC Start Coversion) : 1로 설정 시 A/D 컨버터 변환 시작
ADFR (ADC Free Running Select) : 프리런닝 모드 설정, ADSC = 1 로 설정하면 한번
만
변환을 시작하고 나면 그 다음부터는 자동 반복적으로 변환동작을 수행한
다.
ADIF (ADC Interrupt Flag) : A/D 변환이 완료되어 A/D 컨버터 데이터 레지스터 값이
갱신되고 나면 이것이 1로 셋트되면서 변환완료 인터럽트를 요청
ADIE (ADC Interrupt Enable) : A/D 변환완료 인터럽트를 개별적으로 허용
ADPS2~0(ADC Preslcaler Select Bit) : A/D 컨버터의 변환시간 설정을 위한 Prescaler
설정
ADCSRA ( ADC Control and Status Register A )
Value
$06($26)
BIT
00000000
ADPS0ADPS1ADPS2ADIEADIFADFRADSCADEN
01234567
--88--20062006--0404--0101
Embedded AVR ProgrammingEmbedded AVR Programming
1-2 A/D 컨버터 관련 레지스터 2
⊙ A/D 컨버터 제어 및 상태 레지스터 A (ADCSRA)
- ADPS2~0(ADC Preslcaler Select Bit)
1
1
1
1
0
0
0
0
ADPS2
11128
0164
1032
0016
118
014
102
002
ADPS0ADPS1분주비
--99--20062006--0404--0101
Embedded AVR ProgrammingEmbedded AVR Programming
1-2 A/D 컨버터 관련 레지스터 3
⊙ A/D 컨버터 데이터 레지스터 (ADCH, ADCL)
- ADMUX 레지스터의 ADLAR = 0 인 경우
- ADMUX 레지스터의 ADLAR = 1 인 경우
단극성 입력 사용시 변환결과가 10비트 양의 정수로 표시된다(0~1023)
차동입력을 사용할 경우 변환 결과가 10비트 2의 보수로 표현(-512~+511)
반드시 ADCL(하위 데이터)를 먼저 읽어서 저장한 다음에 ADCH(상위 데이터)를 저장
BIT
ADCL
ADCH
BIT
01234567
ADC0ADC1ADC2ADC3ADC4ADC5ADC6ADC7
ADC8ADC9------
89101112131415
BIT
ADCL
ADCH
BIT
01234567
------ADC0ADC1
ADC2ADC3ADC4ADC5ADC6ADC7ADC8ADC9
89101112131415
--1010--20062006--0404--0101
Embedded AVR ProgrammingEmbedded AVR Programming
1-2 A/D 컨버터 관련 레지스터 3
⊙ A/D 컨버터 데이터 레지스터 (ADCH, ADCL)
- ADMUX 레지스터의 ADLAR = 0 인 경우
- ADMUX 레지스터의 ADLAR = 1 인 경우
단극성 입력 사용시 변환결과가 10비트 양의 정수로 표시된다(0~1023)
차동입력을 사용할 경우 변환 결과가 10비트 2의 보수로 표현(-512~+511)
반드시 ADCL(하위 데이터)를 먼저 읽어서 저장한 다음에 ADCH(상위 데이터)를 저장
BIT
ADCL
ADCH
BIT
01234567
ADC0ADC1ADC2ADC3ADC4ADC5ADC6ADC7
ADC8ADC9------
89101112131415
BIT
ADCL
ADCH
BIT
01234567
------ADC0ADC1
ADC2ADC3ADC4ADC5ADC6ADC7ADC8ADC9
89101112131415
--1111--20062006--0404--0101
Embedded AVR ProgrammingEmbedded AVR Programming
1-3 클럭의 선택 및 동작 타이밍
⊙ 클럭의 선택
- 10비트 분해능으로 정상적인 동작을 위해서는 50kHz~200kHz 범위의 클럭 사용
- ADCSRA 레지스터의 ADPS2~0 비트에 의하여 2,4,8,16,32,64,128 중의 1가지로 선택
- 프리스케일러는 ADCSRA레지스터에서 ADEN=1로 설정한 경우에만 동작
⊙ A/D 컨버터의 동작 시간
그 이후의 일반적인 A/D 변환(차동입력)
그 이후의 일반적인 A/D 변환(단극성 입력)
ADEN=1 설정후 최초 변환
조 건
13~141.5~2.5
131.5
2513.5
A/D 변환 시간(사이클)샘플/홀드 시간(사이클)
--1212--20062006--0404--0101
Embedded AVR ProgrammingEmbedded AVR Programming
1-4 A/D 변환 결과
⊙ 단극성 입력 채널의 변환 결과
- 변환 결과는 ADCH 및 ADCL에 저장
⊙ 차동입력 채널의 변환 결과
--1313--20062006--0404--0101
Embedded AVR ProgrammingEmbedded AVR Programming
1-5 A/D 변환 오차
⊙ 양자화 오차(Quantization error)
- 1비트의 디지털 값의 변화를 일으키는 아날로그 값의 한계
항상 ±0.5LSB로서 일정하며 A/D 컨버터가 가지는 불가피한 오차(분해능 높은 A/D 사용)
⊙ 오프셋 오차(Offset error)
- 이상적인 디지털 값에서 일정한 양만큼 벗어나는 오차
(일정치를 빼거나 더함으로써 S/W적으로 보정)
⊙ 이득 오차(Gain error)
- 이상적인 값에서 일정한 비율만큼 벗어나는 것인데, 이는 디지털 값이 최대치인 경우의
아날로그 입력과 최대 아날로그 입력인 VREF의 차이로 표현
(디지털 값에서 일정치를 곱하거나 나눔으로써 S/W적으로 쉽게 보정)
⊙ 비선형 오차(INL ; integral non-linearity error)
- 오프셋 오차나 이득 오차를 보상한 후에 디지털 값이 이상적인 값에서 가장 크게 벗어남
(A/D 컨버터의 사용자가 보정하기 어려움)
⊙ 차동 비선형 오차(DNL ; differential non-linearity error)
- 1비트의 변화를 발생하는 아날로그 값이 이상적인 경우에서 가장 크게 벗어나는 양
--1414--20062006--0404--0101
Embedded AVR ProgrammingEmbedded AVR Programming
1-6 잡음 제거 방법
⊙ 아날로그 입력 신호선은 최소한으로 짧게 설계
⊙ AVCC는 디지털 전원 VCC를 LC 필터로 안정화시켜 인가
⊙ A/D 컨버터의 근처에서는 접지 단자 GND와 디지털 전원 VCC 사이에 바이패스 콘덴서를 담
⊙ A/D 변환이 수행되는 동안에는 병렬 I/O포트의 논리상태를 스위칭하지 않는 것이 좋음
⊙ 잡음에 대하여 극도의 안정적인 A/D 변환이 필요한 경우에는 Idle mode(ADC Noise
Reduction Mode)에서 A/D변환을 수행하는 것도 권장
⊙ 디지털 필터를 사용하거나 여러 번 A/D 변환 결과를 읽어들인 것을 평균 처리하여 사용
--1515--20062006--0404--0101
Embedded AVR ProgrammingEmbedded AVR Programming
1-7 A/D 컨버터 실습
☞ ADC0 에 저항을 연결한 후 전원 입력을 조정하며 시리얼통신을 통해 전압값 표시하는 프로그램
void main(void)
{
unsigned int adc_value,adc_dig1,adc_dig2,adc_dig3;
float adc_temp;
// Ports init
DDRB = 0xff; // output Port
DDRF = 0x00; // input Port
// USART init
UCSR0A=0x00;
UCSR0B=0x18;
UCSR0C=0x06;
UBRR0H=0x00;
UBRR0L=0x67;//(xtal - 16MHz)
//UBRR0L=0x33;//(xtal - 8MHz)
putsf(TITLE);
while(1)
{
다음 페이지
}
}
#include <mega128.h>
#include <stdio.h>
#include <delay.h>
#define ADC_START ADCSRA.6=1
#define ADC_CHECK ADCSRA.6=0
#define ADC_EOC ADCSRA.4
char flash TITLE[] = "₩n₩rM128KIT V2.0 ADC TEST1";
unsigned int adc_data[7]; // ADC Value variable
// ADC Single Mode
void ADC_Init(int channel)
{
ADMUX = channel;
ADCSRA = 0x86; //ADCEN, xtal/64
}
void adconversion(int ch)
{
ADC_Init(ch);
ADC_START; //ADC_START
while(!(ADC_EOC)); //ADC_Convertion
adc_data[ch]=ADCW; //ADCH, ADCL
}
--1616--20062006--0404--0101
Embedded AVR ProgrammingEmbedded AVR Programming
1-7 A/D 컨버터 실습 1
☞ ADC0 에 저항을 연결한 후 전원 입력을 조정하며 시리얼통신을 통해 전압값 표시하는 프로그램
while(1)
{
adconversion(0);
printf("₩n₩rad ch0 value : %02d",adc_data[0]);
adc_temp = (((float)(adc_data[0]) / 1024)*500); // Vref가 5V이며 소수점 2째자리까지 표현하기 위해 100을 곱해줌
adc_value = (unsigned int)adc_temp;
adc_dig1 = adc_value / 100; // 정수값
adc_dig2 = (adc_value % 100) / 10; // 소수점 첫째자리
adc_dig3 = adc_value % 10; // 소수점 둘째자리
//adc_dig3 = (adc_value % 100) %10; // 소수점 둘째자리
printf("₩n₩rad ch0 voltage : %d.%d%dV",adc_dig1,adc_dig2,adc_dig3); // 입력 전압값을 소수점 둘째자리까지 표현
delay_ms(2000);
}
}

More Related Content

What's hot

광운대[바람] 1.vhdl intro
광운대[바람] 1.vhdl intro광운대[바람] 1.vhdl intro
광운대[바람] 1.vhdl introNAVER D2
 
Arduino Basic Programming
Arduino Basic ProgrammingArduino Basic Programming
Arduino Basic ProgrammingSangGyu Kim
 
Arduino 소개, RC카 만들기
Arduino 소개, RC카 만들기Arduino 소개, RC카 만들기
Arduino 소개, RC카 만들기Ji Hun Kim
 
아두이노 2015-2 한동대학교 공학설계입문
아두이노 2015-2 한동대학교 공학설계입문아두이노 2015-2 한동대학교 공학설계입문
아두이노 2015-2 한동대학교 공학설계입문Sangjun Han
 
손으로 만드는 아두이노
손으로 만드는 아두이노손으로 만드는 아두이노
손으로 만드는 아두이노Kisoon Eom
 
Netmanias L2,L3 Training (5) L3 SW Architecture
Netmanias L2,L3 Training (5) L3 SW ArchitectureNetmanias L2,L3 Training (5) L3 SW Architecture
Netmanias L2,L3 Training (5) L3 SW ArchitectureChris Changmo Yoo
 
Netmanias L2,L3 Training (3) L2, L3 QoS
Netmanias L2,L3 Training (3) L2, L3 QoSNetmanias L2,L3 Training (3) L2, L3 QoS
Netmanias L2,L3 Training (3) L2, L3 QoSChris Changmo Yoo
 
Netmanias L2,L3 Training (1) L2 Ethernet
Netmanias L2,L3 Training (1) L2 EthernetNetmanias L2,L3 Training (1) L2 Ethernet
Netmanias L2,L3 Training (1) L2 EthernetChris Changmo Yoo
 
리모콘메뉴얼
리모콘메뉴얼리모콘메뉴얼
리모콘메뉴얼haeung2
 
메이커 페어 서울 2018 - 측우자격루(개발자용)
메이커 페어 서울 2018 - 측우자격루(개발자용)메이커 페어 서울 2018 - 측우자격루(개발자용)
메이커 페어 서울 2018 - 측우자격루(개발자용)JongyoonWon1
 
04. external interrupt
04. external interrupt04. external interrupt
04. external interrupt성호 정
 

What's hot (14)

광운대[바람] 1.vhdl intro
광운대[바람] 1.vhdl intro광운대[바람] 1.vhdl intro
광운대[바람] 1.vhdl intro
 
Arduino Basic Programming
Arduino Basic ProgrammingArduino Basic Programming
Arduino Basic Programming
 
Arduino 소개, RC카 만들기
Arduino 소개, RC카 만들기Arduino 소개, RC카 만들기
Arduino 소개, RC카 만들기
 
아두이노 2015-2 한동대학교 공학설계입문
아두이노 2015-2 한동대학교 공학설계입문아두이노 2015-2 한동대학교 공학설계입문
아두이노 2015-2 한동대학교 공학설계입문
 
손으로 만드는 아두이노
손으로 만드는 아두이노손으로 만드는 아두이노
손으로 만드는 아두이노
 
Netmanias L2,L3 Training (5) L3 SW Architecture
Netmanias L2,L3 Training (5) L3 SW ArchitectureNetmanias L2,L3 Training (5) L3 SW Architecture
Netmanias L2,L3 Training (5) L3 SW Architecture
 
Netmanias L2,L3 Training (3) L2, L3 QoS
Netmanias L2,L3 Training (3) L2, L3 QoSNetmanias L2,L3 Training (3) L2, L3 QoS
Netmanias L2,L3 Training (3) L2, L3 QoS
 
Netmanias L2,L3 Training (1) L2 Ethernet
Netmanias L2,L3 Training (1) L2 EthernetNetmanias L2,L3 Training (1) L2 Ethernet
Netmanias L2,L3 Training (1) L2 Ethernet
 
리모콘메뉴얼
리모콘메뉴얼리모콘메뉴얼
리모콘메뉴얼
 
메이커 페어 서울 2018 - 측우자격루(개발자용)
메이커 페어 서울 2018 - 측우자격루(개발자용)메이커 페어 서울 2018 - 측우자격루(개발자용)
메이커 페어 서울 2018 - 측우자격루(개발자용)
 
Lgi project (1)
Lgi project (1)Lgi project (1)
Lgi project (1)
 
Lgi project
Lgi projectLgi project
Lgi project
 
Lgi project
Lgi projectLgi project
Lgi project
 
04. external interrupt
04. external interrupt04. external interrupt
04. external interrupt
 

Similar to Avr lecture4

ADC(nanheekim)
ADC(nanheekim)ADC(nanheekim)
ADC(nanheekim)Nanhee Kim
 
2013 mcu( 마이크로컨트롤러 ) 수업자료 3
2013 mcu( 마이크로컨트롤러 ) 수업자료 32013 mcu( 마이크로컨트롤러 ) 수업자료 3
2013 mcu( 마이크로컨트롤러 ) 수업자료 3진우 김
 
2012-1 기말고사문제(전자회로설계)
2012-1 기말고사문제(전자회로설계)2012-1 기말고사문제(전자회로설계)
2012-1 기말고사문제(전자회로설계)Yong Heui Cho
 
RF 증폭기 최종설계보고서
RF 증폭기 최종설계보고서RF 증폭기 최종설계보고서
RF 증폭기 최종설계보고서Yong Heui Cho
 
Arduino 특강 강태욱
Arduino 특강   강태욱Arduino 특강   강태욱
Arduino 특강 강태욱Tae wook kang
 
Chapter6 power management ic group11
Chapter6 power management ic group11Chapter6 power management ic group11
Chapter6 power management ic group11Hyun Wong Choi
 
TestECD2018-1(answer)
TestECD2018-1(answer)TestECD2018-1(answer)
TestECD2018-1(answer)Yong Heui Cho
 
감쇄기 설계(Design of Attenuator)
감쇄기 설계(Design of Attenuator)감쇄기 설계(Design of Attenuator)
감쇄기 설계(Design of Attenuator)Yong Heui Cho
 
Vco ir (kangfa chung's conflicted copy 2010 06-28)
Vco ir (kangfa chung's conflicted copy 2010 06-28)Vco ir (kangfa chung's conflicted copy 2010 06-28)
Vco ir (kangfa chung's conflicted copy 2010 06-28)Yeonmoon Jeong
 
TestECD2015-1(Answer)
TestECD2015-1(Answer)TestECD2015-1(Answer)
TestECD2015-1(Answer)Yong Heui Cho
 
안테나 분석기 Rig expert aa series 소개
안테나 분석기 Rig expert aa series 소개안테나 분석기 Rig expert aa series 소개
안테나 분석기 Rig expert aa series 소개WAVENIX CO.,LTD.
 
2nd SDN Interest Group Seminar-Session3 (121218)
2nd SDN Interest Group Seminar-Session3 (121218)2nd SDN Interest Group Seminar-Session3 (121218)
2nd SDN Interest Group Seminar-Session3 (121218)NAIM Networks, Inc.
 
2013 MCU( 마이크로컨트롤러 ) 수업자료 1
2013 MCU( 마이크로컨트롤러 ) 수업자료 12013 MCU( 마이크로컨트롤러 ) 수업자료 1
2013 MCU( 마이크로컨트롤러 ) 수업자료 1진우 김
 

Similar to Avr lecture4 (16)

06. ADC
06. ADC06. ADC
06. ADC
 
ADC(nanheekim)
ADC(nanheekim)ADC(nanheekim)
ADC(nanheekim)
 
Make: 센서
Make: 센서Make: 센서
Make: 센서
 
2013 mcu( 마이크로컨트롤러 ) 수업자료 3
2013 mcu( 마이크로컨트롤러 ) 수업자료 32013 mcu( 마이크로컨트롤러 ) 수업자료 3
2013 mcu( 마이크로컨트롤러 ) 수업자료 3
 
2012-1 기말고사문제(전자회로설계)
2012-1 기말고사문제(전자회로설계)2012-1 기말고사문제(전자회로설계)
2012-1 기말고사문제(전자회로설계)
 
RF 증폭기 최종설계보고서
RF 증폭기 최종설계보고서RF 증폭기 최종설계보고서
RF 증폭기 최종설계보고서
 
Arduino 특강 강태욱
Arduino 특강   강태욱Arduino 특강   강태욱
Arduino 특강 강태욱
 
Chapter6 power management ic group11
Chapter6 power management ic group11Chapter6 power management ic group11
Chapter6 power management ic group11
 
TestECD2018-1(answer)
TestECD2018-1(answer)TestECD2018-1(answer)
TestECD2018-1(answer)
 
감쇄기 설계(Design of Attenuator)
감쇄기 설계(Design of Attenuator)감쇄기 설계(Design of Attenuator)
감쇄기 설계(Design of Attenuator)
 
Vco ir (kangfa chung's conflicted copy 2010 06-28)
Vco ir (kangfa chung's conflicted copy 2010 06-28)Vco ir (kangfa chung's conflicted copy 2010 06-28)
Vco ir (kangfa chung's conflicted copy 2010 06-28)
 
TestECD2015-1(Answer)
TestECD2015-1(Answer)TestECD2015-1(Answer)
TestECD2015-1(Answer)
 
안테나 분석기 Rig expert aa series 소개
안테나 분석기 Rig expert aa series 소개안테나 분석기 Rig expert aa series 소개
안테나 분석기 Rig expert aa series 소개
 
Ch11
Ch11Ch11
Ch11
 
2nd SDN Interest Group Seminar-Session3 (121218)
2nd SDN Interest Group Seminar-Session3 (121218)2nd SDN Interest Group Seminar-Session3 (121218)
2nd SDN Interest Group Seminar-Session3 (121218)
 
2013 MCU( 마이크로컨트롤러 ) 수업자료 1
2013 MCU( 마이크로컨트롤러 ) 수업자료 12013 MCU( 마이크로컨트롤러 ) 수업자료 1
2013 MCU( 마이크로컨트롤러 ) 수업자료 1
 

More from 봉조 김

창의·융합·문제해결을 배우는 메이커 활동 리스트
창의·융합·문제해결을 배우는 메이커 활동 리스트창의·융합·문제해결을 배우는 메이커 활동 리스트
창의·융합·문제해결을 배우는 메이커 활동 리스트봉조 김
 
Softboxcoding brand name
Softboxcoding brand nameSoftboxcoding brand name
Softboxcoding brand name봉조 김
 
Weather station performance sharing
Weather station performance sharingWeather station performance sharing
Weather station performance sharing봉조 김
 
Aircleaner 20190616 - 미세먼지 공기청정기 메이커활동 제안서
Aircleaner 20190616 - 미세먼지 공기청정기 메이커활동 제안서Aircleaner 20190616 - 미세먼지 공기청정기 메이커활동 제안서
Aircleaner 20190616 - 미세먼지 공기청정기 메이커활동 제안서봉조 김
 
Softbox coding - raspberrypi3 b+ 2019 Lecture File
Softbox coding - raspberrypi3 b+ 2019 Lecture File Softbox coding - raspberrypi3 b+ 2019 Lecture File
Softbox coding - raspberrypi3 b+ 2019 Lecture File 봉조 김
 
Sw education and maker
Sw education and makerSw education and maker
Sw education and maker봉조 김
 
소프트박스 라즈베리파이 교육키트 개발환경 설정
소프트박스 라즈베리파이 교육키트 개발환경 설정소프트박스 라즈베리파이 교육키트 개발환경 설정
소프트박스 라즈베리파이 교육키트 개발환경 설정봉조 김
 
Expansion of maker culture and promotion of maker activity
Expansion of maker culture and promotion of maker activityExpansion of maker culture and promotion of maker activity
Expansion of maker culture and promotion of maker activity봉조 김
 
2018년 따복공동체 활동 공유 - 과천 디지털 창작집단
2018년 따복공동체 활동 공유 - 과천 디지털 창작집단2018년 따복공동체 활동 공유 - 과천 디지털 창작집단
2018년 따복공동체 활동 공유 - 과천 디지털 창작집단봉조 김
 
강사료 원천징수 관련 설명자료
강사료 원천징수 관련 설명자료강사료 원천징수 관련 설명자료
강사료 원천징수 관련 설명자료봉조 김
 
Softbox review and quickstartguide-20180926
Softbox review and quickstartguide-20180926Softbox review and quickstartguide-20180926
Softbox review and quickstartguide-20180926봉조 김
 
디지털창작집단 활동 소개문서
디지털창작집단 활동 소개문서디지털창작집단 활동 소개문서
디지털창작집단 활동 소개문서봉조 김
 
Softbox arduino software education, softbox 소프트박스 제품소개서
Softbox arduino software education, softbox 소프트박스 제품소개서 Softbox arduino software education, softbox 소프트박스 제품소개서
Softbox arduino software education, softbox 소프트박스 제품소개서 봉조 김
 
Stuffed animals 20180605
Stuffed animals 20180605Stuffed animals 20180605
Stuffed animals 20180605봉조 김
 
20180329 reco computer for maker
20180329 reco computer for maker20180329 reco computer for maker
20180329 reco computer for maker봉조 김
 
2018 donga marathon training schedule
2018 donga marathon training schedule2018 donga marathon training schedule
2018 donga marathon training schedule봉조 김
 
2017 marathob trainning schedule
2017 marathob trainning schedule2017 marathob trainning schedule
2017 marathob trainning schedule봉조 김
 
Marathon safe guide
Marathon safe guideMarathon safe guide
Marathon safe guide봉조 김
 
사물인터넷서비스와 클라우드
사물인터넷서비스와 클라우드사물인터넷서비스와 클라우드
사물인터넷서비스와 클라우드봉조 김
 
4차 산업혁명과 io t 20170919
4차 산업혁명과 io t  201709194차 산업혁명과 io t  20170919
4차 산업혁명과 io t 20170919봉조 김
 

More from 봉조 김 (20)

창의·융합·문제해결을 배우는 메이커 활동 리스트
창의·융합·문제해결을 배우는 메이커 활동 리스트창의·융합·문제해결을 배우는 메이커 활동 리스트
창의·융합·문제해결을 배우는 메이커 활동 리스트
 
Softboxcoding brand name
Softboxcoding brand nameSoftboxcoding brand name
Softboxcoding brand name
 
Weather station performance sharing
Weather station performance sharingWeather station performance sharing
Weather station performance sharing
 
Aircleaner 20190616 - 미세먼지 공기청정기 메이커활동 제안서
Aircleaner 20190616 - 미세먼지 공기청정기 메이커활동 제안서Aircleaner 20190616 - 미세먼지 공기청정기 메이커활동 제안서
Aircleaner 20190616 - 미세먼지 공기청정기 메이커활동 제안서
 
Softbox coding - raspberrypi3 b+ 2019 Lecture File
Softbox coding - raspberrypi3 b+ 2019 Lecture File Softbox coding - raspberrypi3 b+ 2019 Lecture File
Softbox coding - raspberrypi3 b+ 2019 Lecture File
 
Sw education and maker
Sw education and makerSw education and maker
Sw education and maker
 
소프트박스 라즈베리파이 교육키트 개발환경 설정
소프트박스 라즈베리파이 교육키트 개발환경 설정소프트박스 라즈베리파이 교육키트 개발환경 설정
소프트박스 라즈베리파이 교육키트 개발환경 설정
 
Expansion of maker culture and promotion of maker activity
Expansion of maker culture and promotion of maker activityExpansion of maker culture and promotion of maker activity
Expansion of maker culture and promotion of maker activity
 
2018년 따복공동체 활동 공유 - 과천 디지털 창작집단
2018년 따복공동체 활동 공유 - 과천 디지털 창작집단2018년 따복공동체 활동 공유 - 과천 디지털 창작집단
2018년 따복공동체 활동 공유 - 과천 디지털 창작집단
 
강사료 원천징수 관련 설명자료
강사료 원천징수 관련 설명자료강사료 원천징수 관련 설명자료
강사료 원천징수 관련 설명자료
 
Softbox review and quickstartguide-20180926
Softbox review and quickstartguide-20180926Softbox review and quickstartguide-20180926
Softbox review and quickstartguide-20180926
 
디지털창작집단 활동 소개문서
디지털창작집단 활동 소개문서디지털창작집단 활동 소개문서
디지털창작집단 활동 소개문서
 
Softbox arduino software education, softbox 소프트박스 제품소개서
Softbox arduino software education, softbox 소프트박스 제품소개서 Softbox arduino software education, softbox 소프트박스 제품소개서
Softbox arduino software education, softbox 소프트박스 제품소개서
 
Stuffed animals 20180605
Stuffed animals 20180605Stuffed animals 20180605
Stuffed animals 20180605
 
20180329 reco computer for maker
20180329 reco computer for maker20180329 reco computer for maker
20180329 reco computer for maker
 
2018 donga marathon training schedule
2018 donga marathon training schedule2018 donga marathon training schedule
2018 donga marathon training schedule
 
2017 marathob trainning schedule
2017 marathob trainning schedule2017 marathob trainning schedule
2017 marathob trainning schedule
 
Marathon safe guide
Marathon safe guideMarathon safe guide
Marathon safe guide
 
사물인터넷서비스와 클라우드
사물인터넷서비스와 클라우드사물인터넷서비스와 클라우드
사물인터넷서비스와 클라우드
 
4차 산업혁명과 io t 20170919
4차 산업혁명과 io t  201709194차 산업혁명과 io t  20170919
4차 산업혁명과 io t 20170919
 

Avr lecture4

  • 2. --22--20062006--0404--0101 Embedded AVR ProgrammingEmbedded AVR Programming ATMEGA128 A/DATMEGA128 A/D 컨버터컨버터 1. A/D 컨버터의 개요 2. A/D 컨버터 관련 레지스터 3. 클럭의 선택 및 동작 타이밍 4. A/D 변환 결과 5. A/D 변환 오차 6. 잡음 제거 방법 7. A/D 컨버터 실습
  • 3. --33--20062006--0404--0101 Embedded AVR ProgrammingEmbedded AVR Programming 1-1 A/D 컨버터의 개요 ⊙ 아날로그 값을 디지털 값으로 변환 ⊙ 8채널 10비트 분해능의 축차비교형(successive approximation) A/D 컨버터 ⊙ A/D 컨버터는 한 개이며 채널을 바꿔가며 아날로그 신호를 입력 받음 ⊙ 안정된 동작을 위한 MCU의 디지털 전원과 별도의 아날로그 회로 전원단자 AVCC를 가지며, A/D 변환에 필요한 기준전압 AREF 단자 지원 ⊙ A/D 컨버젼 설정 순서 - ADMUX로 A/D 신호를 입력받을 채널을 0에서 7까지 선택 - ADCSR로 컨버전 프리스케일러 설정, 컨버전 완료 인터럽트를 설정 - 전역 인터럽트 플래그를 ‘SET’하여 인터럽트 활성화 - 아날로그 디지털 변환 완료 인터럽트 처리 루틴을 구성한 후 ADCSR의 6번 비트를 셋하여 A/D 변환을 시작 - 변환 완료 플래그를 주기적으로 점검하거나 아날로그 디지털 컨버전 완료 인터럽트를 이용하여 A/D 컨버전 이후의 데이터 처리 루틴을 구성 - 반드시 ADCL(하위 데이터)를 먼저 읽어서 저장한 다음에 ADCH(상위 데이터)를 저장
  • 4. --44--20062006--0404--0101 Embedded AVR ProgrammingEmbedded AVR Programming 1-2 A/D 컨버터 관련 레지스터 1 ⊙ A/D 컨버터 멀티플렉서 선택 레지스터(ADMUX) - A/D 컨버터의 아날로그 입력 채널을 선택 - A/D 컨버터의 기준 전압 소스를 선택하거나 변환결과 레지스터의 데이터 저장 형식을 지정 REFS1 ~ 0 (Reference Selection Bit) : A/D 컨버터에서 사용하는 기준전압 선택 ADLAR (ADC Left Adjust Result) : A/D 컨버터 데이터 레지스터와 연관작동 ADMUX ( ADC Multiplexer Selection Register ) Value $07($27) BIT 00000000 MUX0MUX1MUX2MUX3MUX4ADLARREFS0REFS1 01234567 내부의 기준전압 2.56V 사용11 예약01 AVCC 단자로 입력된 전압을 사용10 AREF 단자로 입력된 전압을 사용00 기준전압REFS0REFS1
  • 5. --55--20062006--0404--0101 Embedded AVR ProgrammingEmbedded AVR Programming 1-2 A/D 컨버터 관련 레지스터 1 ⊙ A/D 컨버터 멀티플렉서 선택 레지스터(ADMUX) MUX4 ~ 0 (Analog Channel and Gain Selection Bit) : 아날로그 입력 채널 선택 단일 전압 입력
  • 6. --66--20062006--0404--0101 Embedded AVR ProgrammingEmbedded AVR Programming 1-2 A/D 컨버터 관련 레지스터 1 ⊙ A/D 컨버터 멀티플렉서 선택 레지스터(ADMUX)
  • 7. --77--20062006--0404--0101 Embedded AVR ProgrammingEmbedded AVR Programming 1-2 A/D 컨버터 관련 레지스터 2 ⊙ A/D 컨버터 제어 및 상태 레지스터 A (ADCSRA) - A/D 컨버터의 동작을 설정하거나 동작 상태를 표시하는 기능 ADEN (ADC Enable) : A/D 컨버터 작동유무 지정 ADSC (ADC Start Coversion) : 1로 설정 시 A/D 컨버터 변환 시작 ADFR (ADC Free Running Select) : 프리런닝 모드 설정, ADSC = 1 로 설정하면 한번 만 변환을 시작하고 나면 그 다음부터는 자동 반복적으로 변환동작을 수행한 다. ADIF (ADC Interrupt Flag) : A/D 변환이 완료되어 A/D 컨버터 데이터 레지스터 값이 갱신되고 나면 이것이 1로 셋트되면서 변환완료 인터럽트를 요청 ADIE (ADC Interrupt Enable) : A/D 변환완료 인터럽트를 개별적으로 허용 ADPS2~0(ADC Preslcaler Select Bit) : A/D 컨버터의 변환시간 설정을 위한 Prescaler 설정 ADCSRA ( ADC Control and Status Register A ) Value $06($26) BIT 00000000 ADPS0ADPS1ADPS2ADIEADIFADFRADSCADEN 01234567
  • 8. --88--20062006--0404--0101 Embedded AVR ProgrammingEmbedded AVR Programming 1-2 A/D 컨버터 관련 레지스터 2 ⊙ A/D 컨버터 제어 및 상태 레지스터 A (ADCSRA) - ADPS2~0(ADC Preslcaler Select Bit) 1 1 1 1 0 0 0 0 ADPS2 11128 0164 1032 0016 118 014 102 002 ADPS0ADPS1분주비
  • 9. --99--20062006--0404--0101 Embedded AVR ProgrammingEmbedded AVR Programming 1-2 A/D 컨버터 관련 레지스터 3 ⊙ A/D 컨버터 데이터 레지스터 (ADCH, ADCL) - ADMUX 레지스터의 ADLAR = 0 인 경우 - ADMUX 레지스터의 ADLAR = 1 인 경우 단극성 입력 사용시 변환결과가 10비트 양의 정수로 표시된다(0~1023) 차동입력을 사용할 경우 변환 결과가 10비트 2의 보수로 표현(-512~+511) 반드시 ADCL(하위 데이터)를 먼저 읽어서 저장한 다음에 ADCH(상위 데이터)를 저장 BIT ADCL ADCH BIT 01234567 ADC0ADC1ADC2ADC3ADC4ADC5ADC6ADC7 ADC8ADC9------ 89101112131415 BIT ADCL ADCH BIT 01234567 ------ADC0ADC1 ADC2ADC3ADC4ADC5ADC6ADC7ADC8ADC9 89101112131415
  • 10. --1010--20062006--0404--0101 Embedded AVR ProgrammingEmbedded AVR Programming 1-2 A/D 컨버터 관련 레지스터 3 ⊙ A/D 컨버터 데이터 레지스터 (ADCH, ADCL) - ADMUX 레지스터의 ADLAR = 0 인 경우 - ADMUX 레지스터의 ADLAR = 1 인 경우 단극성 입력 사용시 변환결과가 10비트 양의 정수로 표시된다(0~1023) 차동입력을 사용할 경우 변환 결과가 10비트 2의 보수로 표현(-512~+511) 반드시 ADCL(하위 데이터)를 먼저 읽어서 저장한 다음에 ADCH(상위 데이터)를 저장 BIT ADCL ADCH BIT 01234567 ADC0ADC1ADC2ADC3ADC4ADC5ADC6ADC7 ADC8ADC9------ 89101112131415 BIT ADCL ADCH BIT 01234567 ------ADC0ADC1 ADC2ADC3ADC4ADC5ADC6ADC7ADC8ADC9 89101112131415
  • 11. --1111--20062006--0404--0101 Embedded AVR ProgrammingEmbedded AVR Programming 1-3 클럭의 선택 및 동작 타이밍 ⊙ 클럭의 선택 - 10비트 분해능으로 정상적인 동작을 위해서는 50kHz~200kHz 범위의 클럭 사용 - ADCSRA 레지스터의 ADPS2~0 비트에 의하여 2,4,8,16,32,64,128 중의 1가지로 선택 - 프리스케일러는 ADCSRA레지스터에서 ADEN=1로 설정한 경우에만 동작 ⊙ A/D 컨버터의 동작 시간 그 이후의 일반적인 A/D 변환(차동입력) 그 이후의 일반적인 A/D 변환(단극성 입력) ADEN=1 설정후 최초 변환 조 건 13~141.5~2.5 131.5 2513.5 A/D 변환 시간(사이클)샘플/홀드 시간(사이클)
  • 12. --1212--20062006--0404--0101 Embedded AVR ProgrammingEmbedded AVR Programming 1-4 A/D 변환 결과 ⊙ 단극성 입력 채널의 변환 결과 - 변환 결과는 ADCH 및 ADCL에 저장 ⊙ 차동입력 채널의 변환 결과
  • 13. --1313--20062006--0404--0101 Embedded AVR ProgrammingEmbedded AVR Programming 1-5 A/D 변환 오차 ⊙ 양자화 오차(Quantization error) - 1비트의 디지털 값의 변화를 일으키는 아날로그 값의 한계 항상 ±0.5LSB로서 일정하며 A/D 컨버터가 가지는 불가피한 오차(분해능 높은 A/D 사용) ⊙ 오프셋 오차(Offset error) - 이상적인 디지털 값에서 일정한 양만큼 벗어나는 오차 (일정치를 빼거나 더함으로써 S/W적으로 보정) ⊙ 이득 오차(Gain error) - 이상적인 값에서 일정한 비율만큼 벗어나는 것인데, 이는 디지털 값이 최대치인 경우의 아날로그 입력과 최대 아날로그 입력인 VREF의 차이로 표현 (디지털 값에서 일정치를 곱하거나 나눔으로써 S/W적으로 쉽게 보정) ⊙ 비선형 오차(INL ; integral non-linearity error) - 오프셋 오차나 이득 오차를 보상한 후에 디지털 값이 이상적인 값에서 가장 크게 벗어남 (A/D 컨버터의 사용자가 보정하기 어려움) ⊙ 차동 비선형 오차(DNL ; differential non-linearity error) - 1비트의 변화를 발생하는 아날로그 값이 이상적인 경우에서 가장 크게 벗어나는 양
  • 14. --1414--20062006--0404--0101 Embedded AVR ProgrammingEmbedded AVR Programming 1-6 잡음 제거 방법 ⊙ 아날로그 입력 신호선은 최소한으로 짧게 설계 ⊙ AVCC는 디지털 전원 VCC를 LC 필터로 안정화시켜 인가 ⊙ A/D 컨버터의 근처에서는 접지 단자 GND와 디지털 전원 VCC 사이에 바이패스 콘덴서를 담 ⊙ A/D 변환이 수행되는 동안에는 병렬 I/O포트의 논리상태를 스위칭하지 않는 것이 좋음 ⊙ 잡음에 대하여 극도의 안정적인 A/D 변환이 필요한 경우에는 Idle mode(ADC Noise Reduction Mode)에서 A/D변환을 수행하는 것도 권장 ⊙ 디지털 필터를 사용하거나 여러 번 A/D 변환 결과를 읽어들인 것을 평균 처리하여 사용
  • 15. --1515--20062006--0404--0101 Embedded AVR ProgrammingEmbedded AVR Programming 1-7 A/D 컨버터 실습 ☞ ADC0 에 저항을 연결한 후 전원 입력을 조정하며 시리얼통신을 통해 전압값 표시하는 프로그램 void main(void) { unsigned int adc_value,adc_dig1,adc_dig2,adc_dig3; float adc_temp; // Ports init DDRB = 0xff; // output Port DDRF = 0x00; // input Port // USART init UCSR0A=0x00; UCSR0B=0x18; UCSR0C=0x06; UBRR0H=0x00; UBRR0L=0x67;//(xtal - 16MHz) //UBRR0L=0x33;//(xtal - 8MHz) putsf(TITLE); while(1) { 다음 페이지 } } #include <mega128.h> #include <stdio.h> #include <delay.h> #define ADC_START ADCSRA.6=1 #define ADC_CHECK ADCSRA.6=0 #define ADC_EOC ADCSRA.4 char flash TITLE[] = "₩n₩rM128KIT V2.0 ADC TEST1"; unsigned int adc_data[7]; // ADC Value variable // ADC Single Mode void ADC_Init(int channel) { ADMUX = channel; ADCSRA = 0x86; //ADCEN, xtal/64 } void adconversion(int ch) { ADC_Init(ch); ADC_START; //ADC_START while(!(ADC_EOC)); //ADC_Convertion adc_data[ch]=ADCW; //ADCH, ADCL }
  • 16. --1616--20062006--0404--0101 Embedded AVR ProgrammingEmbedded AVR Programming 1-7 A/D 컨버터 실습 1 ☞ ADC0 에 저항을 연결한 후 전원 입력을 조정하며 시리얼통신을 통해 전압값 표시하는 프로그램 while(1) { adconversion(0); printf("₩n₩rad ch0 value : %02d",adc_data[0]); adc_temp = (((float)(adc_data[0]) / 1024)*500); // Vref가 5V이며 소수점 2째자리까지 표현하기 위해 100을 곱해줌 adc_value = (unsigned int)adc_temp; adc_dig1 = adc_value / 100; // 정수값 adc_dig2 = (adc_value % 100) / 10; // 소수점 첫째자리 adc_dig3 = adc_value % 10; // 소수점 둘째자리 //adc_dig3 = (adc_value % 100) %10; // 소수점 둘째자리 printf("₩n₩rad ch0 voltage : %d.%d%dV",adc_dig1,adc_dig2,adc_dig3); // 입력 전압값을 소수점 둘째자리까지 표현 delay_ms(2000); } }