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

Similar documents
슬라이드 1

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

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

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

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

ATmega128

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

<4D F736F F F696E74202D2037C0E55FC0CEC5CDB7B4C6AEC0C720B5BFC0DB2E707074>

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

AVR Atmega128

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

Section 03 트랜지스터를이용한스위칭동작 16/45 트랜지스터의직류특성 활성 직류상황에서전류 I C 는전류 I B 보다 h FE 배만큼더많은전류가흐름» 베이스와이미터가순방향으로바이어스» 컬렉터와베이스가역방향으로바이어스 차단 만일 I B 가 0[A] 이면컬렉터전류

슬라이드 1

K&R2 Reference Manual 번역본

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

<BDC7C7E83520BFB9BAF1BAB8B0EDBCAD2E687770>

<4D F736F F F696E74202D2037C0E55FC0CCC0C0C7F55FBFCFBCBA205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

lecture4(6.범용IO).hwp

Chapter #01 Subject

Microsoft PowerPoint - 08-MP-4-interrupt

2주차: 입출력 제어 복습

슬라이드 1

Microsoft PowerPoint - es-arduino-lecture-03

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

전자회로 실험

Microsoft PowerPoint - polling.pptx

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

PowerPoint Presentation

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

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

KEY 디바이스 드라이버

Microsoft PowerPoint - 03_(C_Programming)_(Korean)_Pointers

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

5_10.hwp

PowerPoint 프레젠테이션

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

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

중간고사

<4D F736F F D20BDBAC5D7C7CE20B6F3C0CEC6AEB7B9C0CCBCADB0ADC1C2202D203420C7C1B7CEB1D7B7A1B9D62E646F63>

Chapter ...

<C6F7C6AEB6F5B1B3C0E72E687770>

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

Microsoft Word - PIC16x_Section20_Comparator_31020a.doc

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

PowerPoint Presentation

Microsoft PowerPoint - es-arduino-lecture-08

Page 2 of 21 Absolute Maximum Ratings Absolute Maximum Rating 값을초과하는조건에서 DTPML을동작시킬경우치명적인손상을 가할수있습니다. Parameter Symbol Conditions min Typ Max Unit Sup

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

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

PowerPoint Presentation

슬라이드 1

untitled

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - chap12-고급기능.pptx

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

Microsoft Word doc

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

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

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - chap01-C언어개요.pptx

untitled

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

Embeddedsystem(8).PDF

À̵¿·Îº¿ÀÇ ÀÎÅͳݱâ¹Ý ¿ø°ÝÁ¦¾î½Ã ½Ã°£Áö¿¬¿¡_.hwp

PowerPoint 프레젠테이션

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

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

Microsoft Word - PLC제어응용-2차시.doc

[8051] 강의자료.PDF

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 특징

API 매뉴얼

Frama-C/JESSIS 사용법 소개

UI TASK & KEY EVENT

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

설계란 무엇인가?

슬라이드 1

설계란 무엇인가?

제 1 장 집적회로 개요

Microsoft PowerPoint - Chapter 6.ppt

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

Microsoft Word - Lab.4

Microsoft PowerPoint - ch 전처리기, 다중 소스파일 pm1015

SW

1 SW

온습도 판넬미터(JTH-05) 사양서V1.0

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

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - es-arduino-lecture-09

untitled

슬라이드 1



슬라이드 1

11장 포인터

실험 5

PowerPoint 프레젠테이션

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202831C1D6C2F72C2032C1D6C2F729>

슬라이드 1

Transcription:

Section 03 인터럽트활성화와인터럽트서비스루틴연결 33/82

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

Section 03 인터럽트활성화와인터럽트서비스루틴연결 35/82

Section 03 인터럽트활성화와인터럽트서비스루틴연결 36/82

Section 03 인터럽트활성화와인터럽트서비스루틴연결 37/82 전역인터럽트 I- 비트활성화 개별인터럽트가활성화되고, 전역인터럽트비트 (SREG 의 I- 비트 ) 가 1 로셋되어있을때, 인터럽트서비스루틴이실행됨 인터럽트사건이발생하면, 해당인터럽트플래그가 1 로설정되고, 인터럽트서비스루틴이개시되면, 그인터럽트플래그는클리어됨

38/82 Section 03 인터럽트활성화와인터럽트서비스루틴연결 인터럽트서비스루틴의연결 #include <avr/interrupt.h> 를앞에적어인터럽트관련레이블과매크로정의 ISR( ) 함수인수위치에인터럽트서비스루틴명칭을넣어작성 ISR(INT0_vect) ISR(ADC_vect)

