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

Similar documents
<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

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

슬라이드 1

Microsoft PowerPoint - 08-MP-8-ADC

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

2주차: 입출력 제어 복습

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

K&R2 Reference Manual 번역본

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

ATmega128

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

<BDC7C7E83820BFB9BAF1BAB8B0EDBCAD2E687770>

<4D F736F F D20BDBAC5D7C7CE20B6F3C0CEC6AEB7B9C0CCBCADB0ADC1C2202D203420C7C1B7CEB1D7B7A1B9D62E646F63>

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

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

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

untitled

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

<4D F736F F D20C0DBC7B0C6ED5FBDBAC5D7C7CE20B6F3C0CEC6AEB7B9C0CCBCAD20B0B3B9DF2E646F63>

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

lecture4(6.범용IO).hwp

Microsoft PowerPoint - Ch13

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

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

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

Microsoft PowerPoint - es-arduino-lecture-03

실험 5

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

C프로-3장c03逞풚

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

5.스택(강의자료).key

PowerPoint 프레젠테이션

키트전자 KE-RC-B 코드비젼

untitled

슬라이드 1

슬라이드 1

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

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

<30302E20BEC6C6AEB8E120BDBAC6A9B5F0BFC020BFACBDC0B9AEC1A620C7D8B4E42E687770>

KEY 디바이스 드라이버

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202831C1D6C2F72C2032C1D6C2F729>

C & System

Microsoft PowerPoint - lab14.pptx

PowerPoint 프레젠테이션

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

PowerPoint 프레젠테이션

슬라이드 1

untitled

OCW_C언어 기초

Microsoft PowerPoint - 제11장 포인터(강의)

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

PowerPoint 프레젠테이션

<4D F736F F F696E74202D2037C0E55FC0CEC5CDB7B4C6AEC0C720B5BFC0DB2E707074>

OCW_C언어 기초

PowerPoint 프레젠테이션

목차 1. ATMega128의외부메모리인터페이스 2. TEXT LCD 3. TEXT LCD에글자쓰기 4. SRAM 5. 외부메모리인터페이스에 SRAM붙이기

2. GCC Assembler와 AVR Assembler의차이 A. GCC Assembler 를사용하는경우 i. Assembly Language Program은.S Extension 을갖는다. ii. C Language Program은.c Extension 을갖는다.

Chapter #01 Subject

PowerPoint 프레젠테이션

Java ...

PowerPoint 프레젠테이션

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

Lab 3. 실습문제 (Single linked list)_해답.hwp

중간고사

WATAVR128_manual.hwp

1 SW

SW

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

Microsoft PowerPoint - 부호기와 복호기.PPT

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

Microsoft PowerPoint - 제11장 포인터

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

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

Microsoft PowerPoint - 08-MP-4-interrupt

PowerPoint Presentation


<BDC7C7E83120B0E1B0FABAB8B0EDBCAD202832C1D6C2F7292E687770>

T100MD+

텀블러514

ATmega128 교재 - 8장 EEPROM.hwp

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

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

b027_2005_3462.hwp

C 프로그래밊 개요

untitled

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

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

03장.스택.key

(b) 미분기 (c) 적분기 그림 6.1. 연산증폭기연산응용회로

1장. 유닉스 시스템 프로그래밍 개요

C++-¿Ïº®Çؼ³10Àå

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

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

쉽게 풀어쓴 C 프로그래밍

그룹웨어와 XXXXX 제목 예제

3. 1 포인터란 3. 2 포인터변수의선언과사용 3. 3 다차원포인터변수의선언과사용 3. 4 주소의가감산 3. 5 함수포인터

Microsoft PowerPoint - AVR 시리얼 통신.ppt [호환 모드]

API 매뉴얼

Transcription:

