• 검색 결과가 없습니다.

폴링과 인터럽트를 이용한 장치 인터페이스

N/A
N/A
Protected

Academic year: 2022

Share "폴링과 인터럽트를 이용한 장치 인터페이스"

Copied!
31
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

폴링과 인터럽트를 이용한 장치 인터페이스

(2)

 폴링과 인터럽트를 이해하고 폴링으로 에지를 검출할 수 있는 능력을 가질 수 있다.

 폴링을 이용하여 EEPROM을 쓰고 읽는 방법을 이해할 수 있다.

 외부 인터럽트를 사용하는 방법을 이해하고 사용할 수 있는 능력을 키울 수 있다.

 주 프로그램과 인터럽트 서비스 루틴 사이를 요청/응답 인터페이스로 연결함으로써 상태도 기반 알고리즘 구성을 이해할 수 있다.

학습목표

(3)

1. 폴링을 이용한 장치 인터페이스

2. 인터럽트를 이용한 장치 인터페이스

3. 인터럽트 활성화와 인터럽트 서비스 루틴 연결 4. 외부 인터럽트

5. 주 프로그램과 인터럽트 서비스 루틴의 요청/응답 인터페 이스

6. 포토인터럽터 인터페이스 (동영상)

7. LCD 문자 디스플레이 인터페이스 (동영상)

목 차

(4)

Section 01 폴링을 이용한 장치 인터페이스

 ATmega128

다양한 연결 장치를 구동시킴

시스템을 쉽게 제어할 수 있도록 많은 주변 장치를 포함한 단일칩

메모리, 타이머/카운터, 아날로그 비교기, ADC, 와치독 타이머, 시리얼 통신, SPI 통신, 2선 직렬통신, JTAG 기능 등을 포함

내부 또는 외부 장치의 동작은 제어 프로그램에 의해 통제

장치 상태 확인 방법

• 폴링

• 인터럽트

(5)

Section 01 폴링을 이용한 장치 인터페이스

 폴링을 이용한 외부 장치 인터페이스

폴링

• 내부 또는 외부 장치의 동작은 제어 프로그램에 의해 통제

• 주 프로그램 안에서 CPU 명령어로 반복적으로 장치 상태 검사

• 상태를 감지하기 위한 폴링 구분

» 레벨감지 폴링 : 전압레벨 값을 감지하기 위한 폴링

» 에지감지 폴링 : 디지털 전압레벨 값의 변경(에지) 감지

레벨감지와 에지감지

(6)

Section 01 폴링을 이용한 장치 인터페이스

레벨감지를 위한 폴링 코드

• 핀의 논리값(전압레벨)이 1(HIGH)일 때를 감지하기 위한 코드

• 핀의 논리값(전압레벨)이 0(LOW)일 때를 감지하기 위한 코드

(7)

Section 01 폴링을 이용한 장치 인터페이스

에지감지를 위한 폴링 코드

• 상승에지 감지하는 코딩 사례

» 플로차트

» 이전 장치값을 prev 변수에, 검사 시점의 장치값을 now 변수에 넣고 검사

(8)

Section 01 폴링을 이용한 장치 인터페이스

 폴링을 이용한 내부 장치 EEPROM 인터페이스

내장된 장치 EEPROM의 특징

• EEPROM(Electrically Erasable and Programmable ROM)은 전기적으로 지우고 다시 기록할 수 있음

• 데이터 메모리에 해당

• 4K바이트의 크기

• 100,000회 이상 읽기/쓰기 가능

• 전원 공급이 되지 않아도 기록된 데이터가 소멸되지 않는 비 휘발성 메모리

• SRAM과 달리 특수한 쓰기/읽기 방법을 사용해야 함

• EEPROM 쓰기/읽기 동작에 필요한 주요 레지스터

EEARH, EEARL, EEDR, EECR 레지스터

(9)

Section 01 폴링을 이용한 장치 인터페이스

EEAR : EEPROM 주소 레지스터(EEPROM Address Register)

• 주소를 지정하기 위한 12비트 설정 레지스터

• 4K바이트 0x000부터 0xFFF 사이로 지정

• #include <avr/io.h>를 포함해 unsigned int 자료형 EEAR로 사용 가능

(10)

Section 01 폴링을 이용한 장치 인터페이스

EEDR : EEPROM 데이터 레지스터(EEPROM Data Register)

• 특정 주소 EEAR에 기록할 8비트 데이터 설정

• 특정 주소 EEAR에서 읽은 8비트 데이터를 보관

• #include <avr/io.h>를 포함해 unsigned char 자료형 EEDR로 사용 가능

