목차 1. A/D 컨버터개요 2. ATMega128 의 A/D 컨버터기능 3. A/D 컨버터로광센서읽기

Similar documents
<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

정보보안 개론과 실습:네트워크

HBE-MCU-Multi 로배우는 마이크로컨트롤러 (AVR 편 ) 마이크로컨트롤러기능 제 6 장타이머와카운터

Chapter. 14 DAC 를이용한 LED 밝기제어 HBE-MCU-Multi AVR Jaeheung, Lee

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - 08-MP-8-ADC

<BDC7C7E83820BFB9BAF1BAB8B0EDBCAD2E687770>

UART.h #ifndef _UART_H_ #define _UART_H_ #define DIR_TXD #define DIR_RXD sbi(portd,4) cbi(portd,4) #define CPU_CLOCK_HZ UL UART PORT1 void UAR

Microsoft PowerPoint - 제5장 인터럽트 (HBE-MCU-Multi AVR).ppt [호환 모드]

ATmega128

Microsoft PowerPoint - 제7장 타이머와 PWM (HBE-MCU-Multi AVR).ppt [호환 모드]

슬라이드 1

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

목차 1. UART와 RS232 개요 2. ATMega128의 USART 포트 3. UART로 Hello 보내기 4. UART로 PC와데이터주고받기

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

목차 1. 키패드 (KeyPAD) 2. KeyPAD 를이용한비밀번호입력기

Microsoft PowerPoint - 제3장 GPIO 입출력 제어 (HBE-MCU-Multi AVR)

<4D F736F F D20BDBAC5D7C7CE20B6F3C0CEC6AEB7B9C0CCBCADB0ADC1C2202D203420C7C1B7CEB1D7B7A1B9D62E646F63>

C & System

인터럽트 (Interrupt) 범용입출력포트에서입출력의내용을처리하기위해매번입출력을요구하는플래그를검사하는일 (Pollong) 에대하여마이크로컨트롤러에게는상당한시간을소비하게만든다. 인터럽트란 CPU가현재처리하고있는일보다급하게처리해야할사건이발생했을때, 현재수행중인일을중단하고

<4D F736F F D20C0DBC7B0C6ED5FBDBAC5D7C7CE20B6F3C0CEC6AEB7B9C0CCBCAD20B0B3B9DF2E646F63>

AVR Atmega128

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202831C1D6C2F72C2032C1D6C2F729>

Section 03 인터럽트활성화와인터럽트서비스루틴연결 34/82 장치에대한인터럽트설정과활성화 내부장치에대한특수레지스터존재 장치의특성을반영한동작설정용또는상태관찰용비트로구성 인터럽트사건의발생패턴을설정해야함 인터럽트활성화비트를 1 로셋하여, 인터럽트발생을허락» 전제, 전역

인터럽트 * 인터럽트처리메커니즘 ATmega128 인터럽트 2

API 매뉴얼

Microsoft Word - FS_ZigBee_Manual_V1.3.docx

(MHT-SB112\273\347\276\347\274\255.hwp)

