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

Similar documents
슬라이드 1

AVR Atmega128

슬라이드 1

<4D F736F F F696E74202D2037C0E55FC0CEC5CDB7B4C6AEC0C720B5BFC0DB2E707074>

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

Microsoft PowerPoint - 08-MP-4-interrupt

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

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

ATmega128

<4D F736F F F696E74202D2037C0E55FC0CCC0C0C7F55FBFCFBCBA205BC8A3C8AF20B8F0B5E55D>

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

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

<BDC7C7E83520BFB9BAF1BAB8B0EDBCAD2E687770>

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

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

Chapter ...

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202831C1D6C2F72C2032C1D6C2F729>

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

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

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

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

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A636C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

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

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

Microsoft PowerPoint - polling.pptx

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

PowerPoint 프레젠테이션

슬라이드 1

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

2 PX-8000과 RM-8000/LM-8000등의 관련 제품은 시스템의 간편한 설치와 쉬운 운영에 대한 고급 기술을 제공합니다. 또한 뛰어난 확장성으로 사용자가 요구하는 시스템을 손쉽게 구현할 수 있습니다. 메인컨트롤러인 PX-8000의 BGM입력소스를 8개의 로컬지

Microsoft PowerPoint - es-arduino-lecture-03

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

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

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202831C1D6C2F72C2032C1D6C2F729>

2. Deferred Interrupt Processing A. Binary Semaphores를이용한동기 (Synchronization) i. Binary Semaphores는 Interrupt가발생하였을때특정한 를 Unblock 하는데사용할수있다. 이러한기능은 In

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

Microsoft PowerPoint - Chapter 8_USART Serial Communication

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

<4D F736F F D20BDBAC5D7C7CE20B6F3C0CEC6AEB7B9C0CCBCADB0ADC1C2202D203420C7C1B7CEB1D7B7A1B9D62E646F63>

ADP-2480

AVR-GCC SRAM 에서의변수및상수특별히속성을정하지않고변수를정의하면 SRAM 영역에저장된다. 이것들은외부메모리에저장되는경우에비하여빠르게엑세스할수있다. 축약표현은 <stdio.h> 에정의되어있다. 그러나, <io.h> 를인클루드하면내부적으로 <stdio.h> 파일을자

학습목차 r 개념으로살펴보는 CPU 속의제어장치 r 마이크로연산 r 제어장치의동작 r 마이크로프로그램을이용한제어 컴퓨터구조 제어장치

<BFACBDC0B9AEC1A6C7AEC0CC5F F E687770>

ATmega128 교재 - 8장 EEPROM.hwp

2주차: 입출력 제어 복습

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

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

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

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

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

Microsoft Word doc

Microsoft PowerPoint - 9.Serial.pptx

59

마이크로프로세서 개요

<BFACBDC0B9AEC1A6C7AEC0CC5F F E687770>