` 마이크로프로세서설계및실습 12-13 주차강의자료

학습목표 A/D 변환기의제어방법을이해한다 능숙하게 A/D 변환기를제어할수있도록반복실습한다 2/28

아날로그 - 디지털변환회로 아날로그 - 디지털변환회로 (A/D 변환회로 ) 는, 아날로그전기신호를디지털전기신호로변환하는전자회로이다 A/D 컨버터 (ADC: Analog-to-digital converter) 라고도불린다 아날로그신호 A/D 변환 디지털신호 <A/D 변환의개념 > 3/28

<A/D 변환채널선택및단일, 차동신호선택 > 4/28 ATmega128 A/D 변환기의개요 (1/2) 연속근사방식의 10 비트분해능을갖는다 아날로그전압을 10 비트크기의 2 진수로변환한다 8 개의아날로그입력채널이있다 ADC0(PF0)~ADC7(PF7) ADMUX 레지스터를설정하여아날로그채널을선택할수있다

ATmega128 A/D 변환기의개요 (2/2) ADC 기준전압 (V REF ) A/D 변환기는 GND(0V) 부터 V REF 까지를 10 비트의 ADC 데이터레지스터에 0x00~0x03ff 까지변환시킨다 V REF 는아래세가지중하나를선택할수있다 AVCC 내부기준전압 (2.56V) 외부와연결된 AREF 핀의전압 단일신호또는차동신호의 A/D 변환이가능 단일신호 A/D 변환값 = 단일신호전압 1023 V REF (V+-V-) 증폭비 512 차동신호 A/D 변환값 = V REF <A/D 변환의잡음대책 > 정밀한 A/D 변환을하기위해서는잡음에대한대책이필요하다 5/28

6/28 ADC 관련레지스터 (1/5) ADMUX 레지스터 (ADC Multiplexer Selection Register) 초기값 REFS1,REFS0 : 기준전압을선택 ADLAR : 결과정렬방향결정 0: 오른쪽정렬 1: 왼쪽정렬 MUX4~MUX0: 아날로그채널및증폭비선택 초기값

ADC 관련레지스터 (2/5) < MUX4~MUX0 에따른아날로그채널및증폭비 > 초기값 7/28

8/28 ADC 관련레지스터 (3/5) ADCSRA 레지스터 (ADC Control and Status Register A)

9/28 ADC 관련레지스터 (4/5) A 일반적으로 ADC 클록이 50~200 khz 가되도록설정

10/28 ADC 관련레지스터 (5/5) ADCH 와 ADCL 레지스터 (ADC Data Register) 8 비트 ADCH 와 ADCL 레지스터를연결한 16 비트중 10 비트위치에 A/D 변환결과가저장된다 ADMUX 레지스터의 ADLAR = 0 일때, ADMUX 레지스터의 ADLAR = 1 일때,

11/28 ADC 인터럽트사용순서 1. VREF 초기화 ADMUX 레지스터의 REF1~REF0 설정 2. A/D 변환활성화 ADCSRA 레지스터의 ADEN 을세트 3. 알맞은 ADC 클록선택 ADCSRA 레지스터의 ADPS2~ADPS0 설정 4. 단일모드또는연속모드 A/D 변환선택 ADCSRA 레지스터의 ADFR 설정 (0: 단일모드, 1: 연속모드 ) 5. A/D 변환을위한아날로그신호채널선택 ADMUX 레지스터의 MUX4~MUX0 설정 6. ADC 인터럽트활성화및전역인터럽트활성화 ADCSRA 레지스터의 ADIE 를세트 SREG 레지스터의 I 비트를세트. 즉, sei(); 7. ADC 인터럽트서비스루틴작성 8. A/D 변환시작 ADCSRA 레지스터의 ADSC 비트를세트

AD 변환회로예 12/28

납땜예 < 앞면 > < 뒷면 > 13/28

LCD 회로와 AD 변환회로결합 <ADC 연습을위해납땜후, LCD 회로와결합 > 14/28

AD 변환예제 1(1/4) ADC 인터럽트를이용하고, 키가눌리면단일모드로 AD 변환한결과를읽어와문자 LCD에출력 < 결과 > #include <avr/io.h> #include <avr/interrupt.h> #define SW PORTA0 #define PRESSED 0 #define RELEASED 1 ISR(ADC_vect) adc_result=adc; adc_rq=0; void ADC_init(void) ADCSRA = 1<<ADEN 1<<ADIE 0x06; ADCSRA &= ~(1<<ADFR); ADMUX=0x00; #define RS PORTE0 #define RW PORTE1 #define E PORTE2 volatile int adc_rq=0, adc_result=0; void gen_e_strobe(void) volatile int i; PORTE = 1<<E; for(i=0;i<10;i++); PORTE &= ~(1<<E); 15/28

16/28 AD 변환예제 1(2/4) void wait_busyflag(void) volatile int i; unsigned char bf; DDRD=0x00; PORTE=(PORTE & ~(1<<RS)) 1<<RW; do PORTE = 1<<E; for(i=0;i<10;i++); PORTE &= ~(1<<E); bf=pind & 1<<PORTD7; while (bf); void LCD_command(unsigned char data) wait_busyflag(); DDRD=0xff; PORTD=data; PORTE &= ~(1<<RS 1<<RW); gen_e_strobe(); void LCD_data_write(unsigned char data) wait_busyflag(); DDRD=0xff; PORTD=data; PORTE= (PORTE 1<<RS) & ~(1<<RW); gen_e_strobe();

17/28 AD 변환예제 1(3/4) void LCD_gotoxy(unsigned char X, unsigned char Y) int Tmp; switch(y) case 0: Tmp=0x80+X; break; case 1: Tmp=0xc0+X; break; default: Tmp=0x80+X; break; LCD_command(Tmp); void LCD_init(void) DDRE = 1<<RS 1<<RW 1<<E; PORTE &= ~(1<<RS 1<<E 1<<RW); LCD_command(0x38); LCD_command(0x01); LCD_command(0x06); LCD_command(0x0c);// 커서지우기 char *string[]=" ADC TEST ","ADC result= 0000"; int main(void) unsigned char r,c; unsigned char pre_sw=0x01, now_sw=0x01, ad_go=0; unsigned int num_1000,num_100,num_10,num_1;

18/28 AD 변환예제 1(4/4) ADC_init(); LCD_init(); DDRA &= ~(1<<SW); for(r=0;r<2;r++) for(c=0;c<17;c++) if(string[r][c]=='\0') LCD_gotoxy(0,1); break; else LCD_data_write(string[r][c]); sei(); while(1) if(ad_go) adc_rq=1; ADCSRA = 1<<ADSC; while(adc_rq); num_1000=0x30+(unsigned int)adc/1000; num_100=0x30+(unsigned int)(adc/100)%10; num_10=0x30+(unsigned int)(adc/10)%10; num_1=0x30+(unsigned int)adc%10; LCD_gotoxy(12,1); LCD_data_write(num_1000); LCD_data_write(num_100); LCD_data_write(num_10); LCD_data_write(num_1); ad_go=0; now_sw=pina; if(pre_sw==0x01) if(now_sw==0x00) ad_go=1; pre_sw=now_sw; return 0;

AD 변환예제 2(1/4) ADC 인터럽트를이용하고, 연속모드로 AD 변환한결과를읽어와문자 LCD에출력 ISR(ADC_vect) adc_result=adc; < 결과 > #include <avr/io.h> #include <avr/interrupt.h> void ADC_init(void) ADCSRA = 1<<ADEN 1<<ADIE 0x06; ADCSRA = 1<<ADFR; ADMUX=0x00; #define RS PORTE0 #define RW PORTE1 #define E PORTE2 volatile int adc_result=0; void gen_e_strobe(void) volatile int i; PORTE = 1<<E; for(i=0;i<10;i++); PORTE &= ~(1<<E); 19/28

20/28 AD 변환예제 2(2/4) void wait_busyflag(void) volatile int i; unsigned char bf; DDRD=0x00; PORTE=(PORTE & ~(1<<RS)) 1<<RW; do PORTE = 1<<E; for(i=0;i<10;i++); PORTE &= ~(1<<E); bf=pind & 1<<PORTD7; while (bf); void LCD_command(unsigned char data) wait_busyflag(); DDRD=0xff; PORTD=data; PORTE &= ~(1<<RS 1<<RW); gen_e_strobe(); void LCD_data_write(unsigned char data) wait_busyflag(); DDRD=0xff; PORTD=data; PORTE= (PORTE 1<<RS) & ~(1<<RW); gen_e_strobe();

21/28 AD 변환예제 2(3/4) void LCD_gotoxy(unsigned char X, unsigned char Y) int Tmp; switch(y) case 0: Tmp=0x80+X; break; case 1: Tmp=0xc0+X; break; default: Tmp=0x80+X; break; LCD_command(Tmp); void LCD_init(void) DDRE = 1<<RS 1<<RW 1<<E; PORTE &= ~(1<<RS 1<<E 1<<RW); LCD_command(0x38); LCD_command(0x01); LCD_command(0x06); LCD_command(0x0c);// 커서지우기 char *string[]=" ADC TEST ","ADC result= 0000"; int main(void) unsigned char r,c; unsigned int num_1000,num_100,num_10,num_1;

22/28 AD 변환예제 2(4/4) ADC_init(); LCD_init(); DDRA &= ~(1<<SW); for(r=0;r<2;r++) for(c=0;c<17;c++) if(string[r][c]=='\0') LCD_gotoxy(0,1); break; else LCD_data_write(string[r][c]); sei(); ADCSRA = 1<<ADSC; while(1) num_1000=0x30+(unsigned int)adc/1000; num_100=0x30+(unsigned int)(adc/100)%10; num_10=0x30+(unsigned int)(adc/10)%10; num_1=0x30+(unsigned int)adc%10; LCD_gotoxy(12,1); LCD_data_write(num_1000); LCD_data_write(num_100); LCD_data_write(num_10); LCD_data_write(num_1); return 0;

23/28 연습문제 1 아래와같이문자 LCD 에전압을 ADC 연속모드로측정하고결과를출력하시오 < 결과 > < 멀티미터측정결과 >

24/28 연습문제 2 아래와같이문자 LCD 에전압을 ADC 단일모드로측정하고결과를출력하시오 < 결과 > < 멀티미터측정결과 >

CdS 셀 1957 년네덜란드의필립스사와미국의 RCA 사가개발한황화카드뮴 (CdS, cadmiumsulfide) 의광전도성을이용한수광소자이다 황화카드뮴은강한빛이작용하면전기저항이줄고빛이약해지면전기저항이커지는성질을이용한수광소자이다 <CdS 셀의외형 > 25/28

CdS 셀추가회로 26/28

연습문제 3 아래와같이 CdS 셀에인가된전압을, ADC 인터럽트를이용하고연속모드로 AD 변환한결과를읽어와문자 LCD 에출력하시오 빛의세기에따른 AD 변환값의변화를관찰하시오 < 결과 > 27/28

질문?