(11)

Section 01 폴링을 이용한 장치 인터페이스

EECR : EEPROM 제어 레지스터(EEPROM Control Register)

• EEPROM 쓰기/읽기를 제어하기 위한 상태 및 제어 비트 포함

(12)

Section 01 폴링을 이용한 장치 인터페이스

폴링을 이용한 EEPROM 쓰기 동작

(13)

Section 01 폴링을 이용한 장치 인터페이스

❶ EECR 레지스터의 EEWE 비트가 0이 될 때까지 기다림

❷ SPMCSR 레지스터의 SPMEN 비트가 0이 될 때까지 기다림

» 부트로더에서 CPU가 플래시 프로그램 메모리에 쓰기 동작을 하는 경우에만 검사 필요

❸ 사용할 EEPROM 주소를 EEAR 레지스터에 기록

❹ 기록할 EEPROM 데이터를 EEDR 레지스터에 기록

❺ EECR 레지스터의 EEWE 비트에 0을 쓰고, EEMWE 비트에 1을 기록

❻ EEMWE를 1로 설정한 후, 4 클록 사이클 안에 EEWE에 1을 기록

» ➎와 ➏ 단계 사이에 인터럽트가 발생하면, 쓰기 동작 실패

» 이를 위해 ➌ ~ ➏ 단계 동안 cli( ) 함수로 전체 인터럽트를 비활성화하는 것이 바람직함

(14)

Section 01 폴링을 이용한 장치 인터페이스

(15)

Section 01 폴링을 이용한 장치 인터페이스

폴링을 이용한 EEPROM 읽기 동작

(16)

Section 02 인터럽트를 이용한 장치 인터페이스

 인터럽트를 이용한 장치 인터페이스

내부 장치의 개별 인터럽트, 전역 인터럽트 활성화 비트를 1로 셋

해당 사건이 감지되면 인터럽트 플래그가 셋

인터럽트 서비스 루틴이 자동으로 실행 (PC가 이동)

인터럽트는 외부 또는 내부에서 발생되는 사건에 대하여 CPU 하드웨어의 도움을 받아 자동으로 감지되고, 인터럽트 서비스 루틴이 자동으로 실행되는 메커니즘

(17)

Section 02 인터럽트를 이용한 장치 인터페이스

 ATmega128 인터럽트 발생 유형 및 원인

내부 또는 외부에서 예기치 않은 사건이 발생하면, 적절하게 자동 반응

특정 위치에서 프로그램을 시작하는 예외 처리 하드웨어를 가짐

범용 마이크로프로세서의 인터럽트 발생 유형

• 내부 또는 외부 요인에 의한 리셋이 발생하는 경우

• 0으로 나누는 등 불가능한 연산을 방지하기 위한 경우

• 멀티프로그래밍 지원을 위한 명령어 예외 처리의 경우

• 멀티프로그래밍 지원을 위한 메모리 보호 또는 가상 메모리를 위한 경우

• I/O 장치 처리를 위한 장치의 상태 변화로 유발되는 경우

• 타이머를 이용한 자원 관리를 위한 경우

(18)

Section 02 인터럽트를 이용한 장치 인터페이스

ATmega128의 인터럽트 인터페이스

• 범용 마이크로프로세서가 아닌 장치 제어로 시스템을 효과적으로 관리

• I/O 장치 처리를 강화하기 위한 인터럽트를 많이 제공

• 외부 장치 인터페이스

» 외부에 연결될 장치와의 인터럽트 인터페이스로 8개의 외부핀 인터럽트 제공

• 내부 장치 인터페이스

» EEPROM, USART 등 내장된 장치와 인터럽트를 통한 인터페이스

(19)

Section 02 인터럽트를 이용한 장치 인터페이스

유형별 ATmega128 인터럽트와 발생 원인

(20)

Section 02 인터럽트를 이용한 장치 인터페이스

(21)

Section 02 인터럽트를 이용한 장치 인터페이스

(22)

Section 02 인터럽트를 이용한 장치 인터페이스

 인터럽트 발생과 인터럽트 서비스 루틴 실행

① 1단계

SREG의 I-비트를 0으로 클리어, 현재 실행 중인 명령어를 실행 완료 ② 2단계

스택 포인터(SP)를 감소 ③ 3단계

PC를 SP가 가리키는 스택에 보관 ④ 4단계

PC에 인터럽트 벡터 주소를 넣고, 인터럽트 발생 플래그를 0으로 클리어 ⑤ 5단계

변경된 PC에서부터 인터럽트 서비스 루틴이 수행