4. 다음주소지정방식중속도가가장빠른주소방식은? 가. immediate addressing mode 나. direct addressing mode 다. indirect addressing mode 라. index register. 5. 간접주소 (indirect addr

Microsoft Word - STM32 BxCAN.doc

KEY 디바이스 드라이버

Microsoft PowerPoint os2.ppt [호환 모드]

[8051] 강의자료.PDF

Microsoft Word - PIC16x_Section20_Comparator_31020a.doc

¾Ë·¹¸£±âÁöħ¼�1-ÃÖÁ¾

01....b

2007백서-001-특집

(291)본문7

00목차

프로그램카운터 (Program Counter) 명령레지스터 (Instruction Register) 누산기 (AC: Accumulator) 상태레지스터 (Status Register) PSWR(Program Status Word Register) 메모리주소레지스터 (M

API 매뉴얼

MAX232 MAXIM사에서생산되는 RS-232통신을가능토록해주는송수신 IC이다. 송수신드라이브를각각 2개씩가지고있다. AVR과컴퓨터가인식하는 0과 1의값이다르기때문에.. 마이컴컴퓨터 이차이를해결해주는것이다. 0 0V -10V 1 5V 10V TTL IC 의전원단자와다

lecture4(6.범용IO).hwp

MicrocontrollerAcademy_Lab_ST_040709

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

온라인 IT 교육최강 ( 강의정보처리필기강사조대호 차시명 [CA-06 강 ] 프로세서와명령어차시 6 차시 학습내용 프로세서와명령어 학습목표 컴퓨터의구조와프로세서에대해이해할수있다 컴퓨터의명령어에대해이해할수있다 학습내용 1. 컴퓨터의구성 - 1

PowerPoint 프레젠테이션

Here is a "PLDWorld.com"... // EXCALIBUR... // Additional Resources // µc/os-ii... Page 1 of 23 Additional Resources: µc/os-ii Author: Source: HiTEL D

C & System

<4D F736F F D20C0DBC7B0C6ED5FBDBAC5D7C7CE20B6F3C0CEC6AEB7B9C0CCBCAD20B0B3B9DF2E646F63>

개요

Computer Architecture

CAN 통신

1. 제품소개 그림. 1.1 이란? DC 모터구동시하드웨어제작에소요되는시간을단축시켜프로그래밍연구개발및학습효과를극대화시켜주는 입니다. 또한당사 DEV 보드와 1P 점퍼클립케이블을이용하여연동이가능하며, 산업용 DC 모터의정회전, 역회전구동및속도제어시유용하게사용되는 입니다.

논리회로설계 6 장 성공회대학교 IT 융합학부 1

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

2014밝고고운동요부르기-수정3

2005프로그램표지

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

RVC Robot Vaccum Cleaner

CHAPTER 2 마이크로컨트롤러구조이해하기 가. ATmega128 기능 나. CRX10 구조

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

CANTUS Evaluation Board Ap. Note

untitled

AVR ATmega128 소개 AVR ATmega128 IT Eng 학습목표 ü 다양한 AVR 패밀리와소자특징을알아보고, 제어환경에따라 AVR 소자를선택하여개발할수있는융통성을이해할수있다. ü ATmega128 내부구조에서메모리공간, I/O 공간의프로그램과데이터를처리하기

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - ch01-1 AVR의 특징 및 ATmega128의 내부구조1.pptx

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

Microsoft PowerPoint - chap10-함수의활용.pptx

Transcription:

CHAPTER 7 인터럽트 가. 레지스터구조이해하기 나. 엔코더제어하기

인터럽트 (Interrupt) 범용입출력포트에서입출력의내용을처리하기위해매번입출력을요구하는플래그를검사하는일 (Pollong) 에대하여마이크로컨트롤러에게는상당한시간을소비하게만든다. 인터럽트란 CPU가현재처리하고있는일보다급하게처리해야할사건이발생했을때, 현재수행중인일을중단하고급한일을처리한후에본래의일을다시수행하는것을말한다. 즉, 프로그래밍된순서대로일을처리하는것이아니라발생시기를예측할수없는사건을처리하는데효과적인방법이다. 인터럽트요청이들어오면 CPU는인터럽트를수용할수도있고무시할수도있다. 요청된인터럽트에대해항상응답해야하는인터럽트를마스크불가능 (Non maskable, NMI) 인터럽트라하고, 그렇지않은경우를마스크가능 (Maskable) 인터럽트라한다. 인터럽트가발생하면 CPU는현재수행중인프로그램을멈추고상태레지스터와 PC(Program Counter) 등을스택에잠시저장한후인터럽트서비스루틴 (ISR) 으로점프한다. 인터럽트서비스루틴을실행한후에는이전의프로그램으로복귀하여정상적인절차를실행한다. 인터럽트처리과정은다음과같이요약할수있다. 인터럽트가준비된장치는인터럽트요구플래그비트를세트하고 CPU에게인터럽트를요구한다. CPU는인터럽트확인 (INTA : interrupt acknoledge) 신호를보내고, INTA를받은입출력장치는인터럽트요구 (INTR : interupt request) 신호를삭제한다. CPU는 PC, PSW, 레지스터등을스택에저장한다 (PUSH). CPU 는인터럽트서비스루트 (ISR) 의주소를프로그램카운터 (PC) 에적재한다. 인터럽트서비스루틴을수행한다. PSW, 레지스터등을스택으로부터복귀한다 (POP). 본래의메인프로그램으로복귀한다. AVR ATmega128 마이크로컨트롤러는 RESET 벡터등을합쳐서 35 개의인터럽트 벡터를가지고있으며, 그림 5.1 과같이나타낸다.

[ 그림 5.1] 인터럽트벡터 Vector 번호 프로그램주소 소스 인터럽트 31 $003C USART1, RX USART1, Rx Complete 32 $003E USART1, UDRE USART1, Data register Empty 33 $0040 USART1, TX USART1, Tx Complete 34 $0042 TWI To-ire Serial Interface 35 $0044 SPM READY Store program memory Ready

아래의표는 BOOTRTS 와 IVSEL 비트를조작함으로써 RESET 및인터럽트벡터의 시작주소가변경되는것을나타낸다. BOOTRST IVSEL Reset address Interrupt Vector 시작주소 1 0 $0000 $0002 1 1 $0000 Boot Reset Address + $0002 0 0 Boot Reset Address $0002 0 1 Boot Reset Address Boot Reset Address + $0002 AVR ATmega128의일반적인경우, 즉 BOOTRST = 1이고, IVSEL = 0인경우에해당되는인터럽트벡터주소와이를정의한 AVRStudio에서정의한헤더파일인 iom128.h의내용을살펴보면자세한내용을볼수있다. 그림 5.2는인터럽트벡터를정의한부분을발췌하였다.

[ 그림 5.2] 인터럽트벡터 그리고 BOOTRST = 1, IVSEL = 1 이고, 부트사이즈가 8K 바이트로설정되어있으 면그림 5.3 과같은 RESET 벡터와인터럽트벡터의어드레스가변경됨을알수있 다. [ 그림 5.3] 인터럽트벡터어드레스변경 또한 BOOTRST = 0, IVSEL = 0 이고, 부트사이즈가 8K 바이트로설정되어있으면 그림 5.4 와같은 RESET 벡터와인터럽트벡터의어드레스가변경됨을알수있다.

[ 그림 5.4] 인터럽트벡터어드레스변경 마지막으로 BOOTRST = 0, IVSEL = 1 이고, 부트사이즈가 8K 바이트로설정되어 있으면그림 5.5 와같은 RESET 벡터와인터럽트벡터의어드레스가변경됨을알 수있다. [ 그림 5.5] 인터럽트벡터어드레스변경 가. 레지스터구조이해하기 1) MCUCR(MCU Control Register) 그림 5.6 과같이 MCUCR 레지스터는인터럽트의벡터의위치를설정하고또는외 부메모리를사용할경우에웨이트사이클의개수를설정할때사용한다. [ 그림 5.6] MCUCR 레지스터

IVSEL = 0 : 인터럽트벡터는플래시메모리의시작점 ($0000) 에위치하게된다. IVSEL = 1 : 언터럽트벡터는플래시메모리의 Boot Loader section의시작점으로이동한다. Boot Loader section의시작점의어드레스는 BOOTSZ 비트에의해서결정되며, 인터럽트벡터의예기치않은위험을방지하기위해서 IVSEL 비트를설정하는순서는다음과같다. 1. IVCE(Interrupt Vector Change Enable) 비트에 1 을쓴다. 2. 4 사이클이내에 IVCE = 0으로설정하고, IVSEL에는원하는비트를설정한다. 이와같은순서로실행하면인터럽트는자동으로 disable되는데, 정확하게는 IVCE가 1 로셋되는사이클에서인터럽트가 disable로된다. IVCE = 1 : IVSEL 비트를변경할수있다. IVCE 비트는 IVSEL 비트를변경 하고난후 4 사이클이지나면하드웨어에의해서 0 으로클리어된다. 2) 외부인터럽트 (External Interrupt) AVR ATmega128의외부인터럽트는 INT0~INT7 핀에이벤트가인가됨으로써발생한다. 이벤트 (Event) 는크게레벨방식 (Level mode) 과에지방식 (Edge mode) 으로나뉜다. AVR ATmega128의외부인터럽트는하강에지, 상승에지, Lo level에서발생될때인터럽트가발생된다. 이것을설정하기위해서 EICRA(External Interrupt Control Register A) 와 EICRB(External Interrupt Control Register B) 를선택한다. PE4~PE7, PD0~PD3(INT0~7) 핀이출력으로설정되어있어도인터럽트는발생된다. 즉, DDRn을통해 I/O의방향을별도로설정할필요가없다. EICRA(External Interrupt Control Register A) 그림 5.7 과같이 EICRA 레지스터는 interrupt sense control 및 MCU 의일반적인 기능을설정하는데사용한다. [ 그림 5.7] EICRA 레지스터 외부인터럽트 0~3 은전역인터럽트 (SREG I 비트 ) 와 EIMSK 의개별인터럽트 (INT3~INT0) 를설정함으로써발생된다. 레벨과에지에대해서는아래와같다.

ISCn1 ISCn0 설명 0 0 INTn의 Lo level에서인터럽트를발생한다. 0 1 예약 1 0 INTn의하강에지에서인터럽트를발생한다. 1 1 INTn의상승에지에서인터럽트를발생한다. EICRB(External Interrupt Control Register B) 그림 5.8과같이 EICRB 레지스터는다기능비트로구성되어있다. [ 그림 5.8] EICRB 레지스터 외부인터럽트 4~7 는전역인터럽트 (SREG I 비트 ) 와 EIMSK 의개별인터럽트 (INT7~INT4) 를설정함으로써발생된다. 레벨과에지에대해서는아래와같다. ISCn1 ISCn0 설명 0 0 INTn의 Lo level에서인터럽트를발생한다. 0 1 INTn 핀에논리적인변화가발생할경우에인터럽트가발생한다. 1 0 INTn의하강에지에서인터럽트를발생한다. 1 1 INTn의상승에지에서인터럽트를발생한다. EIMSK(External Interrupt Mask Register) 그림 5.9 와같이 EIMSK 레지스터는 INT0~INT7 의개별인터럽트를설정한다. [ 그림 5.9] EIMSK 레지스터 이레지스터에의비트에 1 을쓰고, SREG 레지스터의 I 비트가 1 로설정 되어있으면외부인터럽트는 enable 된다. EICRA 와 EICRB 레지스터의 ISCn1 과 ISCn0 의비트를설정함으로써에지또는레벨방식을선택할수있다. EIFR(External Interrupt Flag Register)

그림 5.10 과같이 EIFR 레지스터는 EIMSK 레지스터에서설정한개별인터럽트의 상태를나타낸다. [ 그림 5.10] EIFR 레지스터 INT0~INT7 핀에에지또는논리적인변화에서트리거되어인터럽트가요구되면, INTF0~INTF7 비트는 1 로셋된다. SREG 레지스터의 I 비트와 EIMSK 레지스터의 INT0~INT7 비트가 1 로설정되어있으면, MCU는해당하는인터럽트벡터로점프한다. 인터럽트서비스루틴 (ISR) 이실행되면 INTF0~INTF7 비트는자동으로 0 으로클리어되고, 이 INTF0~INTF7 비트에논리적으로 1 을쓰면클리어가되며 INT0~INT7이레벨인터럽트로설정되면 INTF0~INTF7 비트는자동으로클리어된다.

나. 엔코더제어하기 엔코더는그림 5.11과같은원리로동작하게되며, 시계방향으로회전시 B상의 ON신호가 A상의 ON신호보다먼저인식이되어상위신호의출력신호를내보낸다. 그와반대로반시계방향으로회전시 A상의 ON신호가 B상의 ON신호보다먼저인식되어하위신호의출력신호를내보낸다. 각각의출력신호를 ATmega128의입력신호로간주되어읽어들어카운트동작에따라모터회전축의위치정보를얻어낼수있다. [ 그림 5.11] 엔코더동작원리 1) 활용실습 Q : 5.1_ 손으로로봇을밀어오른쪽모터에서발생되는엔코더값을 A 상과 B 상 으로나누어도트매트릭스에출력하기 A : #include<avr/io.h> #include <avr/signal.h>