Section 03 인터럽트활성화와인터럽트서비스루틴연결 39/82 인터럽트대기와실행 동시에여러인터럽트가요청되었을때는, 작은숫자의벡터값의인터럽트가높은우선순위를가짐 일반적인마이크로프로세서 높은우선순위의인터럽트가발생하면, 현재인터럽트서비스루틴을중단하고, 새로운인터럽트서비스루틴을실행 ATmega128 우선순위가더높은인터럽트가발생하더라도, 현재인터럽트서비스루틴을중단하지는않음 인터럽트서비스루틴이종료되면, 대기 (pending) 인터럽트중에서우선순위가높은인터럽트서비스루틴을수행

40/82 Section 03 인터럽트활성화와인터럽트서비스루틴연결 인터럽트서비스프로그램중요청된인터럽트처리 인터럽트 1 발생, 인터럽트 1 플래그셋 인터럽트 1 서비스루틴이실행되면서,» SREG 의 I- 비트와인터럽트 1 의플래그가클리어됨 인터럽트 2 발생, 인터럽트 2 플래그셋 인터럽트 1 서비스루틴종료까지대기» 인터럽트 1 서비스루틴이종료하면 SREG 의 I- 비트가다시 1 로셋 인터럽트 2 서비스루틴이실행되면서,» SREG 의 I- 비트와인터럽트 1 의플래그가클리어됨 인터럽트 2 서비스루틴이종료되면, SREG 의 I- 비트가다시 1 로셋

Section 03 인터럽트활성화와인터럽트서비스루틴연결 41/82 인터럽트플래그비트 인터럽트플래그가 1 이되어대기 인터럽트서비스루틴 (interrupt service routine) 이실행되면, 대부분의인터럽트플래그 (interrupt flag) 는자동으로클리어 (clear) 됨» 몇가지는수동으로인터럽트플래그클리어해주어야함 만일대기중인인터럽트플래그에 소프트웨어적으로 1을기록하면, 인터럽트플래그는클리어 대기중인인터럽트해지

Section 03 인터럽트활성화와인터럽트서비스루틴연결 42/82 개별인터럽트활성화비트와인터럽트플래그비트

Section 03 인터럽트활성화와인터럽트서비스루틴연결 43/82

Section 04 외부인터럽트 44/82 외부인터럽트설정과활성화 디지털 I/O 핀의디지털전압레벨을외부인터럽트로감지 EIMSK : 외부인터럽트마스크레지스터 (External Interrupt Mask Register) 외부인터럽트 INT0~INT7 를개별적으로활성화시킬수있음

Section 04 외부인터럽트 45/82 EICRA, EICRB : 외부인터럽트제어레지스터 (External Interrupt Control Register) 인터럽트발생순간을 ISCnx(n 은 0~7, x 는 0~1) 비트로설정

Section 04 외부인터럽트 46/82 외부인터럽트와외부인터럽트서비스루틴과의연결 외부인터럽트서비스루틴을작성하여, 주프로그램과인터럽트를연결 EIFR : 외부인터럽트플래그레지스터 (External Interrupt Flag Register) 활성화된외부인터럽트는전역인터럽트가활성화되어있고, 설정된발생조건을만족하면, 외부인터럽트플래그비트를 1로셋하고, 인터럽트서비스루틴실행절차가수행

Section 04 외부인터럽트 47/82 인터럽트서비스루틴실행절차 ( 인터럽트플래그관점 ) ❶ EICRA, EICRB 레지스터에설정된조건이만족되어인터럽트사건발생 ❷ EIFR 레지스터의해당인터럽트플래그비트 (INTF0~INT7) 가 1로셋됨 ( 인터럽트사건이발생된시점에다른인터럽트서비스루틴이실행중이면, 그인터럽트서비스루틴이종료될때까지대기 ) ❸ 인터럽트서비스루틴으로진입되면, 인터럽트플래그비트는클리어됨 ❹ ( 예외적 ) 만일 2번단계에서해당인터럽트플래그비트를 1로기록하면, 3번단계를수행하지않고, 인터럽트플래그비트는클리어됨

Section 05 주프로그램과인터럽트서비스루틴의요청 / 응답인터페이스 48/82 인터럽트서비스루틴과요청 / 응답인터페이스절차 인터럽트서비스루틴과요청 / 응답인터페이스 ❶ 주프로그램은인터럽트서비스루틴과약속된전역변수에요청을기록 ❷ 인터럽트가발생하고인터럽트서비스루틴이실행되면, 요청동작을수행한후전역변수에요청에대한응답을기록 ❸ 주프로그램은응답을확인하고, 알고리즘의진행단계를조정