(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 -

BY-FDP-4-70.hwp

<4D F736F F F696E74202D2037C0E55FC0CEC5CDB7B4C6AEC0C720B5BFC0DB2E707074>

1. 기본설정 목차 1-1. 설치해야할프로그램및파일 1-2. 프로그램올리기 1-3. MAKEFILE 2. 캐릭터 LCD(PORT) 3-1. 개요 3-2. 사용하는레지스터 3-3. Source Code 3-4. 실습사진 3. 타이머카운터및초음파센서활용 (PORT, TIM

KMC.xlsm

<4D F736F F F696E74202D2037C0E55FC0CCC0C0C7F55FBFCFBCBA205BC8A3C8AF20B8F0B5E55D>

11 강 AVR board & download cable 2009 년도 1 학기 센서개론 Mechatronics Lab 센서개론

lecture4(6.범용IO).hwp

개요 데이터를저장할수있는기억소자 여러개의플립플롭으로구성. 메모리는단순데이터를저장하는소자이지만, 레지스터는저장뿐아니라저장된데이터를처리할수있는기능도있다. 카운터도클록펄스가입력되면미리정해진순서에따라상태가변하는레지스터이다. 카운터와레지스터의차이점 데이터를저장또는이동하는목적으로

AVR128 자료.hwp

Microsoft Word - AM-GYRO-P V02 메뉴얼.doc

<BDC7C7E83520BFB9BAF1BAB8B0EDBCAD2E687770>

Microsoft PowerPoint - polling.pptx

PowerPoint 프레젠테이션

Microsoft PowerPoint - ch11_reg.pptx

Microsoft PowerPoint - es-arduino-lecture-03

I/O (GPIO) 제어 I/0 제어 ATmega128의 I/O 구성및특징 I/O PORT 구성 8비트 / 양방향 / 범용 / 병렬 I/O포트 (PORT A ~PORT F) 6개 5비트 / 양방향 / 범용 / 병렬 I/O포트 (PORT G) 1개 I/O PORT 특징

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202831C1D6C2F72C2032C1D6C2F729>

Microsoft PowerPoint - Ch13

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

2주차: 입출력 제어 복습

// 변수선언 unsigned char i; unsigned char FONT[]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xD8, 0x80, 0x98}; //PORTA 를출력으로설정하고초기값은모두 0 PORTA = 0x00; DD

PowerPoint 프레젠테이션

Microsoft PowerPoint - Chapter 8_USART Serial Communication

[8051] 강의자료.PDF

정보보안 개론과 실습:네트워크

2009년2학기 임베디드시스템 응용

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

-. Data Field 의, 개수, data 등으로구성되며, 각 에따라구성이달라집니다. -. Data 모든 의 data는 2byte로구성됩니다. Data Type는 Integer, Float형에따라다르게처리됩니다. ( 부호가없는 data 0~65535 까지부호가있는

IoT FND8 7-SEGMENT api

1. 제품소개 1.1 제품소개 < 그림 1.1> 도트매트릭스모듈 하드웨어제작에소요되는시간을단축시켜프로그래밍연구개발및학습효과를극대화시켜주는 16x16 도트매트릭스모듈입니다. 또한당사 AVR, PIC, ARM(STM32F) 개발보드와 1P 점퍼클립케이블을이용하여연동이가능하

PowerPoint Presentation

뉴티씨 (NEWTC) ATmega8 교육용모듈 (Model : AM-8PL ) 메뉴얼 ( 주 ) 뉴티씨 ( NEWTC ) 1. ATmega8 모듈 (AM-8PL) 소개 ATmega8 칩을

WATAVR128_manual.hwp

Microsoft Word - PLC제어응용-2차시.doc

시리얼통신 (USART) 범용동기및비동기시리얼수신기와송신기 (USART) 는매우유연한시리얼통신장치이다. 주요특징은다음과같다. w 송수신레지스터가독립적으로운용되는전이중방식. w 비동기또는동기동작. w 마스터또는슬레이브동기동작. w 고해상도전송속도생성기. w 5, 6, 7

Microsoft Word - PEB08_USER_GUIDE.doc

가. 도트매트릭스제어하기 단일 LED와는다르게도트매트릭스를구동시는구동전류가프로세서에서출력되는전류보다사용량을더많이필요하기때문에 TTL 계열의 IC로구동시키기에는무리가따른다. 이러한문제를해결하기위해서사용전압, 전류정격이높은달링턴트랜지스터가어레이형태로들어있는 ULN2803을

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A636C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

COMFILE_VOL13_ cdr

슬라이드 1

<30302E20BEC6C6AEB8E120BDBAC6A9B5F0BFC020BFACBDC0B9AEC1A620C7D8B4E42E687770>

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

그룹웨어와 XXXXX 제목 예제

CAN-fly Quick Manual

Microsoft PowerPoint - 08-MP-4-interrupt

AVR ATmega128 소개 마이크로컨트롤러 AVR ATmega128 저자 : 이상설 소속 : 원광대학교전기 정보통신공학부

À̵¿·Îº¿ÀÇ ÀÎÅͳݱâ¹Ý ¿ø°ÝÁ¦¾î½Ã ½Ã°£Áö¿¬¿¡_.hwp

KXATUHEFFPYO.hwp

(b) 연산증폭기슬루율측정회로 (c) 연산증폭기공통모드제거비측정회로 그림 1.1. 연산증폭기성능파라미터측정회로

Microsoft PowerPoint - VHDL08.ppt [호환 모드]

디지털TV솔루션 브로셔

100_ATmega128_보드제작.hwp

28 저전력복합스위칭기반의 0.16mm 2 12b 30MS/s 0.18um CMOS SAR ADC 신희욱외 Ⅰ. 서론 Ⅱ. 제안하는 SAR ADC 구조및회로설계 1. 제안하는 SAR ADC의전체구조

API 매뉴얼

Chapter ...

Mango-E-Toi Board Developer Manual

Microsoft PowerPoint - AVR100%(1).ppt

슬라이드 제목 없음

<BFACBDC0B9AEC1A6C7AEC0CC5F F E687770>

SRC PLUS 제어기 MANUAL

PowerPoint Presentation

1. 제품규격및특징 구분 규격및특징 입력전압 DC 12~30V 모터구동방식 Bipolar 방식 최대모터전류 Max 3.0A 초기설정정지전류 :4(0.46A), 구동전류 :18(1.75A) 분주비 0(x256), 1(x128), 2(x64), 3(x32), 4(x16),

Microsoft Word - logic2005.doc

(6)

UART Controller 구현

IRTC

1. 제품사진및보드설명 그림. LK ATmega128 A2 트레이닝보드사진 제품소개 ATMEL사의 8비트프로세서인 AVR-ATmega128 MCU를이용하여학습및제품개발을핛수있는 AVR 트레이닝보드입니다. 초보자를세심하게배려하기위하여모든부품의부품이름및부품정보가트레이닝보드

슬라이드 1

Transcription:

Chapter. 9 A/D 컨버터 HBE-MCU-Multi AVR Jaeheug, Lee

목차 1. A/D 컨버터개요 2. ATMega128 의 A/D 컨버터기능 3. A/D 컨버터로광센서읽기

A/D 컨버터개요 A/D 컨버터 (Aalog-to-Digital Coverter) 아날로그신호를컴퓨터가읽을수있는병렬또는직렬의디지털데이터로변환하여주는장치 측정하려는아날로그물리량의범위및시스템의응용목적에따라분해능이나정밀도가적합한것을사용. 변환시간 (coversio time) A/D 변환을수행하는데필요한시간 초당샘플링속도 (samplig rate) 로나타냄 분해능 (resolutio) 디지털출력값을한등급만큼변화시키기위한아날로그입력의최소변화 (A/D 컨버터가표현할수있는최소아날로그량 ) 비트 A/D 컨버터의경우출력의데이터범위는 1/2

ATMega128 의 A/D 컨버터기능 ATmega128 의 A/D 컨버터특징 10 비트분해능 0.5 LBS Itegral No-liearity( 적분비선형성 ) ±2 LBS 정확도 13~260usec 변환시간 (50KHz~200KHz), 15kSPS 의최대분해능, 8 채널의멀티플렉스된단일입력 (A/D 컨버터는한개이며채널을바꿔가며아날로그신호를입력받음 ) 7 채널의차동입력, 10 배또는 200 배의증폭률을가진 2 채널의차동입력, ADC 결과값의좌정렬. 0~Vcc ADC 입력전압범위, 선택가능한 2.56V 의 ADC 레퍼런스전압. 안정된동작을위한 MCU 의디지털전원과별도의아날로그회로전원단자 A VCC 를가지며, A/D 변환에필요한기준전압 AREF 단자지원 Free ruig 또는 Sigle Coversio Mode, ADC 변환완료인터럽트, Sl eep Mode Noise Caceler

ATMega128 의 A/D 컨버터기능 ATMega128 A/D 컨버터레지스터 ADMUX (ADC Multiplexer Selectio Register) A/D 컨버터멀티플렉서선택레지스터 ADCSRA(ADC Cotrol ad Status Register A) A/D 컨버터제어및상태레지스터 A ADCH, ADCL A/D 컨버터데이터레지스터

ATMega128 의 A/D 컨버터기능 ADMUX (ADC Multiplexer Selectio Register) A/D 컨버터멀티플렉서선택레지스터 ADC모듈의아날로그입력채널선택 ADC모듈의기준전압선택 변환결과레지스터의데이터저장형식지정 7 6 5 4 3 2 1 0 REFS1 REFS0 ADLAR MUX4 MUX3 MUX2 MUX1 MUX0

ATMega128 의 A/D 컨버터기능 ADMUX (ADC Multiplexer Selectio Register) 비트 7,6 : REFS1,0 (Referece Selectio Bit) ADC 모듈에서사용하는기준전압을선택하는비트 ADC 에대한 Voltage Referece 선택표 REFS1 REFS0 Voltage Referece 0 0 AREF, Iteral Vref tured off 0 1 AVCC with exteral capacitor at AREF pi 1 0 예약 1 1 Iteral 2.56V Voltage Referece with exteral capacitor at AREF pi

ATMega128 의 A/D 컨버터기능 ADMUX (ADC Multiplexer Selectio Register) 비트 5 : ADLAR (ADC Left Adjust Result) 이비트를 1 로설정하면변환결과가 ADC 데이터레지스터에저장될때 ADC Data Register 의좌측으로끝을맞추어저장 비트 4~0 : MUX4~0 (Aalog Chael ad Gai Selectio Bit) ADC 모듈의아날로그입력채널을선택하는비트 MUX 비트에의한아날로그입력채널선택표 MUX4~0 Sigle Eded Iput 00000 ADC0 00001 ADC1 00010 ADC2 00011 ADC3 00100 ADC4 00101 ADC5 00110 ADC6 00111 ADC7 Positive Differetial Iput Negative Differetial Iput N/A Gai

ATMega128 의 A/D 컨버터기능 MUX 비트에의한아날로그입력채널선택표 MUX4~0 Sigle Eded Iput Positive Differetial Iput Negative Differetial Iput 01000 ADC0 ADC0 10x 01001 ADC1 ADC0 10x 01010 ADC0 ADC0 200x 01011 ADC1 ADC0 200x 01100 ADC2 ADC2 10x 01101 ADC3 ADC2 10x 01110 ADC2 ADC2 200x 01111 ADC3 ADC2 200x 10000 ADC0 ADC1 1x 10001 ADC1 ADC1 1x 10010 N/A ADC2 ADC1 1x 10011 ADC3 ADC1 1x 10100 ADC4 ADC1 1x 10101 ADC5 ADC1 1x 10110 ADC6 ADC1 1x 10111 ADC7 ADC1 1x 11000 ADC0 ADC2 1x 11001 ADC1 ADC2 1x 11010 ADC2 ADC2 1x 11011 ADC3 ADC2 1x 11100 ADC4 ADC2 1x 11101 ADC5 ADC2 1x 11110 1.22V(VBG) 11111 0V(GND) N/A Gai

ATMega128 의 A/D 컨버터기능 ADCSRA(ADC Cotrol ad Status Register A) A/D 컨버터제어및상태레지스터 A ADC 모듈의동작설정 ADC 모듈의동작상태표시 7 6 5 4 3 2 1 0 ADEN ADSC ADFR ADIF ADIE ADPS2 ADPS1 ADPS0 비트 7 : ADEN (ADC Eable) A/D 컨버터작동유무지정 1로설정하면 ADC 모듈 eable 0으로설정하면 ADC 모듈 disable.

ATMega128 의 A/D 컨버터기능 ADCSRA(ADC Cotrol ad Status Register A) 비트 6 : ADSC(ADC Start Coversio) A/D 컨버터변환시작 이비트에 1 을설정하면 ADC 변환이시작 ADEN이 1로설정되고난후첫번째변환에 25개의 ADC 클록주기가필요다음변환부터는 13 클록이요구 AD 변환이종료되고난후자동적으로 0으로변환 비트 5 : ADFR(ADC Free Ruig Select) 프리런닝모드설정 1 : Free ruig 모드로설정 자동으로계속해서 AD 변환실행 0 : 단일변환모드 (Sigle coversio mode) 로설정 사용자가시작하면한번만 AD 변환을실행

ATMega128 의 A/D 컨버터기능 ADCSRA(ADC Cotrol ad Status Register A) 비트 4 : ADIF(ADC Iterrupt Flag) A/D 컨버터인터럽트플래그 A/D 변환의완료를알리는플래그 AD 변환이완료되어 ADC Data Register 값이업데이트되고나면이비트가 1 로세트되면서 AD 변환완료인터럽트를요청 이때 ADIE=1 로설정되고, SREG 레지스터의 I 비트가 1 로설정되어있으면이인터럽트가발생되어처리된다. 비트 3 : ADIE(ADC Iterrupt Eable) A/D 변환완료인터럽트허용 AD 변환완료인터럽트를개별적으로설정 SREG 레지스터의 I 비트가 1 로설정되어있어야한다.

ATMega128 의 A/D 컨버터기능 ADCSRA(ADC Cotrol ad Status Register A) 비트 2~0 : ADPS2~0(ADC Preslcaler Select Bit) A/D 컨버터프리스케일러선택 ADC 모듈에인가되는클록의분주비를선택한다. ADPS 에의한 ADC Prescaler 설정표 ADPS2 ADPS1 ADPS0 분주비 0 0 0 2 0 0 1 2 0 1 0 4 0 1 1 8 1 0 0 16 1 0 1 32 1 1 0 64 1 1 1 128

ATMega128 의 A/D 컨버터기능 ADCH, ADCL A/D 컨버터데이터레지스터 A/D 컨버터의결과를저장하는레지스터 단극성입력사용시 (Sigle Eded Iput) ADMUX 레지스터의 MUX(4:0) 가 00000 ~ 00111 혹은 11110 ~ 11111 변환결과가 10 비트양의정수로표시된다 (0~1023) 차동입력을사용시 (Differecial Iput) ADMUX 레지스터의 MUX(4:0) 가 01000 ~ 11101 변환결과가 10 비트 2 의보수로표현 (-512~+511) 한다. 반드시 ADCL( 하위데이터 ) 를먼저읽어서저장한다음에 ADCH( 상위데이터 ) 를저장한다.

ATMega128 의 A/D 컨버터기능 ADCH, ADCL ADMUX 레지스터의 ADLAR = 0 인경우 : 우정렬 ADCH 15 14 13 12 11 10 9 8 - - - - - - ADC9 ADC8 ADCL 7 6 5 4 3 2 1 0 ADC7 ADC6 ADC5 ADC4 ADC3 ADC2 ADC1 ADC0

ATMega128 의 A/D 컨버터기능 ADCH, ADCL ADMUX 레지스터의 ADLAR = 1 인경우 : 좌정렬 ADCH 15 14 13 12 11 10 9 8 ADC9 ADC8 ADC7 ADC6 ADC5 ADC4 ADC3 ADC2 ADCL 7 6 5 4 3 2 1 0 ADC1 ADC0 - - - - - -

ATMega128 의 A/D 컨버터기능 ATMega128 A/D 컨버터의동작설정 ADMUX 로 A/D 신호를입력받을채널선택 ADCSR 로컨버전프리스케일러설정 인터럽트사용시, 전역인터럽트플래그를 SET 하여인터럽트활성화하고, A/D 변환완료인터럽트처리루틴을구성 ADCSR 의 6 번비트를세트하여 A/D 변환을시작 변환완료플래그를주기적으로점검하거나아날로그디지털컨버전완료인터럽트를이용하여 A/D 컨버전이후의데이터처리루틴을구성 반드시 ADCL( 하위데이터 ) 를먼저읽어서저장한다음에 ADCH( 상위데이터 ) 를저장

ATMega128 의 A/D 컨버터기능 ATMega128 의 A/D 컨버터설정시클럭의선택 10 비트분해능으로정상적인동작을위해서는 50kHz~200kH z 범위의클럭사용 ADCSRA 레지스터의 ADPS2~0 비트에의하여 2,4,8,16,32,6 4,128 중의 1 가지로선택 프리스케일러는 ADCSRA 레지스터에서 ADEN=1 로설정한경우에만동작

실습 13 : A/D 컨버터로광센서읽기 실습개요 ATmega128 의 A/D 컨버터기능을이용하여광센서 ( 포토다이오드 ) 로부터밝기정보를읽어내어 7-Segmet FND 에출력 광다이오드 : 밝기에따라아날로그출력을냄 실습목표 ATmega128 A/D 컨버터의동작원리이해 A/D 컨버터제어방법습득 ( 레지스터설정 ) 광다이오드동작원리이해

실습 13 : A/D 컨버터로광센서읽기 광다이오드 (Photo-Diode) 광에너지를전기에너지로변환하는광센서의일종 밝기에따라아날로그출력을냄 광다이오드는 CD 재생기, 화재경보기, 비디오카세트레코더나텔레비전의리모콘수신부와같은전자제품소자에사용됨.

실습 13 : A/D 컨버터로광센서읽기 사용모듈 : MCU 모듈, Array-FND 모듈, 센서모듈 MCU 모듈포트 G MCU 모듈포트 E MCU 모듈 MCU 모듈포트 F ArrayFND 모듈 온도 / 습도센서 ArrayFND 모듈 Sigal 조도센서 (CDS) 광다이오드 센서모듈 UR_OUT Sigal 센서모듈

실습 13 : A/D 컨버터로광센서읽기 사용모듈 센서모듈의광센서회로 PHOTO_OUT 신호가모듈의 UR_OUT 에매핑되며, 포토다이오드에빛이들어오면광량에따라아날로그신호가발생.

실습 13 : A/D 컨버터로광센서읽기 모듈결선방법 MCU 모듈포트 E의 PE7~PE0를 Array FND 모듈의 A~H까지연결 MCU 모듈포트 G의 PG3~PG0는 Array FND 모듈의 C3~C0 포트에연결 MCU 모듈포트 F의 PF0를센서모듈의 UR_OUT에연결.

실습 13 : A/D 컨버터로광센서읽기 구동프로그램 : 사전지식 A/D 컨버터기능을이용하여광다이오드에서출력되는광량에대한아날로그신호를받아디지털로변환한뒤, 이를 Array-FND 에표시 타이머 / 카운터를이용하여 1 초간격으로데이터를읽어들이도록한다. A/D 컨버터의설정방법 A/D 컨버터의입력채널결정 : 0번채널사용입력데이터의정렬방법과기준전압선택 : 데이터정렬은디폴트인우정렬로하고, 기준전압을내부 2.56V 프리스케일러와인터럽트결정 : 프리스케일러는 64분주를사용하고, 인터럽트는사용하지않음. 인터럽트를사용하지않으므로설정끝 A/D 컨버팅제어 설정을마친후, ADCSR의 6번비트를세트하여 A/D 변환을시작 A/D 변환도중에는변환완료플래그를주기적으로점검하면서 A/D 데이터레지스터로부터데이터를읽어들이면된다. 이때, 반드시 ADCL( 하위데이터 ) 를먼저읽어서저장한다음에 ADCH( 상위데이터 ) 를읽어내야한다.

실습 13 : A/D 컨버터로광센서읽기 구동프로그램 : 소스분석 ADC.c 1) #iclude<avr/io.h> #iclude<util/delay.h> #iclude<avr/iterrupt.h> eum{c0,c1,c2,c3}; usiged char FND_DATA_TBL[]={0x3F,0X06,0X5B,0X4F,0X66,0X6D,0X7C,0X07,0X7F, 0X67,0X77,0X7C,0X39,0X5E,0X79,0X71,0X08,0X80}; usiged char lowvalue=0; usiged char highvalue=0; usiged it adcvalue=0; usiged char timer0ct=0; void prit_fnd(char selcx, usiged char data); SIGNAL(SIG_OVERFLOW0); //Timer0 Overflow0 ISP

실습 13 : A/D 컨버터로광센서읽기 1) it mai(){ DDRE = 0xFF; //data port PORTE = 0x00; // 0~7비트까지의모든비트를클리어한다. DDRG = 0x0F; /* cotrol port 0-3 PIN 0~4 비트까지의 register 중에서 0~3 비트까지의 register 를사용하여출력한다. */ PORTG = 0x0F; /* 0~3 비트까지의비트를 1 로세트한다. */ TCCR0 = 0x07; /* Timer/Cout0의동작을설정 WGM0(1:0) = 00 일반동작모드 COM0(1:0) = 00 OC0사용하지않음 CS0(2:0) = 111 Prescaler 1024분주 */ TCNT0 = 0xff - 80; /* (1 / (7.3728 Mhz / 1024 prescaler )) * 80 => 0.011s 0.011s를얻기위한카운트값 */ TIMSK = 1 << TOIE0; // 오버플로우인터럽트 TIFR = 1 << TOV0; // TOV0 Timer/Couter0 overflow flag 클리어

실습 13 : A/D 컨버터로광센서읽기 2) ADMUX = 0xC0; /* ADMUX 레지스터중에서 6,7 번째레지스터를세트. REFS(1:0) = 11 iteral 2.56V 전원사용 ADLAR = 0 디폴트우정렬 MUX(4:0) = 00000 ADC0 핀사용단극성입력사용 */ ADCSR = 0xA6; /* ADSCR 레지스터중에서 1,2,5,7 번째의비트를세트. ADFR = 1 프리러닝모드 ADPS(2:0) = 110 프리스케일러 64 분주 ADEN = 1 ADC 를 Eable*/ ADCSR = 0x40; sei(); while(1){ 3) prit_fnd(c0, adcvalue%10); } } _delay_ms(3); /* ADC start coversio ADSC = 1 로세트 prit_fnd(c1, (adcvalue/10)%10); _delay_ms(3); prit_fnd(c2, adcvalue/100); _delay_ms(3);

실습 13 : A/D 컨버터로광센서읽기 4) SIGNAL(SIG_OVERFLOW0){ cli(); TCNT0 = 0xff - 80; timer0ct++; if(timer0ct == 90){ // 0.011s * 90 = 1s (1초를얻기위한카운트횟수 ) timer0ct = 0; while( (ADCSR&0x10) == 0x00); //ADC 변환이끝날때까지대기 lowvalue = ADCL; highvalue = ADCH ; adcvalue = (highvalue << 8) lowvalue ; } sei(); } void prit_fnd(char selcx, usiged char data){ switch(selcx){ case C3: //4번째 FND ( 좌측기준 ) PORTG &= 0xF0; // 하나씩만입력하기위해서그전의내용을초기화시킴 PORTG = 0x0E; // 포트 G의 G0을사용하여 C3로출력 Break;

실습 13 : A/D 컨버터로광센서읽기 4) case C2: //3번째 FND PORTG &= 0xF0; // 하나씩만입력하기위해서그전의내용을초기화시킴 PORTG = 0x0D; // 포트 G의 G1을사용하여 C2로출력 break; case C1: //2번째 FND PORTG &= 0xF0; // 하나씩만입력하기위해서그전의내용을초기화시킴 PORTG = 0x0B; // 포트 G의 G2를사용하여 C1으로출력 break; case C0: //1번째 FND PORTG &= 0xF0; // 하나씩만입력하기위해서그전의내용을초기화시킴 PORTG = 0x07; // 포트 G의 G3를사용하여 C0으로출력 break; default: PORTG &= 0xF0; PORTG = 0x0F; // 포트 G의 G4를사용하지않는다. break; } PORTE = FND_DATA_TBL[data]; }

실습 13 : A/D 컨버터로광센서읽기 실행결과