(23)

Section 02 인터럽트를 이용한 장치 인터페이스

자동 처리 과정

• 1단계

» SREG의 I-비트를 0으로 클리어, 현재 실행 중인 명령어를 실행 완료

(24)

Section 02 인터럽트를 이용한 장치 인터페이스

• 2단계

» 다음 실행될 명령어 주소를 간직한 PC를 스택에 보관하기 위해 스택 포인터(SP)를 감소

(25)

Section 02 인터럽트를 이용한 장치 인터페이스

• 3단계

» PC를 SP가 가리키는 스택에 보관

» 인터럽트 서비스 프로그램이 종료되면, 돌아갈 주소가 스택에 저장됨

(26)

Section 02 인터럽트를 이용한 장치 인터페이스

• 4단계

» PC에 발생된 인터럽트 벡터 주소 V1을 넣음

» 개별 인터럽트 발생 플래그를 0으로 클리어

(27)

Section 02 인터럽트를 이용한 장치 인터페이스

• 5단계

» PC 주소 V1에서 명령어 JMP를 명령어 레지스터(IR)에 인출하면서 JMP 명령을 실행하여 인터럽트 서비스 프로그램을 수행

» ATmega128은 35개의 인터럽트가 있고, 프로그램 메모리 0번지부터 인터럽트 벡터 순으로 JMP 명령을 놓아 해당 서비스 루틴으로 JMP

ATmega128은 상태 레지스터를 프로그래머가 저장할 필요가 있음

» gcc 컴파일러가 상태 레지스터와 범용 레지스터를 저장함

(28)

Section 02 인터럽트를 이용한 장치 인터페이스

 인터럽트 서비스 루틴에서 주 프로그램으로 복귀

RETI 명령어를 이용한 복귀 처리 과정

• 1단계

» PC가 지칭하는 메모리에서 인출된 명령어를 디코딩

» RETI (그림의 IRET는 RETI의 오타)에 해당되면 주 프로그램으로 복귀 동작이 수행되 기 시작

(29)

Section 02 인터럽트를 이용한 장치 인터페이스

• 2단계

» 스택포인터(SP)가 가리키는 스택에서 값을 읽어 PC로 옮겨 놓음

» 전역 인터럽트 I-비트를 1로 만들어 다시 인터럽트 발생을 허용

(30)

Section 02 인터럽트를 이용한 장치 인터페이스

• 3단계

» PC의 위치가 P로 복원되었으므로,

» 주소 P에서 명령어 ADD를 명령어 레지스터(IR)에 인출하여, 중단되었던 프로그램을 계속 수행

(31)

Section 02 인터럽트를 이용한 장치 인터페이스

인터럽트 서비스 루틴 진입과 종료 시 레지스터 보관과 복구

• PC는 인터럽트 처리 과정에서 자동 보관과 복구

• SREG와 범용 레지스터는 PUSH/POP 명령으로 보관과 복구 필요

• 인터럽트와 CPU 레지스터의 보관과 복구

참조

관련 문서

회계의 순환과정이 무엇인지 이해할 수 있다. 거래 기록의 첫 단계인 분개의 의미를 이해하고 실제 거래에 적용시켜볼 수 있다. 분개의 다음 단계인 전기에 대해

– 뇌파를 이용한 인터페이스, 감성컴퓨터, 뇌파로 가전기기 작동 – 촉각을 이용한 인터페이스 (Haptic Feedback).

위하여 연결설정(SYN) 요청 à 위조된 IP 주소로 부터 응답(ACK)을 받을 때까지 대기 q 위조된 대량의 연결설정(SYN) 요청 패킷이 수신되면 서버의 대기

교수전략의 의미를 이해할 수 있다. 다양한 교수전략을 탐구할 수 있다.. 가르치는 교사의 어떤 교수방법/교수전략이 나의 학습에 가장 도움이 되었는가?..

즉 , 이벤트 처리용 리스너 클래스 작성시 리스너 인터페이스 를 이용한 것이 아니라, 어댑터 클래스를 이용함으로써 불필 요한 코드를 줄일 수

주 프로그램에서 delay( ) 함수를 실행하는

예: 두 물체의 마찰 시 생겨나는 전하는 새로이 창조되는 것이 아니라 한 물체에서 다른 물체로 이동함에 의하여 나타나는 알짜전하

ü a 접점과 b 접점 사이를 훨씬 빈번하게 스위칭 함으로써 고조파가 적게 포함되어 정현파에 더욱 가까운 출력전압 파형을 생성할 수 있다.