SIGNAL(SIG_INTERRUPT0) PORTA=0xE0; PORTC=PIND&0xFE; SIGNAL(SIG_INTERRUPT1) PORTA=0x07; PORTC=PIND&0xFD; void main(void) DDRA=0xFF; DDRC=0xFF; DDRD=0x00; EIMSK =0x03; EICRA =0x0F; EIFR =0x03; sei(); hile(1); 참고 : 그동안학습한내용을기반으로프로그램을작성하시오. Q : 5.2_ 손으로로봇을밀어왼쪽모터에서발생되는엔코더값을 A 상과 B 상으 로나누어도트매트릭스에출력하기 A :

#include<avr/io.h> #include <avr/signal.h> SIGNAL(SIG_INTERRUPT2) PORTA=0xE0; PORTC=PIND&0xFB; SIGNAL(SIG_INTERRUPT3) PORTA=0x07; PORTC=PIND&0xF7; void main(void) DDRA=0xFF; DDRC=0xFF; DDRD=0x00; EIMSK =0x0C; EICRA =0xF0; EIFR =0x0C; sei(); hile(1); Q : 5.3_ 손으로로봇을밀어양쪽모터에서발생되는엔코더값을 A 상과 B 상으 로 2 줄씩나누어도트매트릭스에출력하기

A : #include<avr/io.h> #include <avr/signal.h> unsigned int mrcnta=0, mrcntb=0, mlcnta=0, mlcntb=0; void m_delay(unsigned int k) unsigned int i, j; for(i=0; i<100; i++) for(j=0; j<k; j++); SIGNAL(SIG_INTERRUPT0) PORTA=0x03; PORTC=mrcnta; m_delay(1); mrcnta++; SIGNAL(SIG_INTERRUPT1) PORTA=0x0C; PORTC=mrcntb; m_delay(1); mrcntb++; SIGNAL(SIG_INTERRUPT2) PORTA=0x30; PORTC=mlcnta; m_delay(1); mlcnta++;

SIGNAL(SIG_INTERRUPT3) PORTA=0xC0; PORTC=mlcntb; m_delay(1); mlcntb++; void main(void) DDRA=0xFF; DDRC=0xFF; DDRD=0x00; EIMSK =0x0F; EICRA =0xFF; EIFR =0x0F; sei(); hile(1); 2) 응용문제 1 왼쪽모터의엔코더 A 상에서인터럽트가발생하면단일 LED 1 번을켜고오른 쪽모터의엔코더 B 상에서인터럽트가발생하면단일 LED 3 번을켜기