4 ATmega128 디지털 I/O 인터페이스 마이크로컨트롤러 AVR ATmega128
학습목표 디지털 정보 전달을 위한 전기신호와 외부 장치 구동을 위한 구동 전기신호의 차이를 알 수 있다. 디지털 정보 전달을 위한 전기신호와 외부 장치 구동을 위한 구동 전기신호의 차이를 알 수 있다. TTL(Transistor-Transistor-Logic) IC를 이용하여 LED를 구동하기 위한 전기적․광학적 특성을 알 수 있다. ATmega128의 디지털 I/O 핀으로 논리값을 외부로 입출력할 때 디지털 전압레벨과의 관계를 알 수 있다. ATmega128의 디지털 I/O 핀의 전기적 특성을 이해하고, LED를 연결하여 광속 발산을 위한 구동 방법을 알 수 있다. ATmega128의 디지털 I/O 핀을 이용한 레지스터 설정 방법을 이해하고, B포트의 LED 점멸 방법을 실험을 통해 알 수 있다. 디지털 I/O의 특정 핀을 통해 논리값을 입출력하기 위한 비트 매스킹 방법을 알 수 있다.
목 차 디지털 IC와 외부 인터페이스 디지털 IC를 이용한 LED 구동 (동영상) ATmega128 핀을 이용한 논리값의 외부 입출력 ATmega128의 포트 구성과 레지스터를 이용한 인터페이 스 논리값과 I/O 핀의 디지털 전압레벨과 변환 B포트를 이용한 LED 점멸 (동영상) 3
Section 01 디지털 IC와 외부 인터페이스 사칙연산 식에 숫자를 대입하여 생활에 적용 논리연산 식에 논리 값을 대입하여 생활에 적용 (사례) 방범창살이 정상이고 유리창이 열려 있다면, 침입은 감지되지 않음 (사례) 40인승 버스 8대에 승차할 수 있는 최대 인원은 320
Section 01 디지털 IC와 외부 인터페이스 디지털 정보 표현 숫자 : 2진수 체계를 갖는 한정된 비트의 디지털값으로 변환된 정보 문자 : 한정된 비트 크기의 2진화된 코드로 변환된 정보 영상, 음성 : 샘플링 단위를 중심으로 해상도에 의해 제한된 비트 크기의 코딩 기법으로 변환된 정보 논리 : 1과 0의 2진 논리 정보(참일 때 1, 거짓일 때 0) 디지털 IC 문자, 영상, 음성, 논리 등을 디지털 정보화하고, 디지털 IC 내부에서 전기신호로 빠르게 처리
Section 01 디지털 IC와 외부 인터페이스 정보처리용 디지털 IC의 I/O 장치 인터페이스 디지털시스템의 디지털 IC 사이는 빠른 디지털 정보 연산과 정보 전달 고속의 저전력 신호 사용 디지털시스템의 계산 결과를 자연신호로 변환 사용 연산 결과 정보를 구동 전기신호로 생활 자연현상에 적용 자연현상에 영향을 주기 위한 충분한 전기에너지로 변환하여 장치 구동
Section 01 디지털 IC와 외부 인터페이스 정보 연산을 위한 NOT 게이트의 전기적인 특징 출력이 HIGH일 때, IOH 값 -0.4[mA]는 LED를 구동하기에는 미흡 출력이 LOW일 때, IOL 값 16[mA]는 LED를 구동하기에 충분
Section 01 디지털 IC와 외부 인터페이스 전압의 양수, 음수값은? - 위치에 대한 + 위치의 전압 차 양수 : + 위치의 전압이 더 높음 음수 : - 위치의 전압이 절댓값만큼 더 높음 전류의 양수, 음수값은 양수 : 화살표 방향과 같은 방향으로 전류가 흐름 음수 : 화살표 반대 방향으로 절대값 만큼 전류가 흐름 화살표가 없을 때 양수 : 장치로 흘러 들어가는 양 음수 : 절대값만큼 장치에서 흘러 나가는 양
Section 02 디지털 IC를 이용한 LED 구동 실험 목적 (1) 디지털 정보 전달과 처리에 적합한 디지털 IC를 이용하여 LED 소자를 구동할 수 있는지 확인 (2) 정보처리용 디지털 IC의 디지털 I/O 핀의 공급 전류, 전압 특성을 확인하여 LED를 구동할 수 있는 회로 구성
Section 02 디지털 IC를 이용한 LED 구동 실험 회로 1
Section 02 디지털 IC를 이용한 LED 구동 실험 회로 2
Section 02 디지털 IC를 이용한 LED 구동 실험 결과 및 고찰 LED 전기적•광학적 특성 전기적•광학적 특성과 측정값을 고려하여 어떤 회로가 LED를 구동하기 적합한지 판단
Section 02 디지털 IC를 이용한 LED 구동 LED 구동 (video.zip 참고 / 4-2)
Section 03 ATmega128 핀을 이용한 논리값의 외부 입출력 PA0~PA7, PB0 ~PB7, PC0~PC7, PD0~PD7, PE0~PE7, PF0~PF7, PG0~PG4
Section 03 ATmega128 핀을 이용한 논리값의 외부 입출력 입력 핀 회로에서 디지털 전압레벨로 변환 ATmega128 입력 핀을 통해 내부 논리값(1 또는 0)으로 읽힘 출력 핀 프로그램 수행 결과로 얻은 논리값은 디지털 전압레벨로 출력 출력 신호로 적은 전력이 필요한 외부 장치를 직접 구동 가능
Section 03 ATmega128 핀을 이용한 논리값의 외부 입출력
Section 03 ATmega128 핀을 이용한 논리값의 외부 입출력 5[V] 전원 사용 전압 사례 논리값 출력 1 : 적어도 4.0[V] 이상의 HIGH 디지털 전압레벨 출력 0 : 아무리 높아도 0.7[V] 넘지 않는 LOW 디지털 전압레벨 출력 논리값 인식 1 : 입력 HIGH 디지털 전압레벨, 적어도 3.0[V] 이상의 전압 0 : 입력 LOW 디지털 전압레벨, 아무리 커도 1.0[V] 이하의 전압
Section 03 ATmega128 핀을 이용한 논리값의 외부 입출력 잡음여유 1에 대한 잡음여유 1을 전압레벨로 출력할 때, 최소전압과 1로 인식되는 최소전압 차 5[V] 사례 1을 출력할 때의 최소 전압 : 4.0[V] 1로 인식되는 최소 전압 : 3.0[V] 1에 대한 잡음여유 = 4.0[V] – 3.0[V] = 1.0[V] 0에 대한 잡음여유 0을 전압레벨로 출력할 때, 최대전압과 0으로 인식되는 최대전압의 차 0을 출력할 때의 최대 전압 : 1.0[V] 0으로 인식되는 최대 전압 : 0.7[V] 0에 대한 잡음여유 = 1.0[V] – 0.7[V] = 0.3[V]
Section 03 ATmega128 핀을 이용한 논리값의 외부 입출력 ATmega128 디지털 I/O 핀의 전기적 특성 디지털 IC와 ATmega128 I/O 핀의 전류 특성 비교 외부 장치 구동을 위해 일반 IC보다 더 큰 전류를 공급하거나 흡수 필요
Section 03 ATmega128 핀을 이용한 논리값의 외부 입출력 전류 특성 비교 HIGH 전압레벨이 출력될 때 방출되는 전류 TTL IC : 0.4[mA] ATmega128 : 40[mA] LOW 전압레벨이 출력될 때 흡수되는 전류 TTL IC : 8[mA] ATmega128 : 40[mA]
Section 03 ATmega128 핀을 이용한 논리값의 외부 입출력 HIGH 전압레벨로 LED를 켤 수 있는 회로 비교 ※ TTL IC 규격표의 0.4[mA] 전류로 LED 구동이 어려움 (실제 출력 전류는 규격을 초과한 수 mA 전류가 방출될 수 있음)
Section 03 ATmega128 핀을 이용한 논리값의 외부 입출력 출력 핀 모델링 특성과 실제 특성 출력 핀의 테브낭 등가회로 모델링 테브낭 등가회로의 Vth는 5[V], Zth를 25[Ω]로 가정한 특성곡선
Section 03 ATmega128 핀을 이용한 논리값의 외부 입출력
Section 03 ATmega128 핀을 이용한 논리값의 외부 입출력 최대 절대 정격 정격(Rating)으로 제시하는 값은 그 범위 안에서 사용할 수 있으며, 제조 회사에서 제공 최대 절대 정격은 어떤 경우에서도 꼭 지켜야 하는 엄격한 정격
Section 03 ATmega128 핀을 이용한 논리값의 외부 입출력 고휘도 LED의 전기적 특성 약 500[mW] 이하 소비 전력에서 일반 LED보다 밝은 빛을 방출
Section 03 ATmega128 핀을 이용한 논리값의 외부 입출력 ATmega128 디지털 I/O 핀을 이용한 고휘도 LED 구동 저항값 결정 고휘도 LED HW321A에서 4.2[lm]의 광속을 발산하기 위한 회로 저항값 R 결정 HW321A의 전류-상대광속 특성곡선과, 순방향 전압-전류 특성곡선 참조
Section 03 ATmega128 핀을 이용한 논리값의 외부 입출력 원하는 밝기를 내기 위해 LED에 흘러야 할 전류 ID 결정 전류와 상대광속과의 특성 그래프에서 원하는 전류 확인 : 20[mA] LED의 전압강하 VD 결정 HW321A의 순방향 전압-전류 특성곡선에서 20[mA] 전류가 흐를 때 LED의 전압강하 VD 결정 : 3.25[V] ATmega128 출력 핀의 전압 VAVR 결정 ATmega128 출력 핀의 부하에 따른 전류•전압 특성곡선에서 20[mA] 전류가 방출될 때 ATmega128 출력 핀의 VAVR 결정 : 3.25[V] 저항 양단의 전압강하 VR과 저항값 R 계산
Section 03 ATmega128 핀을 이용한 논리값의 외부 입출력 실제 저항 선택 꼭 맞는 저항이 없으므로, 근사한 저항 사용 : 60[Ω]을 선택할 때 저항 오차 정밀 저항을 선택했을 때 소비 전력 계산 LED의 소비 전력은 65[mW]로서 최대 절대 정격의 소비전력 안에 있음 저항의 소비 전력은 25[mW]이므로, 정격이 1/8[W] 저항소자 선택 가능 60[Ω] 근사 저항으로 계산된 소비 전력과 오차는?
Section 04 ATmega128의 포트 구성과 레지스터를 이용한 인터페이스 ATmega128 I/O 핀의 구조 ATmega128의 디지털 입출력을 위한 핀 구조
Section 04 ATmega128의 포트 구성과 레지스터를 이용한 인터페이스 Pxn 핀 방향 설정을 위한 레지스터 비트명과 신호 Pxn 핀 출력 설정 DDxn(x는 A~G, n은 0~7) 플립플롭에 1을 기록 Three-state Buffer는 정상적으로 동작 PORTxn(x는 A~ G, n은 0~7) 플립플롭 값이 Pxn 핀으로 출력
Section 04 ATmega128의 포트 구성과 레지스터를 이용한 인터페이스 Pxn 핀 입력 설정 DDxn(x는 A~G, n은 0~7) 플립플롭에 0을 기록 Three-state Buffer는 고저항(High-impedance) 상태 Pxn 핀의 디지털 전압레벨은 슈미트 트리거 버퍼를 통해 잡음에 둔감 PINx 레지스터의 PINxn 비트를 읽는 순간, 내부 데이터 버스로 입력 내부 풀업저항 연결 PUD는 0이고, PORTxn이 1이면 내부 풀업용 스위칭 트랜지스터가 ON되어 내부 풀업저항 연결 내부 풀업저항 개방 PUD는 1 혹은 PORTxn이 0이면 내부 풀업용 스위칭 트랜지스터가 OFF되어 풀업저항이 연결되지 않음
Section 04 ATmega128의 포트 구성과 레지스터를 이용한 인터페이스 ATmega128 디지털 I/O 레지스터 역할과 포트 구성 DDRx 레지스터 데이터 방향 레지스터(Data Direction Register)로서, 포트에 포함된 핀의 입출력 방향 결정 PORTx 레지스터 포트에 대한 데이터 레지스터(Data Register) 출력 방향일 때, 논리값을 디지털 전압레벨로 출력 0이 되어 핀이 입력 방향일 때, PORTxn 값이 1로 설정되면 ATmega128 내부에서 Pxn 핀에 풀업저항 연결 PINx 레지스터 입력 핀 레지스터 핀이 입력 방향일 때, 핀의 디지털 전압레벨을 논리값으로 읽음
Section 04 ATmega128의 포트 구성과 레지스터를 이용한 인터페이스 레지스터와 포트 구성 53개 Pxn과 연결된 DDRx, PORTx, PINx 레지스터가 8비트 버스와 연결 A포트에서 F포트까지는 DDRx 레지스터, PORTx 레지스터, PINx 레지스터가 8비트로 구성 G포트는 하위 5비트만 사용할 수 있게 구성
Section 04 ATmega128의 포트 구성과 레지스터를 이용한 인터페이스 DDRx, PORTx, PINx 레지스터 DDRx 레지스터의 초깃값이 0이므로 최초 설정은 모두 입력 입력인 상황에서 PORTx 레지스터의 초깃값이 0 Pxn 핀은 풀업저항이 연결되지 않은 고저항(High-impedance)인 입력 핀 Pxn 핀에 인가되는 초기 전압은 예측할 수 없어 PINx 초깃값이 N/A
Section 05 논리값과 I/O 핀의 디지털 전압레벨과 변환 입출력 방향 설정과 논리값 출력 방법 출력 핀 설정과 논리값을 디지털 전압레벨로 출력
Section 05 논리값과 I/O 핀의 디지털 전압레벨과 변환 PINxn 입력 핀의 전압레벨 검사 HIGH 디지털 전압레벨 : 0이 아닌 값(TRUE) LOW 디지털 전압레벨 : 0(FALSE)
Section 05 논리값과 I/O 핀의 디지털 전압레벨과 변환 #include <avr/io.h> 문장을 프로그램 앞에 넣어 정의된 레이블 사용 DDxn, Pxn, PINxn 모두 같은 상수로 정의 되어 있음 간단히 Pxn으로 사용해도 무방
Section 05 논리값과 I/O 핀의 디지털 전압레벨과 변환 DDRx 레지스터, PORTx 레지스터, PINx 레지스터의 비트 설정 상수를 사용한 핀 방향 설정 출력 방향 설정 핀 : PA7, PA6, PA5, PA4 입력 방향 설정 핀 : PA3, PA2, PA1, PA0 하나 또는 두 핀만의 방향을 설정하려고 해도 8비트 모두 설정 다른 비트들보다 앞서 설정된 정보 추적이 필요 가독성이 떨어짐
Section 05 논리값과 I/O 핀의 디지털 전압레벨과 변환 비트 명칭과 비트 연산을 사용한 핀 방향 설정 다른 비트와 상관없이 비트 7과 비트 6만을 1로 만들 수 있음 기존 비트 설정을 추적할 필요가 없음 C 언어 실행 순서에 따라 연산 ❷ ❶
Section 05 논리값과 I/O 핀의 디지털 전압레벨과 변환 ❸ ❹
Section 05 논리값과 I/O 핀의 디지털 전압레벨과 변환 설정 값 변경 ❶ 괄호부터 처리 PORTA와 0xF를 AND시켜 0 위치를 클리어함 ❸ 1 << PA6 ❷ 1 << PA7
Section 05 논리값과 I/O 핀의 디지털 전압레벨과 변환 ❹ (PORTA & 0xF) | 1 << PA7 | 1 << PA6 PORTA의 8비트 중 상위 4비트 PA7, PA6, PA5, PA4 핀만 갱신 갱신 전압레벨은 HIGH, HIGH, LOW, LOW PA3, PA2, PA1, PA0는 출력값이 변하지 않음
Section 05 논리값과 I/O 핀의 디지털 전압레벨과 변환 PINx 레지스터로 특정 핀의 논리값을 입력하는 방법 입력 PA7, PA6 두 핀의 디지털 전압레벨을 value의 하위 두 비트로 입력 ❶ DDRA = DDRA & ~(1 << PA7) & ~(1 << PA6); A포트의 PA7과 PA6 핀은 입력 방향으로 설정 ❷ PINA >> PA6 >>의 논리 천이 동작이 PA6회, 즉 6회 수행될 때 최상위 비트는 0으로 채워짐 value 변수는 PA7, PA6 핀의 논리값을 하위 비트로 갖게 됨
Section 05 논리값과 I/O 핀의 디지털 전압레벨과 변환 PINx 레지스터로 특정 핀의 디지털 전압레벨 판정 if(조건식) 문에서 조건식이 0이면 거짓, 0이 아니면 참으로 판별 PA5 핀이 HIGH 전압레벨이면, 조건식이 0이 아니므로 참 PA5 핀이 HIGH 전압레벨이면, 조건식이 0이므로 거짓
Section 05 논리값과 I/O 핀의 디지털 전압레벨과 변환 ATmega128에 연결된 회로의 디지털 입출력 설정 상수를 사용한 입출력 핀 방향 설정 비트 명칭을 사용한 핀 방향 설정
Section 06 B포트를 이용한 LED 점멸 실험 목적 B포트에 연결된 스위치와 LED를 이용하여 입출력 동작 수행 스위치가 눌릴 때 LED ON 스위치 S0 LED D0, D1을 ON/OFF 스위치 S1 LED D2를 ON/OFF 스위치 S2 LED D3을 ON/OFF 스위치 동작 눌리지 않으면 HIGH 전압레벨 눌리면 LOW 전압레벨
Section 06 B포트를 이용한 LED 점멸 <레이블 정의> 출력 핀 결정 (나머지는 입력) S0 스위치 눌리면 참 D0, D1 LED 켬 D0, D1 LED 끔
Section 06 B포트를 이용한 LED 점멸 LED 점멸 (video.zip 참고 / 4-6)
IT CookBook, 마이크로컨트롤러 AVR ATmega128 Thank You IT CookBook, 마이크로컨트롤러 AVR ATmega128