Section 05 주프로그램과인터럽트서비스루틴의요청 / 응답인터페이스 50/82 주프로그램과인터럽트서비스사이의변수공유 인터페이스변수는 volatile 지시어를사용하여전역변수로선언 C 컴파일러는최적화과정으로목적프로그램으로간소화 volatile 지시어를선언하지않으면, 간소화에의해인터럽트서비스루틴과상호연관성이끊어질수있음 [ 예제 6-1] SW0, SW1 각스위치가연속으로 5 회이상눌리면 LED 를반전 주프로그램요청부» volatile로선언된 req_int0, req_int1 변수로, 인터럽트서비스루틴과인터페이스» 인터럽트서비스루틴이 REPLY로응답했을때 LED 반전 LED 반전명령 PORTA ^= 1<<PA0;

Section 05 주프로그램과인터럽트서비스루틴의요청 / 응답인터페이스 51/82 main( ) 함수의인터럽트서비스루틴과인터페이스부 while(1){ if(req_int0 = = REPLY){ PORTA ^= 1<<PA0; // INT0에서응답하면 PA0 비트값반전 req_int0 = NOT_REQUEST; // req_int0 요청해지 req_int1 = REQUEST; // req_int1 요청 }else if(req_int1 = = REPLY){ PORTA ^= 1<<PA0; // INT1에서응답하면 PA0 비트값반전 req_int0 = REQUEST; // req_int0 요청 req_int1 = NOT_REQUEST; // req_int1 요청해지 } } req_int0, req_int1 : 전역변수

Section 05 주프로그램과인터럽트서비스루틴의요청 / 응답인터페이스 52/82 인터럽트서비스루틴응답부» ISR(INT0_vect){} 사례» req_int0 변수에 REQUEST 요청이있을때동작 - event 변수를인터럽트가발생할때마다증가 - NUM_EVENT 이상발생되면 REPLY로응답 volatile int req_int0 = REQUEST, req_int1 = NOT_REQUEST; ISR(INT0_vect) { static long event = 0; } if(req_int0 = = REQUEST){ event++; if(event>=num_event){ event = 0; req_int0 = REPLY; } }

Section 05 주프로그램과인터럽트서비스루틴의요청 / 응답인터페이스 53/82 요청 / 응답인터페이스와인터럽트과부하절감 인터럽트발생빈도와주프로그램수행 인터럽트발생빈도가높아지면원하는시스템동작이되지않을수있음» 대기하던인터럽트서비스루틴만실행되고, 주프로그램이거의수행되지못할수있음» 인터럽트서비스루틴에머무르는시간을가능한짧게하고인터럽트의발생빈도를적게하는것이바람직함» 인터럽트서비스루틴은수행시간이짧은장치와관계된조작명령, 상태확인등과관련된간단한동작을수행 상태결과에따른주된동작은요청 / 응답인터페이스로, 주프로그램에서수행하는것이바람직함

Section 05 주프로그램과인터럽트서비스루틴의요청 / 응답인터페이스 54/82 [ 예제 6-2] 인터럽트서비스루틴의과부하절감을요청 / 응답인터페이스사례 인터럽트감지순간을결정하는비트가 (pp. 244) ISC01 = 0, ISC00 = 0 일때, LOW 디지털전압레벨이면인터럽트가계속발생 강제시간지연 delay( ) 함수위치에따른반응관찰 1. 인터럽트서비스루틴안에서 delay( ) 함수를실행하는경우와, 2. 주프로그램에서 delay( ) 함수를실행하는경우의차이점확인

Section 05 주프로그램과인터럽트서비스루틴의요청 / 응답인터페이스 55/82 DELAY_IN_ISR #include #include <avr/io.h> <avr/interrupt.h> // DELAY_IN_ISR void { delay(volatile long count) for(; count>0; count--); } int { main(void) EIMSK = 1<<INT0; EICRA = 0x0; PORTD = 1<<INT0; DDRA = 1<<PA0; sei(); while(1){ // INT0 활성화 // LOW일때연속인터럽트 // 내부저항풀업연결 // PA0 출력설정 // 전역인터럽트활성화 ISR(INT0_vect) { delay(1000); } // DELAY_IN_ISR } delay(200); PORTA ^= 1<<PA0; } return 0;

Section 05 주프로그램과인터럽트서비스루틴의요청 / 응답인터페이스 56/82 DELAY_IN_MAIN #include #include #define volatile void { } <avr/io.h> <avr/interrupt.h> DELAY_IN_MAIN ISR(INT0_vect) { req = 0; } unsigned int req=1; delay(volatile long count) for(; count>0; count--); int { #define main(void) EIMSK = 1<<INT0; EICRA = 0x0; PORTD = 1<<INT0; DDRA = 1<<PA0; sei(); while(1){ DELAY_IN_MAIN if(!req){ } // INT0 활성화 // LOW일때연속인터럽트 // 내부저항풀업연결 // PA0 출력설정 // 전역인터럽트활성화 delay(1000); req = 1; } delay(200); PORTA ^= 1<<PA0; } return 0;

Section 05 주프로그램과인터럽트서비스루틴의요청 / 응답인터페이스 57/82 #ifdef lable_a --- A --- #else --- B --- #endif lable_a 라는이름의레이블이정의되어있으면, --- A --- 부분을수행그렇지않으면, --- B --- 부분을수행하라는매크로 #define DELAY_IN_ISR 로 DELAY_IN_ISR 을정의하면 ISR(INT0_vect) 인터럽트서비스루틴에서 delay( ) 함수실행 //#define DELAY_IN_ISR 로 DELAY_IN_ISR 을정의해놓지않으면 main( ) 함수의 while( ) 반복문에서 delay( ) 함수실행

Section 05 주프로그램과인터럽트서비스루틴의요청 / 응답인터페이스 58/82

Section 05 주프로그램과인터럽트서비스루틴의요청 / 응답인터페이스 59/82 결과관찰» 스위치를누르지않으면, 매우빠르게 PA0에연결된 LED를반전시킴너무빨라 LED가항상켜진것처럼보임» 스위치 SW0을누르면, 지속적으로인터럽트가요청되어, 인터럽트서비스루틴이수행» DELAY_IN_ISR을 4번라인위치에두고, 매크로정의하여, 프로그램컴파일 / 링크 / 다운로드후관찰» DELAY_IN_ISR을 4번라인위치에서삭제하여, 매크로정의를없앤후, 프로그램컴파일 / 링크 / 다운로드후관찰» LED의점멸주기의빠른정도를관찰하여, 주프로그램의실행정도를간접적으로알수있음

Section 06 포토인터럽터인터페이스 60/82 사전지식 포토인터럽터는포토다이오드와포토트랜지스터를일체형으로만든부품 포토인터럽터 SG-207[( 주 ) 광전자제품 ] 을중심으로주요규격검토 약 940[nm] 의적외선이포토트랜지스터의베이스로투과 베이스단자에전압이생성되고, 이미터로충분한순방향전류가흐름 컬렉터와이미터사이의스위치를 ON시킴 포토다이오드와포토트랜지스터간격에적외선을차단시켜센서동작

Section 06 포토인터럽터인터페이스 61/82 특성곡선 ATmega128 내부풀업저항 20[kΩ] 이상가정

Section 06 포토인터럽터인터페이스 62/82 적외선관통포토트랜지스터에도달되면 ON, LOW 디지털전압레벨 다이오드순방향전류계산 12[mA] 에의한적외선관통예측광전류 트랜지스터 ON 트랜지스터의포화동작을만족시킴 입력핀 PD0 는전압 VCE(Sat) 이되어 LOW 디지털전압레벨 핀에서인식되는논리값은 0 적외선이차단되면포토트랜지스터 OFF, HIGH 디지털전압레벨 적외선이차단되었을때, 광전류 I L 은 0[mA] 따라서, 핀에인가되는전압은 V CC 이되어 HIGH 디지털전압레벨 핀에서인식되는논리값은 1

Section 06 포토인터럽터인터페이스 63/82 실험목적및동작 (1) 포토인터럽터의회로동작이해 (2) 빛차단과투과가포토트랜지스터의 ON/OFF로출력에미치는영향 (3-1) 포토인터럽터출력신호가상승하는에지를폴링으로감지하는방법 (3-2) 포토인터럽터출력신호가상승하는에지를인터럽트로감지하는방법 PD0 핀에연결된포토인터럽터간격에물체로빛을차단할때, PA0 에연결된 LED 를반전하기위한회로

Section 06 포토인터럽터인터페이스 64/82 폴링에의한포토인터럽터에지검사 // PD0 가 HIGH 면 1 을취함 for(i=0; i<100; i++) { } // PD0 상승에지검사

Section 06 포토인터럽터인터페이스 65/82 인터럽트방식에의한포토인터럽터에지검출

Section 06 포토인터럽터인터페이스 66/82 포토인터럽터인터페이스 (video.zip 참고 / 6-6)