lecture4(6.범용IO).hwp
|
|
- 진기 은
- 8 years ago
- Views:
Transcription
1 제 2 부 C-언어를 사용한 마이크로컨트롤러 활용기초
2 66 C-언어는 수학계산을 위해 개발된 FORTRAN 같은 고급언어들과는 달 리 Unix 운영체제를 개발하면서 같이 개발된 고급언어이다. 운영체제의 특성상 C-언어는 다른 고급언어에 비해 컴퓨터의 하드웨어를 직접 제어할 수 있는 능력이 탁월하여 마이크로프로세서의 프로그램에 있어서 어셈블 리와 더불어 가장 많이 쓰이는 언어이다. 일반적으로 어셈블리 프로그램이 C-언어 프로그램보다 실행파일의 크기 뿐 아니라 실행속도 면에서도 우월하다고 알려져 있으나 이는 두 종류의 프로그램이 최적화 되었을 때 비교일 뿐이므로 항상 옳다고 할 수는 없다. 일반적으로 어셈블리가 C-언어 보다 사용하기 어렵기 때문에 보통 사용자 가 최적의 어셈블리 프로그램을 작성하기 어렵다. 아울러 요즘의 C-컴파 일러는 성능이 매우 우수하여 C-언어 프로그램이 웬만큼 잘 작성한 어셈 블리 프로그램보다 크기 뿐 아니라 속도 면에도 우월하다. 프로그램을 어셈블리로 작성하면 C-언어로 작성된 프로그램에 비해 프 로세서의 모든 기능을 사용할 수 있으므로 실행속도가 빠르고 프로그램 크기가 작게 작성할 수 있다. 그러나 고급언어에 비해 프로그램을 작성하 기 어려울 뿐 아니라 프로세서마다 문법이 다르기 때문에 프로세서가 바 뀌면 어셈블리를 다시 익혀야 한다. C-언어와 같은 고급언어의 문법은 사용하는 프로세서와는 무관하게 정의되어 있어서 프로세서의 특징만 파 악하면 어느 프로세서에도 사용할 수 있다. 이런 면에서 가장 효율적인 방법은 C-언어와 같은 고급언어를 사용하여 프로그램을 개발한 후 빠른 실행 속도가 필요하거나 코드의 크기를 줄이고 싶은 부분만을 어셈블리로 작성하는 방법이다. 이 방법을 효율적으로 사용하면 C언어의 간편함과 어 셈블러의 강력함을 잘 조화시킬 수 있기 때문에 전문가들이 즐겨 사용하 는 방법이다. 이러한 방법을 혼합언어 프로그래밍(mixed-language programming)이라 한다. 그러나 이 방법을 이용하려면 어셈블리 뿐 아 니라 C-컴파일러의 상세한 부분에 대해서도 해박한 지식이 있어야 함은 물론이다. 이런 고난이도의 프로그램방법은 이 교재의 범위를 벗어나므로 여기서는 다루지 않고 C-언어를 사용하는 프로그램 방법만 다룬다. 2부에서는 ATmega128 마이크로컨트롤러의 기초적인 활용법을 C-언어 를 사용하여 배워보도록 하자.
3 67 제 6 장 입출력 포트(I/O Ports) 6.1 LED 점등회로 및 스위치 연결회로 마이크로컨트롤러를 배우면 제일 처음 해보는 것이 디지털 입출력 포트 를 사용해서 스위치 입력을 받고, LED를 점등하는 것이다. 이는 마이크 로컨트롤러의 입출력장치를 이해하기 위한 여러 가지 실습을 간단하게 구 성할 수 있기 때문이다. LED 점등회로 LED 점등회로를 고려하여 보자. LED는 Light Emitted Diode의 약자 로 전류가 흐르면 점등되는 다이오드이다. 입출력 장치로 LED를 구동할 때 두 가지 회로를 구성할 수 있다. 첫 번째는 출력장치를 다음 그림과 같이 전류의 싱크(Sink)로 사용하는 것이다. 출력 i 점등 때의 전류방향 R 5V 출력 0(0V) 1(5V) LED 켜짐 꺼짐 마이크로컨트롤러에서 논리 0을 출력하면 출력 단의 전압은 0V이고 따라서 다이오드에 순방향 바이어스가 걸리고 전류가 흘러 LED가 켜 진다. 논리 1을 출력하면 출력 단의 전압은 5V가 되어 전류가 흐르지 않아 LED가 꺼진다. 두 번째 방법은 다음 그림과 같이 출력장치를 전류의 소스(source)로 사용하는 것이다. 출력 점등 때의 전류방향 R i 출력 0(0V) 1(5V) LED 꺼짐 켜짐
4 68 마이크로컨트롤러에서 논리 0을 출력하면 출력 단의 전압은 0V이어서 전류가 흐르지 않고 LED가 꺼진다. 논리 1을 출력하면 출력 단의 전압은 5V가 되어 순방향 바이어스가 걸려 LED가 켜진다. LED의 밝기는 전류에 비례한다. LED 다이오드의 전압강하(약 1.5V)를 고려하면 이므로 저항이 작을수록 밝아진다. 약 10mA이다. R=330Ω을 사용하면 흐르는 전류는 ATmega128의 각 I/O의 최대 싱크/소스 전류는 40mA이므로 어느 경 우를 사용하더라도 LED를 구동할 수 있다. TTL을 사용하여 LED를 구동할 때는 소스형으로 LED를 구동하지 않 는다. TTL의 소스 전류는 매우 작기 때문이다. 스위치 입력회로 입력장치의 입력 핀에 0V가 걸리면 마이크로컨트롤러는 논리 0을 읽고 입력 핀에 5V가 걸리면 논리 1을 읽는다. 해보자. 다음 스위치 입력회로를 고려 입력=1 입력=? 5V 5V? 5V 스위치가 닫히면 입력단에 5V가 걸려 논리 1이 입력된다. 스위치가 열리면 입력단의 전압이 0V가 아니라 떠 있는(float) 상태가 된다. 없다. 이 때 마이크로컨트롤러의 입력은 정의되지 않아서 값을 알 수 위 회로로는 정확한 스위치 상태를 파악할 수 없으므로 다음 그림과 같 이 풀업 저항(pull-up resistor)을 사용해서 스위치 회로를 구성한다.
5 69 입력=0 0V 5V 풀업 저항 전류 입력=1 5V 5V 풀업 저항 스위치가 닫히면 전류가 접지로 흐른다. 입력단은 접지와 연결되어 있으므로 0V가 되고 마이크로컨트롤러는 논리 0을 읽는다. 스위치가 열리면 전류가 흐르지 않는다. 따라서 풀업 저항 사이의 전 압강하가 발생하지 않아 입력단에는 5V가 걸린다. 는 논리 1을 읽는다. 마이크로컨트롤러 스위치 닫힘 열림 입력 논리0 논리1 어떤 경우에도 float상태는 발생하지 않는다. 6.2 입출력 포트 관련 레지스터 ATmega128은 6개의 양방향 8비트 포트(포트 A,B,C,D,E,F)와 1개의 양방향 5비트 포트인 포트 G를 가지고 있다. 내부에서 제공하는 모든 입 출력기능은 표 3.1의 I/O 레지스터를 통하여 제어된다. 입출력 포트 제어 와 관련된 I/O 레지스터는 다음과 같다. 특수기능 IO 레지스터(Special Function IO Register): SFIOR 비트 TSM ACME PUD PSR0 PSR321 SFIOR 읽기/쓰기 R/W R R R R/W R/W R/W R/W 초기 값 비트 2 - PUD: 풀업 불능(Pull-up disable) 이 비트가 1이면 I/O 포트의 풀업이 불능이 된다.
6 70 각 포트에 대해서 3개의 레지스터가 연관되어 있는 데 각 포트에 대해 같은 역할을 한다. 다음 레지스터의 표기에 있어서 x는 포트 A,B,C,D,E,F,G를 나타내고 n은 비트 0,1,2,...,7을 나타낸다. 단 포트 G에 대해서는 n에 비트 0,1,2,3,4만 지정된다. 포트 데이터 레지스터(Port Data Register): PORTx 비트 PORTx7 PORTx6 PORTx5 PORTx4 PORTx3 PORTx2 PORTx1 PORTx0 PORTx 읽기/쓰기 R/W R/W R/W R/W R/W R/W R/W R/W 초기 값 데이터 방향 레지스터(Data Direction Register): DDRx 비트 DDx7 DDx6 DDx5 DDx4 DDx3 DDx2 DDx1 DDx0 DDRx 읽기/쓰기 R/W R/W R/W R/W R/W R/W R/W R/W 초기 값 포트 입력 핀 레지스터(Port Input Pins Address): PINx 비트 PINx7 PINx6 PINx5 PINx4 PINx3 PINx2 PINx1 PINx0 읽기/쓰기 R R R R R R R R 초기 값 N/A N/A N/A N/A N/A N/A N/A N/A *N/A : Not Available PINx 표 6.1은 각 레지스터의 비트에 따른 입출력 포트의 상태를 보여준다. 포트의 핀을 출력으로 하려면 방향 레지스터 DDRx의 해당비트를 DDxn=1로 설정하면 된다. 이 때 PORTxn 비트를 0으로 리셋하면 포 트 핀에 0V가 PORTxn 비트를 1로 세트하면 5V가 출력된다. 방향 레지스터 DDRx의 비트 DDxn=0으로 하면 포트는 입력이 된다. 단 풀업이 되어 있을 때 입력이 가능하다. 6.1절과 같이 외부풀업을 이용하거나, 표6.1에 따라 비트를 설정하여(PORTXn=1, PUD=0) 내부 풀업을 사용할 수 있다. 핀에 0V가 걸렸을 때 PINxn을 읽으면 0이 읽히고, 핀에 5V가 걸렸을 때는 PINxn의 값으로 1이 읽힌다.
7 71 표 6.1 포트 출력 핀의 형태 PUD 내부 DDxn PORTxn 입출력 (in SFIOR) 풀업 비고 0 0 X 입력 No Hi-Z상태 : 외부풀업필요 입력 Yes 입력 입력 No Hi-Z상태 : 외부풀업필요 1 0 X 출력 No LOW 출력 - Sink 1 1 X 출력 No High 출력 - Source 전기적인 절연상태로 Tri-State라고도 한다. Z는 Impedance를 뜻한 다. ATmega128 내부풀업저항 Vcc 입출력핀 ATmega128의 입출력핀에는 내부풀 업저항이 있으며, PORTxn비트와 PUD비트를 설정하여 내부풀업저항의 사용유무를 결정한다. 레지스터의 비트 속성 레지스터를 표시할 때 각 비트에 대해 두 가지 속성을 표시한다. 각 속성의 의미는 다음과 같다. 읽기/쓰기(Read/Write) R/W : 읽기/쓰기가 가능한 비트 R : 읽기만 가능한 비트 W : 쓰기만 가능한 비트 초기 값 : 마이크로컨트롤러가 전원이 공급된 직후 또는 리셋 직후 각 레지스터 비트가 갖는 값을 나타낸다. N/A로 표시된 경우는 정의 되지 않은 경우로 0 또는 1 어떤 값을 가지는지 모른다. 레지스터 이름과 각 비트의 이름 ATmega128의 사용자 메뉴얼은 모든 레지스터에 이름을 부여하고 있으 며 레지스터의 각 비트에도 이름을 부여하고 있다. WinAVR C-컴파일러 는 헤더파일 "avr/io.h"을 소스파일에 포함시키면 레지스터와 비트 이 름을 프로그램에서 직접 사용할 수 있도록 하였다.
8 72 그림 LED 도트 매트릭스(dot matrix)
9 단순 LED 점등 실습 6.2절에서 설명한 바와 같이 ATmega128에서 제공하는 입출력 포트는 출력 또는 입력으로 사용할 수 있다. 여기서는 입출력 포트의 출력기능을 배우도록 하자. 그림 6.1은 LED가 8x8 행렬로 장착된 도트 매트릭스를 나타낸다. 그림 6.2와 같이 8x8 도트 매트릭스의 LED를 포트A에 연결하 자. 이 경우 1-행의 LED만 점등이 된다. 실습으로 1-행의 LED를 원하 는 패턴으로 점등하여 보자. 6.1절에서 설명한 바와 같이 점등하고자 하 는 LED의 핀에는 논리 0을, 소등하고자 하는 LED의 핀에는 논리 1을 출 력하면 된다. J3 PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 330 COL8 COL7 COL6 COL5 COL4 COL3 COL2 COL1 5V ROW1 8x8 dot matrix 그림 6.2 LED연결회로 : 점등 : 소등 비트위치 LED 포트 A 5 D 그림 6.3 출력 패턴 그림 6.3과 같은 패턴으로 LED를 점등하려면 포트A를 출력포트로 설정 하고 출력 패턴에 해당하는 데이터를 출력포트에 출력하면 된다. 그림 6.3에 따라 포트A에 출력할 데이터는 0x5D이다. I/O 레지스터 사용 : 포트A의 방향을 설정하려면 1바이트 방향 레지스터 인 DDRA에 방향 데이터를 쓰면 되고, 포트A에 데이터를 출력하려면 1바 이트 데이터 레지스터인 PORTA에 데이터를 쓰면 된다. WinAVR C-컴파 일러에서는 레지스터에 데이터를 쓰려면 헤더파일 avr/io.h 을 소스파 일에 포함시키고 DDRA와 PORTA가 마치 변수인 것처럼 사용하면 된 다.(5.3.2절 참조) 따라서 포트A를 출력포트로 설정하고 데이터 0x5D를
10 74 출력하려면 다음과 같이 작성하면 된다.(두 레지스터 모두 1바이트 변수 이므로 unsigned char형 변수처럼 사용한다.) #include <avr/io.h>... DDRA = 0xFF; // 포트A를 모두 출력포트로 설정 PORTA = 0x5D; // 패턴으로 LED를 점등 프로그램 언어에서 메모리에 데이터 쓰기/읽기 프로그램언어에서 = 의 의미는 수학에서 의미와는 다르다. x = y : 수학에서는 x와 y가 같다. 는 의미 x = y : 프로그램 언어에서는 y값을 x에 넣는다. 는 의미 x = y 를 다시 해석하면 y값을 읽어서 x에 쓰라는 의미. 모든 변수에는 메모리가 할당된다. 따라서 변수에 데이터를 쓰는 것은 해당 메모리에 데이터를 쓰는 것과 동일하고, 변수를 읽는 것은 해당 메모리의 데이터를 읽는 것과 동일하다. 데이터를 메모리에 쓸 때 = 의 왼쪽에 변수를 두면 그 변수의 메모리에 데이터를 쓴다. (예) x = 10 : 10을 변수x(실제는 변수x가 있는 메모리)에 쓴다. 데이터를 메모리로부터 읽을 때 = 의 왼쪽에 변수가 위치하는 경우를 제외하고 모든 경우는 변 수를 읽는다. ATmega128의 I/O레지스터는 모두 메모리번지를 가지고 있으므로 메모리(변수)를 읽는 것과 같은 방법으로 읽기/쓰기를 할 수 있다. (예) PORTA = 0xFF : 0xFF를 PORTA 레지스터에 쓴다. (예) if(pina == 1) : PINA레지스터를 읽어서 1과 같으면... (예) while(x) : 변수x를 읽어서 그 값이 참이면 루프를 돈다. (예) x = x + 2 : 변수x를 읽어서 그 값에 2를 더해 x변수에 쓴 다. 결과적으로 변수x를 2증가 시킨다. (예) x +=2 : 이는 x=x+2와 동일함.
11 75 따라서 점등을 위해 프로그램 6.1을 작성할 수 있다. #include <avr/io.h> int main() DDRA = 0xFF; // 포트A를 모두 출력포트로 설정 while(1) PORTA = 0x5D; // 무한 루프 // 출력패턴으로 LED를 점등 프로그램 6.1 마이크로프로세서의 실행프로그램은 PC와는 달리 전원이 꺼질 때까지 종료되면 안 된다. 따라서 마지막에 while문을 사용하여 무한루프를 구성한다. while문은 다음과 같은 문법을 가진다. while(expr1) expr2; while문은 expr1이 참값이면 expr2를 수행하고 아니면 while문에 서 빠져나가게 된다. 그러나 if문과는 달리 expr2의 수행 후 다시 while문으로 올라가 expr1을 평가하는 반복적 루프를 구성한다. 프로그램1에서는 expr1=1이므로 expr1은 항상 참값이다. 따라서 while문을 빠져나가지 못하고 무한루프를 구성하여 LED 패턴을 순 차적으로 점등하는 것을 무한히 반복한다.
12 76 실습: 다음 순서에 따라 실습을 수행한다. ATmega128 보드의 사용 준비: (1) 그림 4.4에 따라 ATmega128보드와 USBISP를 연결한다. (2) USBISP와 PC를 USB케이블로 연결한다. (3) USBISP의 드라이버가 PC에 설치되어 있지 않으면 4.3절에 따라 드라 이버를 설치한다. (4) ATmega128보드에 전원을 공급한다. 전원을 공급하는 방법은 2가지 가 있다. (가) ATmega128보드의 전원단자에 5V 외부전원을 직접 공급한다. (나) PC의 USB포트 전원을 사용한다. 이를 위해서 USBISP보드의 스위치 SW1을 VBUS로 세팅한다. 프로그램 개발 단계에서는 USBISP를 사용하므로 외부전원이 필요 없는 방법 (나)가 매우 편리하다. 교재에서는 방법 (나)를 사용한다 절에 따라 프로젝트 구성하고 프로그램 실행하기: (1) 사용자 작업 폴더를 생성하고 그 곳에 lab6라는 프로젝트를 새로 생 성한다. 프로젝트를 생성할 때 초기파일을 생성하지 않도록 한다. (2) 새로운 소스파일 program6-1.c를 만들고 프로그램 6.1의 내용을 입 력한다. (5.4.2절) (3) 소스파일 program6-1.c를 프로젝트 lab6에 추가한다.(5.4.3절) (4) 프로젝트 lab6을 빌드한다.(5.4.4절) (5) 프로그램을 타겟 보드에 다운로드한다.(5.4.5절) 다운로드완료와 동시 에 프로그램이 실행된다. 프로그램은 FLASH메모리에 저장되므로 전원을 꺼도 지워지지 않는다. 따라서 전원을 껐다 켜거나, 리셋 버튼을 누르면 프로그램이 처음부터 다시 수행된다. 다른 패턴 점등하기: 다음 두 가지 패턴으로 LED를 점등하여 보라. (패턴 1) LED (패턴 2) LED
13 패턴을 변경해 가면서 LED 점등 여기서는 그림 6.4와 같이 패턴을 연속적으로 변경하면서 LED를 점등 하여 보자. 각 점등 패턴에 대해 포트A에 출력해야 할 데이터를 써보면 위치 LED 포트A F E F D 1 LED 포트A PA0 점등 ==> 0xFE PA1 점등 ==> 0xFD PA2 점등 ==> 0xFB.... PA7 점등 ==> 0x7F LED 포트A 7 F 그림 6.4 연속 출력 패턴 이다. 계속적으로 순환하여 이 패턴들 을 점등하여야 하므로 프로그램 6.2와 같이 while문내에 위 데이터를 출력하 도록 하면 된다. #include <avr/io.h> int main() DDRA = 0xFF; // 포트A를 모두 출력포트로 설정 while(1) PORTA = 0xFE; PORTA = 0xFD; PORTA = 0xFB;... PORTA = 0x7F; // 무한 루프 // PA0을 점등 // PA1을 점등 // PA2를 점등 // PA7을 점등 프로그램 6.2
14 78 while 루프내에서 수행되어야 할 문장이 여러 문장인 경우는 중괄호 짝 내에 수행될 문장을 위치시킨다. while(expr1) expr2; expr3;... for 루프는 문법은 다음과 같다. for(expr1; expr2; expr3) expr4; 위 for 루프문은 다음 while 루프문과 동일하다. expr1; // 루프의 초기화 while(expr2) // 루프의 판단 expr4; // 루프의 몸체 expr3; // 루프의 처음으로 가기 전 수행문 C-언어에서는 while루프, for루프 외에 do-while루프를 제공한다. 이의 문법은 while루프문과 비교해서 다음과 같다. while(expr1) do expr2; expr2; while(expr1); while문는 expr1을 먼저 평가하여 루프를 판단하지만 do-while문은 우선 expr2를 수행한 다음 expr1로 루프를 판단한다. 시간지연함수의 구성 프로그램 6.2를 수행하면 LED 점등패턴이 변하지 않고 희미하게 모두 켜져 있는 것처럼 느껴진다. 이는 패턴 이동이 너무 빨라 패턴의 변화를 눈으로 거의 감지할 수 없기 때문이다. 따라서 점등패턴의 이동사이에 시 간지연을 주어야 한다. 정확한 시간지연이 필요할 경우는 마이크로프로세 서의 타이머를 사용하여 시간을 측정하여야 하나 현재 실습과 같이 대략 의 시간지연이 필요한 경우는 다음과 같은 반복루프를 사용한다.
15 79 for(i=0; i<1000; i++) asm("nop"::); asm("nop"::); 여기서 asm("nop"::)은 단순히 1클록을 쉬는 어셈블리 nop 명령을 C- 프로그램에서 수행하도록 하는 것이다. 위 반복루프를 수행하는 데 사용 키트에서 약 1msec가 걸리므로 이를 이용하면 사용자가 원하는 시간만큼 시간지연을 줄 수 있는 함수를 다음과 같이 작성할 수 있다. void msec_delay(int n) int i; for(; n >0; n--) // 1msec루프를 n회 반복 for(i=0; i<1000; i++) // 1msec 시간지연 루프 asm("nop"::); asm("nop"::); 시간지연 함수 1msec 시간지연루프를 n회 반복한다. msec_delay(5)와 같이 함수를 호출하면 msec_delay()함수내의 변 수 n에 5가 전달된다. 따라서 1msec 시간지연루프를 5회 반복하므로 5msec 시간지연 후 함수가 리턴 된다. 시간 지연은 실습환경에 따라 다를 수 있으므로 시간이 맞지 않는 경 우는 루프회수를 조정하여야 한다. 프로그램 6.2를 패턴이 1초마다 이동하도록 하려면 프로그램 6.3과 같 이 while루프의 패턴출력 문장 사이마다 msec_delay(1000)을 호출을 하면 된다.
16 80 #include <avr/io.h> void msec_delay(int n); int main() DDRA = 0xFF; // 포트A를 모두 출력포트로 설정 while(1) // 무한 루프 msec_delay(1000); PORTA = 0xFE; // PA0을 점등 msec_delay(1000); PORTA = 0xFD; // PA1을 점등 msec_delay(1000); PORTA = 0xFB; // PA2를 점등... msec_delay(1000); PORTA = 0x7F; // PA7을 점등 void msec_delay(int n) // 시간지연 함수 int i; for(; n >0; n--) // 1msec루프를 n회 반복 for(i=0; i<1000; i++) // 1msec 시간지연 루프 asm("nop"::); asm("nop"::); 프로그램 6.3 프로그램 6.3에서 main()앞에 시간지연함수를 다음과 같이 선언하였 음을 유념하라. void msec_delay(int n); 이는 msec_delay의 정의는 함수이며 인수로서 int형 하나를 받으며
17 81 리턴 값이 없다. 이며 이를 컴파일에게 알려주어 msec_delay()를 만 나면 이 정의에 따라 컴파일하라는 의미이다. 프로그램에서 사용하는 함수는 이를 호출하기 전에 미리 이의 속성을 컴파일러에게 알려주어야 한다. 배열을 사용한 점등패턴 테이블 구성 프로그램 6.3에서 LED에 표시되는 형태가 바뀌면 while문내의 LED점 등 부분을 일일이 변경하여야 할 뿐 아니라 패턴의 형태가 8가지보다 더 많게 되면 while문내에 패턴 점등부분을 추가하여야 한다. 패턴의 형태 가 100개정도 된다고 생각해보자. 이 경우 프로그램 6.3과 같이 작성하 는 것은 매우 번거로운 일이다. 프로그램 6.3과 같이 일정형태의 패턴을 반복적으로 사용하여야 하는 경우는 패턴을 배열을 사용한 테이블에 저장하면 편리하다. 출력하고자 하는 패턴은 테이블의 인덱스로 지정하면 된다. 프로그램 6.4는 배열을 사용하여 프로그램 6.3을 다시 작성한 것이다. #include <avr/io.h> unsigned char pattern[8] = 0xFE, 0xFD, 0xFB, 0xF7, 0xEF, 0xDF, 0xBF, 0x7F; int main() int i=0; // 패턴 인덱스 DDRA = 0xFF; // 포트A를 모두 출력포트로 설정 PORTA = pattern[i]; // 처음 패턴으로 LED를 켠다. while(1) // 무한 루프 msec_delay(1000); // 1초 시간지연 if(++i==8)i=0; //i를 증가하고 결과가 8이면 리셋 PORTA = pattern[i]; // i-번째 패턴으로 LED 켠다. 프로그램 6.4
18 82 그림 6.3의 점등패턴은 1바이트(8비트)로 표시되고 부호가 없으므로 점 등패턴을 저장할 배열 pattern[]을 unsigned char로 선언하였다. LED 점등패턴은 8개의 형태를 가지므로 배열 pattern을 8개의 요소 를 가지도록 하였다. 배열과 점등패턴은 그림 6.5와 같이 순서대로 대 응된다. 따라서 배열의 인덱스로서 점등 패턴을 지정할 수 있다. 배열 pattern[0] pattern[1] pattern[2] pattern[3] pattern[4] pattern[5] pattern[6] pattern[7] 0xFE 0xFD 0xFB 0xF7 0xEF 0xDF 0xBF 0x7F 위치 LED LED LED LED LED LED LED LED 그림 6.5 LED 점등패턴과 배열 PORTA = pattern[i]; 는 포트 A에 patter[i]값을 출력하라는 것 이므로 포트 A에 연결된 LED는 i-번째 패턴으로 점등된다. ++i는 속한 문장을 평가하기 전에 i를 1 증가시키라는 것이므로 if(++i==8) i=0; 는 다음과 동일하다. i++; if(i==8) i=0; 변수 i는 배열의 인덱스이고 while 루프 내에서 인덱스만 증가한다. 8개의 점등패턴을 순환시키므로 인덱스가 8이 되었을 때 다시 0으로 리셋 하여야 한다. 패턴의 형태가 변하면 패턴을 구성하는 테이블만 변경하면 된다. 또한 패턴의 개수가 변하여도 쉽게 프로그램을 변경할 수 있다. 패턴의 개
19 83 수가 8개에서 16개로 변한 경우를 보면 테이블을 크기를 변경하여 구 성한 다음 while루프 내에서 인덱스회전을 다음과 같이 하면 된다. unsigned char pattern[16] =...; // 16개의 패턴.... while(1) // 무한 루프 if(++i==16)i=0; // i를 증가하고 결과가 16이면 리셋 PORTA = pattern[i]; // i-번째 패턴으로 LED 켠다. 과제 1. 프로그램 prac6-4.c는 프로그램 6.4를 완성한 것이다. 키트에 다운로 드하여 프로그램을 수행한다. (5.4.3절을 참조하여 6.3절에서 작성한 프로젝트 lab6에서 소스파일 program6-1.c를 제거하고 prac6-4.c 를 첨부한다.) 시간지연시간을 1000msec부터 5msec까지 점점 감소 시켜가면서 패턴의 이동을 관찰하고 관찰된 현상을 설명하라. 2. 다음 패턴으로 LED를 점등하도록 프로그램을 작성하라. 단 패턴의 이 동은 500msec로 할 것
20 84 [프로그램 prac6-4.c] //====================================================== // 실습 6.4 배열을 사용하여 LED를 순차적으로 켠다. //====================================================== #include <avr/io.h> // I/O 레지스터 정의 void msec_delay(int msec); // 시간지연함수 선언 // // LED 점등패턴 테이블 // unsigned char pattern[8] = 0xFE, 0xFD, 0xFB, 0xF7, 0xEF, 0xDF, 0xBF, 0x7F; int main() int i=0; DDRA = 0xFF; // 포트 A를 출력으로 설정 PORTA = pattern[i]; // 처음 패턴으로 LED를 켠다. while(1) msec_delay(1000); // 약 1sec 지연 if(++i==8) i = 0; // 마지막 패턴에서 인덱스 리셋 PORTA = pattern[i]; // i-번째 패턴으로 점등 // // 시간지연함수 // void msec_delay(int n) // msec 단위 지연 int i; for(; n>0; n--) for(i=0; i<1000; i++) asm("nop"::); asm("nop"::);
21 라이브러리 함수를 사용한 시간지연함수 구성 시간지연은 마이크로컨트롤러 프로그램에서 빈번히 사용되는 기능 중에 하나이다. 6.4절에서 사용한 시간지연함수 msec_delay()는 헛루프를 돌려 시간지연을 얻었다. 그러나 이 때 얻는 시간지연은 컴파일러의 코드 최적화 또는 사용 클록속도에 따라 많은 차이를 보인다. 즉 사용 환경에 따라 지연시간이 변경되므로 좋은 방법은 아니다. 좀 더 신뢰도 높은 시간 지연을 얻기 위해 컴파일러의 라이브러리가 제 공하는 시간지연 함수를 사용하는 것이 바람직하다. WinAVR C-컴파일러 에는 avr-libc라는 라이브러리를 제공하고 여기에는 msec단위 시간지연 함수와 μsec단위 시간지연함수를 제공한다. void _delay_ms(double ms); void _delay_us(double us); // msec단위 시간지연 // usec단위 시간지연 avr-libc 라이브러리의 매뉴얼을 참조하면 위 함수를 사용하기 위해서는 헤더파일 "util/delay.h"를 소스파일에 포함시켜야 한다. 그러나 매뉴 얼에 따르면 이 함수는 16MHz 클록을 쓸 때 각각 최대 16msec와 48usec를 지연시킬 수 있다. 16msec이상의 시간지연과 48usec이상의 시간지연을 위해서는 이를 이용해 시간지연함수를 구성할 필요가 있다. 앞에서 작성하였던 시간지연함수 msec_delay()를 _delay_ms()함수 를 사용해서 재구성하고 이를 16msec이상의 시간지연에 사용하도록 하 자. #include <util/delay.h> void msec_delay(int n) for(; n >0; n--) _delay_ms(1); // 1msec 시간지연을 n회 반복 // 1msec 시간지연 새로운 시간지연 함수
22 86 실습 : [프로그램 prac6-4.c]의 시간지연함수를 새로운 시간지연함수로 대체하고 6.4절 과제 1과 과제2를 수행하여 본다. 라이브러리 Library가 책을 한 곳에 모아놓고 책을 대여하는 곳이라면 프로그램 언어에서 라이브러리는 함수를 작성하여 모아놓은 함수의 집합을 말 한다. 라이브러리에 있는 함수를 사용하려면(도서관에서 책을 대여하 는 것과 유사함) 프로그램에서 라이브러리에서 제공하는 함수를 사용 하고, 실행파일을 만드는 빌드과정에서 라이브러리를 링크(Build에서 Link과정)하여야 한다. C 컴파일러에서는 libc.a(확장자 a는 archives(기록보관소)를 나타 낸다.)라는 기본 라이브러리를 제공한다. 이는 별도의 링크 과정 없 이 사용할 수 있다. C-언어에서 많이 쓰는 printf()와 같은 함수 는 모두 라이브러리 libc.a에서 제공하는 함수이다. 이외의 라이브 러리를 사용하고자 할 때는 반드시 링크를 하여야 한다 절에 는 기본 라이브러리 이외의 라이브러리를 링크하는 방법을 보여준다. 라이브러리의 함수를 사용할 때는 반드시 매뉴얼의 사용법에 따라야 한다. WinAVR에서 제공하는 라이브러리를 모두 통틀어 avr-libc라 한다. WinAVR은 마이크로컨트롤러에 대한 컴파일러이기 때문에 avr-libc 는 표준 C에서 제공하는 라이브러리의 함수와 차이가 난다. 따라서 표준 C-언어에서 자주 사용하는 함수라 할지라도 반드시 avr-libc Manual을 통해 사용법을 확인하여야 한다.
23 스위치 입력 실습 스위치를 그림 6.6과 같이 연결하고 스위치의 조작에 따라 LED 패턴을 이동시키도록 하자. 프로그램 6.4에 시간지연 함수를 삽입하는 것 대신 다음과 같이 스위치의 누름을 감시하는 프 로그램을 삽입하면 스위치를 누를 때 마다 패턴 을 이동시킬 수 있다. J2 5V 10K sw0 PD0 PD1 PD2 그림 6.6 스위치회로 #include <avr/io.h> unsigned char pattern[8] = 0xFE, 0xFD, 0xFB, 0xF7, 0xEF, 0xDF, 0xBF, 0x7F; int main() int i=0; // 패턴 인덱스 DDRA = 0xFF; // 포트A를 모두 출력포트로 설정 DDRD = 0x00; // 포트D를 모두 입력포트로 설정 PORTA = pattern[i]; // 처음 패턴으로 LED를 켠다. while(1) // 무한 루프 while(!(~pind & 0x01)); // 스위치 누름을 기다림 if(++i==8)i=0; // 인덱스가 8이면 리셋 PORTA = pattern[i]; // i-번째 패턴으로 LED 켬 프로그램 6.5 스위치를 외부풀업을 하여 포트D에 연결하였으므로 포트D를 입력포트 로만 설정하면 된다. 포트D의 스위치에 연결된 0-번째 핀 외에 다른 핀은 아무런 연결이 없 으므로 입력으로 읽어 들인 값들은 의미가 없다. 따라서 스위치의 상 태에 따른 입력 값은 다음과 같다. 다음에서 x 는 어떤 값인지 모른
24 88 다는 뜻이다.(스위치가 닫힐 때 PIND의 비트0은 0이 읽히므로 비트별 NOT을 취하여(~PIND) 스위치가 닫힐 때 비트0이 1이 되도록 하였다.) 핀(비트) : ~PIND(스위치 열림) : x x x x x x x 0 ~PIND(스위치 닫힘) : x x x x x x x 1 위에서 sw0의 개폐를 판단할 때 의미 없는 핀의 입력을 판단에서 배제 하고 sw0의 입력을 받는 핀0의 데이터만 사용하는 것이 필요하다. 이 를 위해 의미 없는 부분을 항상 0으로 리셋하고 핀0의 데이터는 그대 로 보존하도록 하자. 이는 다음과 같이 비트별 AND를 사용하여 이룰 수 있다. sw0 스위치 열림 sw0 스위치 닫힘 핀 ~PIND x x x x x x x 0 x x x x x x x 1 0x 비트별 AND 모두 리셋 보존 모두 리셋 보존 핀 0은 ~PIND에서 비트0에 해당한다. 비트별 AND할 데이터는 판단에 사용할 비트0을 1로 하고, 판단에서 배제할 비트들인 비트 1~비트7은 0으로 설정하여 0x01이 된다. 따라서 포트D의 입력은 PIND를 읽으면 되므로 (~PIND & 0x01)의 상 태(True, False)를 검사하면 스위치 sw0의 상태를 알 수 있다. True이면 스위치가 닫힌 상태이고 False이면 스위치가 열린 상태이 다. 프로그램 6.5를 수행하면 스위치를 누르고 있는 동안 패턴이 회전하나 너무 빨라 감지할 수가 없고, 스위치를 떼면 회전이 멈추게 된다. 이를 보완하기 위하여 스위치를 뗐다 누르면 패턴이 회전하도록 하자. 프로그 램 6.5에서 스위치가 떨어짐을 점검하는 부분을 첨가하여 while()루프 안을 프로그램 6.6과 같이 변경하자.
25 89 while(1) while(!(~pind & 0x01)); // 스위치 누름을 기다림 if(++i==8) i=0; // i를 증가하고 8이면 리셋한다. PORTA = pattern[i]; // 현재 패턴을 출력한다. while(~pind & 0x01); // 스위치 떨어짐을 기다림 프로그램 6.6 데이터 마스크(Mask) 위와 유사하게 특정비트를 0으로 리셋하고 나머지는 원상태를 보존하 려면 특정비트가 0이고 나머지는 1이 되는 수와 비트별 AND를 하면 된다. 변수 var의 비트1과 비트6을 리셋하고 나머지를 보존하려면 : x x x x x x x x 비트위치 var xBD = ~0x42 = ~0b x 0 x x x x 0 x 비트별 AND var & ~0x42 리셋 리셋 x: 이 비트들은 연산 후에도 그대로 보존됨 위와는 달리 특정비트를 1로 세트하고 나머지는 원상태를 보존하려면 특정비트가 1이고 나머지는 0이 되는 수와 비트별 OR를 하면 된다. 변수 var의 비트1과 비트6을 1로 세트하고 나머지를 보존하려면 : x x x x x x x x 비트위치 var x x 1 x x x x 1 x 비트별 OR var 0x42 위와 같이 필요한 비트만 선별적으로 뽑아내는 것을 마스크(Mask) 한다 라고 한다. 마치 가면의 구멍을 통해 제한된 영역만을 외부에 알려주는 것과 같다.
26 90 스위치 입력 채터링 방지 프로그램 6.6을 수행하면 스위치를 누르고 뗄 때마다 패턴이 회전하는 것을 쉽게 알 수 있다. 그러나 한 번의 스위치 동작에 패턴이 두 번 이상 회전이 자주 발생하는 것을 알 수 있다. 이런 현상은 필히 방지하여야 한 다. 스위치 누름 스위치 뗌 그림 6.7 스위치 입력신호의 채터링 에 2번 이상의 패턴회전이 발생하게 된다. 스위치를 조작하게 되면 그림 6.7과 같 이 한 번의 기계적인 개폐동작에 대해 전 기적으로는 여러 번 개폐동작이 발생하기 도 한다. 이러한 것을 채터링이라 한다. 마이크로프로세서가 아주 빠른 속도로 포 트입력을 읽으면 스위치 조작을 한번 하 지만 마이크로프로세서는 여러 번의 개폐 동작이 일어난 것으로 판단하게 된다. 이 런 현상이 발생하면 한 번의 스위치 조작 채터링을 방지하는 것을 스위치 디바운싱(Debouncing)이라하고 하드웨 어적인 방법과 소프트웨어적인 방법이 있다. 여기서는 소프트웨어적으로 처리하는 방법을 고려한다. 그림 6.7에서보면 스위치 상태변화가 일어난 후 신호가 얼마간 채터링 을 한 후 안정화된다. 이를 이용하여 신호의 변화가 감지되면 입력이 안 정화될 때까지 기다린 후 다음 신호입력을 검사하도록 한다. 안정화 될 때까지는 아무런 입력을 받지 않으므로 채터링 신호를 읽지 않을 수 있다. 이와 같은 채터링 방지 기능을 프로그램 6.6에 삽입하여 프로그램 6.7을 작성한다. 안정화 될 때까지의 기다려야 하는 시간은 일정하지 않으므로 테스트 를 통하여 경험적으로 설정하여야 한다. 디바운싱을 위한 지연시간의 설정을 길게 하면 확실히 채터링을 방지 할 수 있다. 그러나 스위치 입력감도가 떨어진다. 지연시간을 짧게 하 면 스위치 입력이 민감해지는 대신 디바운싱이 완전하지 않을 수 있다.
27 91 while(1) while(!(~pind & 0x01)); // 스위치 누름을 기다림 msec_delay(20); // 디바운싱을 위한 시간 지연 if(++i==8) i=0; PORTA = pattern[i]; while(~pind & 0x01); msec_delay(20); // 패턴을 회전한다. // 스위치 떨어짐을 기다림 // 디바운싱을 위한 시간 지연 프로그램 6.7 프로그램 prac6-6.c는 프로그램 6.7을 완성한 것이다. 실습 : 프로그램 6.6, 6.7, prac6-6.c를 수행하여 차이점을 확인하라. 과제 : 1. 프로그램 prac6-6.c에서 디바운싱을 위한 시간지연을 짧게 변경하면 서 채터링 방지효과를 관찰하라.(매크로 DEBOUNCING_DELAY의 값을 변경하면 시간지연이 변한다.) 2. 스위치회로에 풀업 저항을 제거하면 신호가 floating상태가 된다. 프로 그램을 수행하고 현상을 관찰하라. 표6.1을 참조하여 내부적으로 풀 업이 되도록 프로그램을 작성하여 수행하고 정상적으로 작동함을 관찰 하라. PD0 sw0 풀업저항을 제거하면 스위치 Off일 때 floating상태가 됨
28 92 C-언어에서 매크로(Macro)의 사용 매크로는 매우 다양한 용도로 사용될 수 있으나 여기서는 문장을 대체하 는 용도에 대해 [프로그램 prac6-5.c]를 예로 들어 설명한다. 매크로는 선행처리기 지시어 #define을 사용하여 정의한다. #define DEBOUNCING_DELAY 20 //디바운싱 지연시간(msec) 여기서 DEBOUNCING_DELAY를 매크로라고 한다. 다음의 왼 쪽 문장은 오른 쪽 문장과 동일하다. 매크로를 정의한 후 msec_delay(debouncing_delay); <==> msec_delay(20); 매크로 DEBOUNCING_DELAY는 20으로 대체되었음을 알 수 있다. 위의 좌우 문장은 동일한 것이지만 왼쪽 문장의 의미가 더욱 확실하 다. 왼쪽은 디바운싱을 위한 지연시간(DEBOUNCING_DELAY)동안 지 연하는 의미를 알 수 있지만, 오른쪽 문장에서는 20이라는 수의 의미 를 알기 힘들다. 즉 매크로를 사용함으로써 프로그램의 의미를 확실 하게 전달할 수 있다. [프로그램 prac6-6.c]에서 디바운싱을 위한 시간지연은 스위치 떨 어짐과 누름을 검사할 때 두 번 사용된다. 시간지연을 50msec로 변 경하는 것을 고려해보자. 매크로를 사용하지 않으면 지연시간을 변 경하기 위해 두 문장의 값을 바꾸어야 한다. 그러나 매크로를 사용 하면 매크로를 정의한 한 문장만을 변경하면 된다. #define DEBOUNCING_DELAY 20 ==> #define DEBOUNCING_DELAY 50 이와 같이 하나의 상수를 여러 군데 사용할 때는 매크로를 사용하는 것이 편리하다. 매크로는 변수가 아니므로 메모리를 차지하지 않는다. C-언어에서 변수는 주로 소문자를 많이 사용하므로 매크로를 일반 변수와 구분하기 위해 대문자를 사용하여 정의하는 것이 일반적이다.
29 93 [프로그램 prac6-6.c] //====================================================== // 실습 6.6 스위치 입력을 사용하여 LED를 순차적으로 켠다. //====================================================== #include <avr/io.h> // I/O 레지스터 정의 #include <util/delay.h> // 시간지연 함수용 헤더파일 #define DEBOUNCING_DELAY 20 // 디바운싱 지연시간(msec) void msec_delay(int n); // 시간지연함수 //====================================================== // LED 점등패턴 테이블 //====================================================== unsigned char pattern[8] = 0xFE, 0xFD, 0xFB, 0xF7, 0xEF, 0xDF, 0xBF, 0x7F; int main() int i=0; DDRA = 0xFF; // 포트 A를 출력으로 설정 DDRD = 0x00; // 포트 D를 입력으로 설정 PORTA = pattern[i]; // 처음 패턴으로 LED를 켠다. while(1) while(!(~pind & 0x01)); // 스위치 누름을 기다림 msec_delay(debouncing_delay); // 시간지연 if(++i==8) i=0; PORTA = pattern[i]; //마지막 패턴에서 인덱스리셋 // i-번째 패턴으로 점등 while(~pind&0x01); // 스위치 떨어짐을 기다림 msec_delay(debouncing_delay); // 시간지연 void msec_delay(int n) for(; n >0; n--) // 1msec 시간지연을 n회 반복 _delay_ms(1); // 1msec 시간지연
30 도트 매트릭스에 글자 표시하기 6.4절에서는 8x8 도트 매트릭스의 1행에 위치한 LED에 주어진 패턴으로 점등을 하였다. 여기서는 그림 6.8과 같이 LED의 패턴을 변경할 때 도트 매트릭스의 행을 이동시켜보기로 하자. 배열 pattern[0] pattern[1] pattern[2] pattern[3] pattern[4] pattern[5] pattern[6] 0xFE 0xFD 0xFB 0xF7 0xEF 0xDF 0xBF 위치 1-행 2-행 3-행 4-행 5-행 6-행 7-행 pattern[7] 0x7F 8-행 도트메트릭스 그림 6.8 도트 매트릭스 패턴표시 이를 위해 도트 매트릭스와 ATmega128을 그림 6.9와 같이 연결한다. J3 J2 PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 COL8 COL7 COL6 COL5 COL4 COL3 COL2 COL1 8x8 dot matrix ROW1 ROW2 ROW3 ROW4 ROW5 ROW6 ROW7 ROW8 PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7 그림 6.9 글자표시를 위한 도트 매트릭스 연결
31 95 도트 매트릭스의 ROW1핀이 5V에 연결된 그림 6.2와는 달리 ATmega128 의 PC0핀에 연결되어있으므로 PC0에 논리1(5V)을 출력하면 도트 매트릭 스의 1행에 원하는 패턴으로 LED를 켤 수 있다. 2행을 사용하려면 PC1 핀에 논리1을 출력하면 된다. LED 패턴을 변경할 때 행을 이동하려면 LED를 켤 행에 논리1을 출력하고 원하는 패턴을 포트 A에 출력하면 된 다. prac6-7.c는 (i+1)-번째 행에 i-번째 패턴을 순차적으로 점등하 는 프로그램이다. (i+1)-번째 행을 켜려면 포트 C의 i-번째 비트에 논리 1을 출력하면 된다. i-번째 비트를 1로 세트하려면 왼쪽 쉬프트연산자 << 를 사용하면 편리하다. 0-번째 비트를 세트 : 0b <==> 0x01 << 0 1-번째 비트를 세트 : 0b <==> 0x01 << 1... i-번째 비트를 세트 : 0x01 << i 포트 C의 i-번째 비트를 1로 세트하려면 PORTC = 0x01 << i; // (i+1)행을 켠다. 실습 : prac6-7.c의 시간지연은 1000msec로 설정되어 있다. 이를 50, 20, 10, 5msec로 줄이면서 프로그램을 수행한다. 시간지연이 줄어들 면서 도트 매트릭스의 모든 행이 켜져 있는 것처럼 보인다. 과제 : 1. 도트 매트릭스에 나타나는 패턴이 깜박거림이 없어지는 시간지연을 구 하라. 그리고 이를 이용하여 도트 매트릭스에 깜박거림이 없이 문자 A 를 표시하도록 프로그램을 작성하라. 2. 도트 매트릭스에 문자 A 를 1초간 깜박거림이 없이 표시하고, 다음 1 초간은 COL8을 끈 A 를 표시, 다음 1초간은 COL7을 끈 A 를 표시하 며, 같은 방법으로 COL6, COL5, COL4, COL3, COL2, COL1을 각각 끈 A 를 1초간 표시한 후 다시 COL8을 끈 A 를 표시하는 것으로 돌아가 서 같은 동작을 반복하도록 프로그램을 작성하라.
32 96 [프로그램 prac6-7.c] //====================================================== // 실습 6.7 도트 매트릭스 켜기 //====================================================== // #include <avr/io.h> // I/O 레지스터 정의 #include <util/delay.h> void msec_delay(int msec); // 시간지연함수 선언 unsigned char pattern[8] = 0xFE, 0xFD, 0xFB, 0xF7, 0xEF, 0xDF, 0xBF, 0x7F; int main() int i=0; DDRA = 0xFF; // 포트 A를 출력으로 설정 DDRC = 0xFF; // 포트 C를 출력으로 설정 PORTC = 0x01 << i; // 1-행을 켠다. PORTA = pattern[i]; // 처음 패턴으로 LED를 켠다. while(1) msec_delay(1000); // 약 1sec 지연 if(++i==8) i = 0; // 마지막 패턴에서 인덱스 리셋 PORTC = 0x01 << i; // (i+1)-번째 행을 점등 PORTA = pattern[i]; // i-번째 패턴으로 점등 void msec_delay(int n) for(; n >0; n--) _delay_ms(1); // msec 단위 지연 // 1msec 시간지연을 n회 반복 // 1msec 시간지연
인터럽트 * 인터럽트처리메커니즘 ATmega128 인터럽트 2
ATmega128 인터럽트 1 제 04 강 인터럽트 (Interrupt) 인터럽트개요외부인터럽트참고 ) FND 회로실습및과제 인터럽트 * 인터럽트처리메커니즘 ATmega128 인터럽트 2 인터럽트 ( 계속 ) ATmega128 인터럽트 3 * 인터럽트벡터 (P.104 표 7.1 참조 ) : 35 개 인터럽트 ( 계속 ) * 인터럽트허용 / 금지메커니즘 ATmega128
More information<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >
10주차 문자 LCD 의인터페이스회로및구동함수 Next-Generation Networks Lab. 5. 16x2 CLCD 모듈 (HY-1602H-803) 그림 11-18 19 핀설명표 11-11 번호 분류 핀이름 레벨 (V) 기능 1 V SS or GND 0 GND 전원 2 V Power DD or V CC +5 CLCD 구동전원 3 V 0 - CLCD 명암조절
More information<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>
8주차중간고사 ( 인터럽트및 A/D 변환기문제및풀이 ) Next-Generation Networks Lab. 외부입력인터럽트예제 문제 1 포트 A 의 7-segment 에초시계를구현한다. Tact 스위치 SW3 을 CPU 보드의 PE4 에연결한다. 그리고, SW3 을누르면하강 에지에서초시계가 00 으로초기화된다. 동시에 Tact 스위치 SW4 를 CPU 보드의
More information[8051] 강의자료.PDF
CY AC F0 RS1 RS0 OV - P 0xFF 0x80 0x7F 0x30 0x2F 0x20 0x1F 0x18 0x17 0x10 0x0F 0x08 0x07 0x00 0x0000 0x0FFF 0x1000 0xFFFF 0x0000 0xFFFF RAM SFR SMOD - - - GF1 GF0 PD IDL 31 19 18 9 12 13 14 15 1 2 3 4
More informationK&R2 Reference Manual 번역본
typewriter structunion struct union if-else if if else if if else if if if if else else ; auto register static extern typedef void char short int long float double signed unsigned const volatile { } struct
More information슬라이드 1
마이크로컨트롤러 2 (MicroController2) 2 강 ATmega128 의 external interrupt 이귀형교수님 학습목표 interrupt 란무엇인가? 기본개념을알아본다. interrupt 중에서가장사용하기쉬운 external interrupt 의사용방법을학습한다. 1. Interrupt 는왜필요할까? 함수동작을추가하여실행시키려면? //***
More informationATmega128
ATmega128 외부인터럽트실습 Prof. Jae Young Choi ( 최재영교수 ) (2015 Spring) Prof. Jae Young Choi 외부인터럽트실험 외부인터럽트를사용하기위해관렦레지스터를설정 일반적으로 I/O 포트에대한설정이끝난후에외부인터럽트나타이머 / 카운터설정 PE4~7 번까지 4 개의외부인터럽트 INT4~INT7 까지사용 외부인터럽트사용법요약
More information<BFBEBEC6C0CCB5E9C0C720B3EEC0CC2E20B3EBB7A120C0CCBEDFB1E220C7D0B1B3202D20C0DAB7E1322E687770>
놀이노래이야기 학교 자료집 1. 놀이, 노래 이야기의 재미와 아름다움은 어디에 있을까? 2. 노래와 놀아요. 3. 재미있는 말놀이와 놀아요. 4. 이야기와 놀아요. 1. 옛 아이들 놀이, 노래 이야기의 재미와 아름다움은 어디에 있을까? 편해문(옛 아이들 놀이노래이야기 연구소장) 얼마 전 유치원,
More information프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어
개나리 연구소 C 언어 노트 (tyback.egloos.com) 프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어먹고 하더라구요. 그래서,
More information> > > 제1장 정치 의회 1. 민주주의 가. 민주주의 지수 나. 세계은행의 거버넌스 지수 다. 정치적 불안정 지수 2. 의회 가. 의회제도와 의석 수 나. 여성의원 비율 다. 입법통계 현황 라. 의회의 예산 규모 마. 의원보수 및 보좌진 수당 3. 선거 정당 가. 투표율 나. 선거제도 다. 정당과 정치자금 4. 정치문화 가. 신뢰지수 나. 정부에 대한 신뢰
More information2. GCC Assembler와 AVR Assembler의차이 A. GCC Assembler 를사용하는경우 i. Assembly Language Program은.S Extension 을갖는다. ii. C Language Program은.c Extension 을갖는다.
C 언어와 Assembly Language 을사용한 Programming 20011.9 경희대학교조원경 1. AVR Studio 에서사용하는 Assembler AVR Studio에서는 GCC Assembler와 AVR Assmbler를사용한다. A. GCC Assembler : GCC를사용하는경우 (WinAVR 등을사용하는경우 ) 사용할수있다. New Project
More informationuntitled
122 123 124 125 126 127 128 129 130 131 9 ~ 16V 200mA -30 ~ +85-40 ~ +120 IP () (AUTO ) 132 3 1 4 5 2 6 6 5 4 3 2 1 1. 2. 4. 5. 6. 133 30.55(LUX) 8.93(LUX) 0.5 0.1 60.55(LUX) 17.23(LUX) 3 1 T1 T2 1.0sec
More informationMODBUS SERVO DRIVER( FDA7000 Series ) STANDARD PROTOCOL (Ver 1.00) 1
SERVO DRIVER( FDA7000 Series ) STANDARD PROTOCOL (Ver 100) 1 Contents 1 INTRODUCTION 2 PROTOCOL FRAME OUTLINE 3 FUNCTION FIELD 4 DATA FIELD 5 CRC CHECK 6 FUNCTION EXAM 7 EXCEPTION RESPONSE 8 I/O STATUS
More information歯20010629-003-1-동아일보(2-1).PDF
6. 29 ( ) 11:00 20 0 1. 6. 29 2 3 ( ).( 397-0781) 1. 2. 3. 4. 5. 1. ( : 2 ) 2 8607, 306 19, 7 6 28, 95 3 - (5 ) (,,,,,, ) - 1 - 2. -, - -, - 2 - 3.,, 1,700, 827 ( ) 1,700 8 27 803 469 560 227 289 117 48
More information<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>
7주차 AVR의 A/D 변환기제어레지스터및관련실습 Next-Generation Networks Lab. 3. 관련레지스터 표 9-4 레지스터 ADMUX ADCSRA ADCH ADCL 설명 ADC Multiplexer Selection Register ADC 의입력채널선택및기준전압선택외 ADC Control and Status Register A ADC 의동작을설정하거나동작상태를표시함
More information03장.스택.key
---------------- DATA STRUCTURES USING C ---------------- 03CHAPTER 1 ? (stack): (LIFO:Last-In First-Out) 2 : top : ( index -1 ),,, 3 : ( ) ( ) -> ->. ->.... 4 Stack ADT : (LIFO) : init():. is_empty():
More information(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 -
(Asynchronous Mode) - - - ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 - UART (Univ ers al As y nchronous Receiver / T rans mitter) 8250A 8250A { COM1(3F8H). - Line Control Register
More informationCPX-E-EC_BES_C_ _ k1
CPX-E CPX-E-EC EtherCAT 8071155 2017-07 [8075310] CPX-E-EC CPX-E-EC-KO EtherCAT, TwinCAT (). :, 2 Festo CPX-E-EC-KO 2017-07 CPX-E-EC 1... 4 1.1... 4 1.2... 4 1.3... 4 1.4... 5 1.5... 5 2... 6 2.1... 6
More informationuntitled
while do-while for break continue while( ) ; #include 0 i int main(void) int meter; int i = 0; while(i < 3) meter = i * 1609; printf("%d %d \n", i, meter); i++; return 0; i i< 3 () 0 (1)
More informationUART.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
IMC-V0.1 예제소스파일 1. UART 소스코드 (page 1-3) 2. Encoder 소스코드 (page 4-7) 3. ADC 소스코드 (page 8-10) UART.h #ifndef _UART_H_ #define _UART_H_ #define DIR_TXD #define DIR_RXD sbi(portd,4) cbi(portd,4) #define CPU_CLOCK_HZ
More informationC프로-3장c03逞풚
C h a p t e r 03 C++ 3 1 9 4 3 break continue 2 110 if if else if else switch 1 if if if 3 1 1 if 2 2 3 if if 1 2 111 01 #include 02 using namespace std; 03 void main( ) 04 { 05 int x; 06 07
More information2월 강습회원의 수영장 이용기간은 매월 1일부터 말일까지로 한다.다만,월 자유수영회 원,자유수영 후 강습회원은 접수일 다음달 전일에 유효기간이 종료된다.<개정 2006.11. 20,2009.6.15> 제10조(회원증 재발급)1회원증을 교부받은 자가 분실,망실,훼손 및
실 내 수 영 장 운 영 내 규 1999.6.1. 내규 제50호 개정 2001. 3.19 내규 제 82호 개정 2005.12.29 내규 제135호 2002. 3.25 내규 제 92호 2006.11.20 내규 제155호 2002. 8.28 내규 제 94호 2009. 6.15 내규 제194호 2005. 5.20 내규 제129호 2011.11.10 내규 제236호
More information목차 1. 키패드 (KeyPAD) 2. KeyPAD 를이용한비밀번호입력기
Chapter. 13 KeyPAD 를이용한비밀번호입력기 HBE-MCU-Multi AVR Jaeheung, Lee 목차 1. 키패드 (KeyPAD) 2. KeyPAD 를이용한비밀번호입력기 키패드 (KeyPAD) 키패드 (KeyPAD) 마이크로컨트롤러활용에서사용자의입력을받아들이기위한장치 전화기, 컴퓨터, 핸드폰, 냉장고등거의모든가전제품에서사용 키패드인터페이스방식
More information노인복지법 시행규칙
노인복지법 시행규칙 [시행 2012.2.5] [보건복지부령 제106호, 2012.2.3, 타법개정] 제1조(목적) 이 규칙은 노인복지법 및 동법시행령에서 위임된 사항과 그 시행에 관하여 필요한 사항을 규정 함을 목적으로 한다. 제1조의2(노인실태조사) 1 노인복지법 (이하 "법"이라 한다) 제5조에 따른 노인실태조사의 내용은 다음 각
More information2008.3.3> 1. 법 제34조제1항제3호에 따른 노인전문병원 2. 국민건강보험법 제40조제1항의 규정에 의한 요양기관(약국을 제외한다) 3. 삭제<2001.2.10> 4. 의료급여법 제2조제2호의 규정에 의한 의료급여기관 제9조 (건강진단) 영 제20조제1항의 규
노인복지법 시행규칙 [시행 2010. 3. 1] [보건복지가족부령 제161호, 2010. 2.24, 일 보건복지가족부 (노인정책과) 02-2023-85 제1조 (목적) 이 규칙은 노인복지법 및 동법시행령에서 위임된 사항과 그 시행에 관하여 필요한 함을 목적으로 한다. 제1조의2 (노인실태조사) 1 노인복지법 (이하 "법"이라 한다)
More informationI/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 특징
AVR - Chapter 5 류대우 davidryu@ewtc.co.kr 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 특징 Read-modify-Write
More information가. 도트매트릭스제어하기 단일 LED와는다르게도트매트릭스를구동시는구동전류가프로세서에서출력되는전류보다사용량을더많이필요하기때문에 TTL 계열의 IC로구동시키기에는무리가따른다. 이러한문제를해결하기위해서사용전압, 전류정격이높은달링턴트랜지스터가어레이형태로들어있는 ULN2803을
CHAPTER 5 도트매트릭스제어하기 가. 도트매트릭스제어하기 가. 도트매트릭스제어하기 단일 LED와는다르게도트매트릭스를구동시는구동전류가프로세서에서출력되는전류보다사용량을더많이필요하기때문에 TTL 계열의 IC로구동시키기에는무리가따른다. 이러한문제를해결하기위해서사용전압, 전류정격이높은달링턴트랜지스터가어레이형태로들어있는 ULN2803을이용한다. 이 IC에는 8개의
More information5.스택(강의자료).key
CHP 5: https://www.youtube.com/watch?v=ns-r91557ds ? (stack): (LIFO:Last-In First-Out):. D C B C B C B C B (element) C (top) B (bottom) (DT) : n element : create() ::=. is_empty(s) ::=. is_full(s) ::=.
More informationMicrosoft Word - FS_ZigBee_Manual_V1.3.docx
FirmSYS Zigbee etworks Kit User Manual FS-ZK500 Rev. 2008/05 Page 1 of 26 Version 1.3 목 차 1. 제품구성... 3 2. 개요... 4 3. 네트워크 설명... 5 4. 호스트/노드 설명... 6 네트워크 구성... 6 5. 모바일 태그 설명... 8 6. 프로토콜 설명... 9 프로토콜 목록...
More information2009년2학기 임베디드시스템 응용
임베디드시스템기초 (#514115 ) #2. GPIO & Matrix Keypad 한림대학교전자공학과이선우 Short Review #1 General Purpose Input Output (GPIO) Output port Input port Switch 사용방법 2 General Purpose Input Output(GPIO) port 모든 MCU의가장기본적이고중요한주변장치
More information凡 例 一. 이 글은 朝 鮮 日 報 에 成 均 館 大 中 文 學 科 全 廣 鎭 敎 授 가 連 載 한 생활한자에서 拔 萃 하였다. 逃 가지런할 도 走 달릴 주 도주( 逃 走 ) 피하여 달아남. 도망( 逃 亡 ). 필사의 도주/그 피의자는 도주의 우려가 없어 보석금을 내고
凡 例 一. 이 글은 朝 鮮 日 報 에 成 均 館 大 中 文 學 科 全 廣 鎭 敎 授 가 連 載 한 생활한자에서 拔 萃 하였다. 逃 가지런할 도 走 달릴 주 도주( 逃 走 ) 피하여 달아남. 도망( 逃 亡 ). 필사의 도주/그 피의자는 도주의 우려가 없어 보석금을 내고 석방되었다./경찰은 범인들의 도주를 막기 위해 철통같은 경계망 을 폈다./그들은 부대가 도주를
More informationMicrosoft PowerPoint - es-arduino-lecture-03
임베디드시스템개론 : Arduino 활용 Lecture #3: Button Input & FND Control 2012. 3. 25 by 김영주 강의목차 디지털입력 Button switch 입력 Button Debounce 7-Segment FND : 직접제어 7-Segment FND : IC 제어 2 디지털입력 : Switch 입력 (1) 실습목표 아두이노디지털입력처리실습
More information3232 편집본(5.15).hwp
정태제 묘 출토 사초 사진 정태제 묘 출토 사초 상권 정태제 묘 출토 사초 상권 45 정태제 묘 출토 사초 하권(표지) 정태제 묘 출토 사초 하권 46 2 중기( 重 記 ) 중기( 重 記 )란 호조에서 각 관청의 회계를 감독하거나 경외( 京 外 )의 각 관청이 보유하고 있 는 국가 재산의 누수를 막기 위하여 정기적으로 작성하도록 규정한 회계장부나 물품조사서
More informationC 프로그래밍 언어 입문 C 프로그래밍 언어 입문 김명호저 숭실대학교 출판국 머리말..... C, C++, Java, Fortran, Python, Ruby,.. C. C 1972. 40 C.. C. 1999 C99. C99. C. C. C., kmh ssu.ac.kr.. ,. 2013 12 Contents 1장 프로그래밍 시작 1.1 C 10 1.2 12
More informationPowerPoint 프레젠테이션
Web server porting 2 Jo, Heeseung Web 을이용한 LED 제어 Web 을이용한 LED 제어프로그램 web 에서데이터를전송받아타겟보드의 LED 를조작하는프로그램을작성하기위해다음과같은소스파일을생성 2 Web 을이용한 LED 제어 LED 제어프로그램작성 8bitled.html 파일을작성 root@ubuntu:/working/web# vi
More information: 1 int arr[9]; int n, i; printf(" : "); scanf("%d", &n); : : for(i=1; i<10; i++) arr[i-1] = n * i; for(i=0; i<9; i++) if(i%2 == 1) print
1 : 1 int arr[9]; int n, i; printf(" : "); scanf("%d", &n); : : 3 6 12 18 24 for(i=1; i
More information<C6EDC1FD2D3132313230355F323031325FBCBAB9FCC1CBC0DA5FC3EBBEF7C1A6C7D1C1A6B5B55FBEC8B3BB5F2831322E31322920C3D6C1BEBABB2E687770>
CONTENTS 성범죄자 취업제한제도 및 신고의무제도 안내 제 편 성범죄자 취업제한제도 Ⅰ. 제도 개요 4 1. 관련법령 4 2. 제도 도입배경 4 3. 주요내용 4 Ⅱ. 성범죄자 취업제한제도 5 1. 취업제한대상자 5 2. 취업제한기간 및 적용시점 5 3. 취업제한 내용 6 4. 성범죄자 취업제한대상기관 6 5. 성범죄경력 확인 의무 9 6. 법 위반 시
More informationMPLAB C18 C
MPLAB C18 C MPLAB C18 MPLAB C18 C MPLAB C18 C #define START, c:\mcc18 errorlevel{0 1} char isascii(char ch); list[list_optioin,list_option] OK, Cancel , MPLAB IDE User s Guide MPLAB C18 C
More information<3038323020C1A633B1C75FC3D6C1BE5FBCF6C1A4BABB2E687770>
목 차 Contents 제3권 기술이전 관련 법령 제6장 법령/시행령 / 1 [법령/시행령1] 지식재산기본법(안) 3 [법령/시행령2] 기술의 이전 및 사업화 촉진에 관한 법률 19 [법령/시행령3] 기술의 이전 및 사업화 촉진에 관한 법률 시행령 47 [법령/시행령4] 발명진흥법 67 [법령/시행령5] 산업교육진흥 및 산학협력촉진에 관한 법률 91 [법령/시행령6]
More informationuntitled
int i = 10; char c = 69; float f = 12.3; int i = 10; char c = 69; float f = 12.3; printf("i : %u\n", &i); // i printf("c : %u\n", &c); // c printf("f : %u\n", &f); // f return 0; i : 1245024 c : 1245015
More informationMicrosoft Word doc
2. 디바이스드라이버 [ DIO ] 2.1. 개요 타겟보드의데이터버스를이용하여 LED 및스위치동작을제어하는방법을설명하겠다. 2.2. 회로도 2.3. 준비조건 ARM 용크로스컴파일러가설치되어있어야한다. 하드웨어적인점검을하여정상적인동작을한다고가정한다. NFS(Network File System) 를사용할경우에는 NFS가마운트되어있어야한다. 여기서는소스전문을포함하지않았다.
More information(095-99)미디어포럼4(법을 알고).indd
법을 알고 기사 쓰기 62 논쟁적 주제 다룰 땐 단정적으로 보도하지 말아야 과학적 사실에 대한 보도 시 주의할 점 양재규 언론중재위원회 정책연구팀장 변호사 기자도 전문가 시대다. 의학전문기자, 경제전문기자 라는 말은 이미 익숙하고 이 외에도 책전문기자, 등 산전문기자, IT전문기자, 스포츠전문기자, 자동차 전문기자 등 다양한 분야의 전문기자들이 있다. 과학
More informationPowerPoint 프레젠테이션
Web server porting 2 Jo, Heeseung Web 을이용한 LED 제어 Web 을이용한 LED 제어프로그램 web 에서데이터를전송받아타겟보드의 LED 를조작하는프로그램을작성하기위해다음과같은소스파일을생성 2 Web 을이용한 LED 제어 LED 제어프로그램작성 8bitled.html 파일을작성 root@ubuntu:/working/web# vi
More informationDSP_MON 프로그램 메뉴얼
UART_CAN Analyzer 윈도우 프로그램 사용자 메뉴얼 리얼시스 TEL : 031-420-4326 FAX : 031-420-4329 주소 : 경기도 안양시 동안구 관양동 799 안양메가밸리 319호 - 1 - UART_CAN Analyzer 제품을 구입해 주셔서 감사합니다. 본 제품을 구입하신 고객께서는 먼저 사용 설명서를 잘 읽어 보시고 제품을 사용하여
More informationChapter. 14 DAC 를이용한 LED 밝기제어 HBE-MCU-Multi AVR Jaeheung, Lee
Chapter. 14 DAC 를이용한 LED 밝기제어 HBE-MCU-Multi AVR Jaeheung, Lee 목차 1. D/A 변환기 2. 병렬 D/A 변환기로 LED 밝기제어하기 3. 직렬 D/A 변환기로 LED 밝기제어하기 D/A 변환기 D/A 변환기 (Digital to Analog Converter) 디지털데이터를아날로그전압으로변환하는소자 A/D변환기와함께마이크로프로세서응용회로에서널리사용됨.
More informationPowerPoint 프레젠테이션
@ Lesson 2... ( ). ( ). @ vs. logic data method variable behavior attribute method field Flow (Type), ( ) member @ () : C program Method A ( ) Method B ( ) Method C () program : Java, C++, C# data @ Program
More information특허청구의 범위 청구항 1 영상표시기기에 있어서, 외부로부터 입력되는 영상을 디스플레이하는 디스플레이 패널; 상기 디스플레이 패널 전면으로 빛을 공급하는 백라이트; 상기 백라이트에 구동 전원을 공급하는 백라이트 구동부; 적어도 하나의 밝기 조정 테이블을 저장하고 있는
(51) Int. Cl. (19) 대한민국특허청(KR) (12) 공개특허공보(A) G02F 1/133 (2006.01) G09G 3/36 (2006.01) (21) 출원번호 10-2008-0053994 (22) 출원일자 2008년06월10일 심사청구일자 없음 전체 청구항 수 : 총 15 항 (54) 영상표시기기 및 그의 제어 방법 (11) 공개번호 10-2009-0128021
More information4.18.국가직 9급_전산직_컴퓨터일반_손경희_ver.1.hwp
2015년도 국가직 9급 컴퓨터 일반 문 1. 시스템 소프트웨어에 포함되지 않는 것은? 1 1 스프레드시트(spreadsheet) 2 로더(loader) 3 링커(linker) 4 운영체제(operating system) - 시스템 소프트웨어 : 운영체제, 데이터베이스관리 프로그램,, 컴파일러, 링커, 로더, 유틸리티 소프트웨 어 등 - 스프레드시트 : 일상
More information¾Ë±â½¬¿îÀ±¸®°æ¿µc03ÖÁ¾š
& 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 & 27 28 29 30 31 32 33 34 35 36 37 38 & 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 & 55 56 57 58 59 60 61 62 63
More information<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>
뻔뻔한 AVR 프로그래밍 The Last(8 th ) Lecture 유명환 ( yoo@netplug.co.kr) INDEX 1 I 2 C 통신이야기 2 ATmega128 TWI(I 2 C) 구조분석 4 ATmega128 TWI(I 2 C) 실습 : AT24C16 1 I 2 C 통신이야기 I 2 C Inter IC Bus 어떤 IC들간에도공통적으로통할수있는 ex)
More information2016년 제31차 통신심의소위원회 회의록(심의의결서,공개, 비공개).hwp
회 의 록 회 의 명 : 제31차 통신심의소위원회 정기회의 일 시 : 2016. 04. 26. (화) 14:00 장 소 : 19층 대회의실 출석위원 : 장낙인 소위원장 김성묵 위 원 조영기 위 원 박신서 위 원 고대석 위 원(5인) 불참위원 : 없 음 제31차 통신심의소위원회 정기회의 심의의결서 1. 성원보고 2. 개회선언 (14:00) 3. 회의공개여부 결정
More informationSW 2015. 02 5-1 89
SW 2015. 02 88 SW 2015. 02 5-1 89 SW 2015. 02 5-2 5-3 90 SW 2015. 02 5-4 91 SW 2015. 02 5-5 5-6 92 5-7 SW 2015. 02 93 SW 2015. 02 5-8 5-1 94 SW 2015. 02 5-9 95 SW 2015. 02 5-10 5-2 96 SW 2015. 02 5-11
More information1 SW 2015. 02 26
02 1 SW 2015. 02 26 2-1 SW 2015. 02 27 SW 2015. 02 2-1 28 SW 2015. 02 29 2 SW 2015. 02 2-2 30 2-2 SW 2015. 02 31 SW 2015. 02 32 2-3 SW 2015. 02 33 3 SW 2015. 02 2-3 34 2-4 SW 2015. 02 35 4 SW 2015. 02
More information목차 1. ATMega128의외부메모리인터페이스 2. TEXT LCD 3. TEXT LCD에글자쓰기 4. SRAM 5. 외부메모리인터페이스에 SRAM붙이기
Chapter. 10 외부메모리인터페이스 HBE-MCU-Multi AVR Jaeheung, Lee 목차 1. ATMega128의외부메모리인터페이스 2. TEXT LCD 3. TEXT LCD에글자쓰기 4. SRAM 5. 외부메모리인터페이스에 SRAM붙이기 ATMega128 의외부메모리인터페이스 ATMega128 의외부메모리인터페이스 칩외부에더큰용량의메모리나별도의주변장치들을연결하기위한인터페이스
More information(72) 발명자 서진교 경기 용인시 수지구 풍덕천2동 1167 진산마을 삼성5차아파트526동 1004호 조필제 경기 용인시 풍덕천동 725-1 유스빌 401호 - 2 -
(51) Int. Cl. (19) 대한민국특허청(KR) (12) 공개특허공보(A) G06F 12/14 (2006.01) (21) 출원번호 10-2006-0056087 (22) 출원일자 2006년06월21일 심사청구일자 전체 청구항 수 : 총 18 항 2006년06월21일 (54) 유에스비 메모리 도난 방지 시스템 및 방법 (11) 공개번호 10-2007-0121264
More information<B5B6BCADC7C1B7CEB1D7B7A52DC0DBBEF7C1DF313232332E687770>
2013 소외계층 독서 인문학 프로그램 결과보고서 - 2 - 2013 소외계층 독서 인문학 프로그램 결과보고서 c o n t e n t s 5 22 44 58 84 108 126 146 168 186 206 220 231 268 296 316 꽃바위 작은 도서관 꿈이 자라는 책 마을 기적의 도서관 남부 도서관 농소 1동 도서관 농소 3동 도서관 동부 도서관
More information정보보안 개론과 실습:네트워크
` 마이크로프로세서설계및실습 12-13 주차강의자료 학습목표 A/D 변환기의제어방법을이해한다 능숙하게 A/D 변환기를제어할수있도록반복실습한다 2/28 아날로그 - 디지털변환회로 아날로그 - 디지털변환회로 (A/D 변환회로 ) 는, 아날로그전기신호를디지털전기신호로변환하는전자회로이다 A/D 컨버터 (ADC: Analog-to-digital converter) 라고도불린다
More informationC++-¿Ïº®Çؼ³10Àå
C C++. (preprocessor directives), C C++ C/C++... C++, C. C++ C. C C++. C,, C++, C++., C++.,.. #define #elif #else #error #if #itdef #ifndef #include #line #pragma #undef #.,.,. #include #include
More informationPowerPoint 프레젠테이션
KeyPad Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 에는 16 개의 Tack Switch 를사용하여 4 행 4 열의 Keypad 가장착 4x4 Keypad 2 KeyPad 를제어하기위하여 FPGA 내부에 KeyPad controller 가구현 KeyPad controller 16bit 로구성된
More informationC & System
1-1 마이크로컨트롤러 (MCU) MCU = CPU Core(Architecture) + Peripherals(Controllers) 1 1-2 마이크로컨트롤러동작구조 1-3 AVR ATmega128 특징 뛰어난성능 (Advanced RISC Architecture) Most Single Clock Cycle Execution 32 X 8bit General
More informationMicrosoft Word - KPMC-400,401 SW 사용 설명서
LKP Ethernet Card SW 사용설명서 Version Information Tornado 2.0, 2.2 알 림 여기에실린내용은제품의성능향상과신뢰도의증대를위하여예고없이변경될수도있습니다. 여기에실린내용의일부라도엘케이일레븐의사전허락없이어떠한유형의매체에복사되거나저장될수없으며전기적, 기계적, 광학적, 화학적인어떤방법으로도전송될수없습니다. 엘케이일레븐경기도성남시중원구상대원동
More informationCPX-E-PB_BES_C_ _ k1
CPX-E CPX-E-PB PROFIBUS DP 8723 27-7 [87536] CPX-E-PB CPX-E-PB-KO PI PROFIBUS PROFINET (). :, 2 Festo CPX-E-PB-KO 27-7 CPX-E-PB... 4.... 4.2... 4.3... 4.4... 5.5... 5 2... 6 2.... 6 2..... 6 2..2... 6
More information단위: 환경정책 형산강살리기 수중정화활동 지원 10,000,000원*90%<절감> 형산강살리기 환경정화 및 감시활동 5,000,000원*90%<절감> 9,000 4,500 04 민간행사보조 9,000 10,000 1,000 자연보호기념식 및 백일장(사생,서예)대회 10
2013년도 본예산 일반회계 환경위생과 ~ 환경위생과 세 출 예 산 사 업 명 세 서 부서: 환경위생과 단위: 환경정책 환경위생과 8,231,353 3,622,660 4,608,693 국 2,472,543 기 144,000 도 976,102 시 4,638,708 자연환경보호(환경보호/환경보호일반) 5,910,247 1,462,545 4,447,702 국 1,817,800
More information°¡°Ç6¿ù³»ÁöÃÖÁ¾
J 2007. 6 J J J J J J J J Special J Special J J Special 01 02 03 04 05 06 07 J J Special J J Special J Special J J Special J J Special J J Special J J Special J J J J J J J J J J J J J J J J J J J J
More informationPowerPoint 프레젠테이션
7-Segment Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 6-Digit 7-Segment LED controller 16비트로구성된 2개의레지스터에의해제어 SEG_Sel_Reg(Segment
More informationPowerPoint 프레젠테이션
7-Segment Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 6-Digit 7-Segment LED Controller 16비트로구성된 2개의레지스터에의해제어 SEG_Sel_Reg(Segment
More information슬라이드 1
AVR(Atmega128) Interrupt 1 Interrupt Polling 사용자가명령어를사용하여입력핀의값을계속읽어서변화를알아냄 모든경우의입력또는값의변화에대응하여처리가가능 Interrupt MCU 자체가하드웨어적으로그변화를체크하여변화시에만일정한동작 하드웨어적으로지원되는몇개의입력또는값의변화에만대응처리가가능 처리속도는일반적인경우인터럽트가빠름 인터럽트발생시
More information<BCBAC1F6BCF8B7CA28C3D6C1BE2933C2F72E687770>
大 巡 대학생 하계 성지순례 자 료 집 宗 團 大 巡 眞 理 會 目 次 성지순례의 취지 11 행사 일정표 12 계룡산 동학사 13 천호산 개태사 31 반야산 관촉사 41 모악산 금산사 54 황토현 전적지 92 상제님 생가 시루산 104 모악산 대원사 115 종남산 송광사 126 진안 마이산 135-1 - 도 기 ( 道 旗 ) 우주 자연의 근원적 의미가 도(
More informationPowerPoint 프레젠테이션
7-SEGMENT DEVICE CONTROL - DEVICE DRIVER Jo, Heeseung 디바이스드라이버구현 : 7-SEGMENT HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 디바이스드라이버구현 : 7-SEGMENT 6-Digit 7-Segment LED
More informationDIB-100_K(90x120)
Operation Manual 사용설명서 Direct Box * 본 제품을 사용하기 전에 반드시 방송방식 및 전원접압을 확인하여 사용하시기 바랍니다. MADE IN KOREA 2009. 7 124447 사용하시기 전에 사용하시기 전에 본 기기의 성능을 충분히 발휘시키기 위해 본 설명서를 처음부터 끝까지 잘 읽으시고 올바른 사용법으로 오래도록 Inter-M 제품을
More informationint main(void) int a; int b; a=3; b=a+5; printf("a : %d \n", a); printf("b : %d \n", b); a b 3 a a+5 b &a(12ff60) &b(12ff54) 3 a 8 b printf(" a : %x \
? 1 int main(void) int a; int b; a=3; b=a+5; printf("a : %d \n", a); printf("b : %d \n", b); a b 3 a a+5 b &a(12ff60) &b(12ff54) 3 a 8 b printf(" a : %x \n", &a); printf(" b : %x \n", &b); * : 12ff60,
More informationQYQABILIGOUI.hwp
2013학년도 대학수학능력시험 대비 2012 학년도 3월 고3 전국연합학력평가 정답 및 해설 사회탐구 영역 윤리 정답 1 3 2 4 3 4 4 1 5 2 6 2 7 5 8 2 9 4 10 1 11 3 12 2 13 1 14 5 15 1 16 3 17 1 18 5 19 2 20 3 1. [ 출제의도] 인간의 존재론적 특성을 파악 신문 기사에서는 자율적 판단에
More information歯7장.PDF
7 Hello!! C 2 . 3 ([] ) < > [ ]; int array[10]; < > [ ][ ]; int array [3] [5]; 4 < > [ ]={ x1,,x10} ( ); (,). ({}). : int array[10]={1,2,3,4,5,6,7,8,9,10}; (" "). : char array[7]="turbo-c"; 5 int array[2][3]={{1,2},{3,4},{5,6}};
More informationchap7.PDF
7 Hello!! C 2 . 3 ([] ) < > [ ]; int array[10]; < > [ ][ ]; int array [3] [5]; 4 < > [ ]={ x1,,x10} ( ); (,). ({}). : int array[10]={1,2,3,4,5,6,7,8,9,10}; (" "). : char array[7]="turbo-c"; 5 int array[2][3]={{1,2},{3,4},{5,6}};
More information// 변수선언 unsigned char i; unsigned char FONT[]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xD8, 0x80, 0x98}; //PORTA 를출력으로설정하고초기값은모두 0 PORTA = 0x00; DD
Code Vison AVR C ATmega8535 ATmega8535 제어실습 Chapter 1 I / O 포트제어하기 FND 제어 FND에는 Vcc를이용하는애노드 (anode) 형과 Gnd를이용하는 cathode형이있다. LED가여러개모여있다생각하고 LED선택에따라문자와숫자를만들어낼수있다. 최대한많은영문자를만들기위해대문자와소문자를혼합한다. ( 표현가능한문자
More informationⅠ. 머리말 각종 기록에 따르면 백제의 초기 도읍은 위례성( 慰 禮 城 )이다. 위례성에 관한 기록은 삼국사기, 삼국유사, 고려사, 세종실록, 동국여지승람 등 많은 책에 실려 있는데, 대부분 조선시대에 편 찬된 것이다. 가장 오래된 사서인 삼국사기 도 백제가 멸망한지
고대 동아시아의 왕성과 풍납토성 - 풍납토성의 성격 규명을 위한 학술세미나 - pp. 46-67 한국의 고대 왕성과 풍납토성 김기섭(한성백제박물관) 목차 Ⅰ. 머리말 Ⅱ. 한국 고대의 왕성 1. 평양 낙랑토성 2. 집안 국내성 3. 경주 월성 4. 한국 고대 왕성의 특징 Ⅲ. 풍납토성과 백제의 한성 1. 풍납토성의 현황 2. 한성의 풍경 Ⅰ. 머리말 각종 기록에
More informationCD-6208_SM(new)
Digital Amplifier MA-110 CONTENTS Specifications... 1 Electrical parts list... 2 top and bottom view of p.c. board... 10 Application... 12 block Diagram... 13 Schematic Diagram... 14 Exploded view of cabinet
More informationPowerPoint 프레젠테이션
@ Lesson 3 if, if else, if else if, switch case for, while, do while break, continue : System.in, args, JOptionPane for (,, ) @ vs. logic data method variable Data Data Flow (Type), ( ) @ Member field
More informationMicrosoft PowerPoint - 03_(C_Programming)_(Korean)_Pointers
C Programming 포인터 (Pointers) Seo, Doo-Ok Clickseo.com clickseo@gmail.com 목 차 포인터의이해 다양한포인터 2 포인터의이해 포인터의이해 포인터변수선언및초기화 포인터연산 다양한포인터 3 주소연산자 ( & ) 포인터의이해 (1/4) 변수와배열원소에만적용한다. 산술식이나상수에는주소연산자를사용할수없다. 레지스터변수또한주소연산자를사용할수없다.
More informationDTS-L300-V2 Specification Page 1 of 14 비접촉온도측정 원거리온도측정 High Accuracy Digital Interface : SPI Arduino UNO 예제코드제공 제품설명 DTS-L300-V2는접촉을하지않고원하는물체표면에온도를 50
Page 1 of 14 비접촉온도측정 원거리온도측정 High Accuracy Digital Interface : SPI Arduino UNO 예제코드제공 제품설명 DTS-L300-V2는접촉을하지않고원하는물체표면에온도를 500ms 이내에정확하게측정할수있는온도센서모듈입니다. DTS-L300-V2는온도계산프로세서를내장하고있어정확한온도값을출력합니다. (Master
More informationMicrosoft PowerPoint - 제3장 GPIO 입출력 제어 (HBE-MCU-Multi AVR)
한백전자기술연구소 HBE-MCU-Multi 로배우는 마이크로컨트롤러 (AVR편) 마이크로컨트롤러기능 제 3 장 GPIO 입출력제어 GPIO 입출력제어 1. HBE-MCU-Multi 구동 2. 마이크로컨트롤러와 GPIO 3. AVR 마이크로컨트롤러의입출력포트 4. GPIO 를이용하여 LED 켜기 5. GPIO를이용한스위치눌러 LED 불켜기 6. GPIO 를이용하여
More informationReal Time In-Circuit Emulator for MICROCHIP PIC16CXX
CHAPTER 1 MR.PIC-IDE 1. MR.PIC-IDE... 2. MR.PIC-IDE 3. MR.PIC-IDE 4. MR.PIC-IDE 2. MR.PIC CHAPTER 2 1. MR.PIC 3`. MR.PIC 4. MR.PIC 5.... 6. MR.PIC CHAPTER 3 MR.PIC-IDE 1. MR.PIC-IDE MR.PIC-IDE 2.
More informationAPI 매뉴얼
PCI-DIO12 API Programming (Rev 1.0) Windows, Windows2000, Windows NT and Windows XP are trademarks of Microsoft. We acknowledge that the trademarks or service names of all other organizations mentioned
More informationCANTUS Evaluation Board Ap. Note
Preliminary CANTUS - UART - 32bits EISC Microprocessor CANTUS Ver 1. October 8, 29 Advanced Digital Chips Inc. Ver 1. PRELIMINARY CANTUS Application Note( EVM B d ) History 29-1-8 Created Preliminary Specification
More informationChapter 4. LISTS
연결리스트의응용 류관희 충북대학교 1 체인연산 체인을역순으로만드는 (inverting) 연산 3 개의포인터를적절히이용하여제자리 (in place) 에서문제를해결 typedef struct listnode *listpointer; typedef struct listnode { char data; listpointer link; ; 2 체인연산 체인을역순으로만드는
More informationMicrosoft PowerPoint - polling.pptx
지현석 (binish@home.cnu.ac.kr) http://binish.or.kr Index 이슈화된키보드해킹 최근키보드해킹이슈의배경지식 Interrupt VS polling What is polling? Polling pseudo code Polling 을이용한키로거분석 방어기법연구 이슈화된키보드해킹 키보드해킹은연일상한가! 주식, 펀드투자의시기?! 최근키보드해킹이슈의배경지식
More information¿ÀǼҽº°¡À̵å1 -new
Open Source SW 4 Open Source SW 5 Korea Copyright Commission 8 Open Source SW 9 10 Open Source SW 11 12 Open Source SW 13 14 Open Source SW 15 Korea Copyright Commission 18 Open Source SW 19 20 Open
More information7,560일간의 드라마 여행
7,560일간의 드라마 여행 흐르는강물처럼 소개글 로케이션매니저의 자전적 에세이 스크린 테마기행 목차 저 푸른 수평선 너머로(그대그리고나) 6 우도속의 섬, 비양도(올인) 10 길은 차밭으로 통한다(SK텔레콤) 14 빵꾸 똥꾸 산골소녀(지붕뚫고하이킼) 16 우포 강가에 앉다(사랑따윈필요없어) 20 떠나요 삐삐롱스타킹 23 왕초 따라가기(왕초) 27 가문의 영광이로소이다(가문의영광)
More informationPoison 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
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 Example 3.1 Files 3.2 Source code 3.3 Exploit flow
More informationMicrosoft PowerPoint - 08-MP-8-ADC
8. A/D 변환기 순천향대학교 컴퓨터학부 이 상 정 학습 내용 ATmega28 ADC ADC 개요 ADC 레지스터 ADC 프로그램 온도센서 프로그램 순천향대학교 컴퓨터학부 이 상 정 2 ATmega28 ADC 순천향대학교 컴퓨터학부 이 상 정 3 A/D 변환기 개요 물리적인 현상(전압, 전류,온도,속도,조도,습도,압력,속,,습,압력 )들은 아날로그 값이므로
More information4. #include <stdio.h> #include <stdlib.h> int main() { functiona(); } void functiona() { printf("hihi\n"); } warning: conflicting types for functiona
이름 : 학번 : A. True or False: 각각항목마다 True 인지 False 인지적으세요. 1. (Python:) randint 함수를사용하려면, random 모듈을 import 해야한다. 2. (Python:) '' (single quote) 는한글자를표현할때, (double quote) 는문자열을표현할때사용한다. B. 다음에러를수정하는방법을적으세요.
More information歯superimp.PDF
1 TV TV,, TV TV? TV OSDC (On Screen Display Controller) OSDC TV TV, TV TV 6845 CRTCTI9938 VDP, CRTCVDP OSDC IC TV, OSDC OSDC TV, OSDC, 1 ,,,, ASCII / ( ) ( ) ON/OFF, PC, 2432(PC 1616) CG ROM(FONT ROM)
More informationuntitled
4.1.3 %IX0.0.0 %IX0.0.1 %QX0.1.0 ( ) %QX0.1.0 %IX0.0.0 %IX0.0.1 %QX0.1.0 * 5 GMWIN. - 31 - SW1 ON SW2 OFF. SW2 ON SW1 OFF. (%QX0.1.0) SW1 (%IX0.0.0) SW2 (%IX0.0.0) SW1 SW1 SW2 SW2 ( ) SW1 SW2-32 - P (
More information106 107, ( ),, ( ), 3, int kor[5]; int eng[5]; int Microsoft Windows 4 (ANSI C2 ) int kor[5] 20 # define #define SIZE 20 int a[10]; char c[10]; float
Part 2 31 32 33 106 107, ( ),, ( ), 3, int kor[5]; int eng[5]; int Microsoft Windows 4 (ANSI C2 ) int kor[5] 20 # define #define SIZE 20 int a[10]; char c[10]; float f[size]; /* 10 /* c 10 /* f 20 3 1
More informationchap7.key
1 7 C 2 7.1 C (System Calls) Unix UNIX man Section 2 C. C (Library Functions) C 1975 Dennis Ritchie ANSI C Standard Library 3 (system call). 4 C?... 5 C (text file), C. (binary file). 6 C 1. : fopen( )
More informationM16_32KIT_Manual.hwp
M16/32KIT Mega 16/32 KIT Technical Manual AVRMALL http://www.avrmall.com/ September 20, 2004 Copyright (c) 2003,2004 AVRMALL All Rights Reserved. M16/32KIT Technical Manual September 20, 2004 Page 2 of
More information