슬라이드 1

Similar documents
<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

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

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

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

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

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

ATmega128

슬라이드 1

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

lecture4(6.범용IO).hwp

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

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

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

<4D F736F F F696E74202D2037C0E55FC0CEC5CDB7B4C6AEC0C720B5BFC0DB2E707074>

<BDC7C7E83520BFB9BAF1BAB8B0EDBCAD2E687770>

[8051] 강의자료.PDF

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

KEY 디바이스 드라이버

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

AVR Atmega128

Microsoft PowerPoint - es-arduino-lecture-03

Microsoft PowerPoint - 08-MP-4-interrupt

K&R2 Reference Manual 번역본

Microsoft PowerPoint - polling.pptx

<4D F736F F D20BDBAC5D7C7CE20B6F3C0CEC6AEB7B9C0CCBCADB0ADC1C2202D203420C7C1B7CEB1D7B7A1B9D62E646F63>

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

PowerPoint 프레젠테이션

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

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

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

<4D F736F F F696E74202D2037C0E55FC0CCC0C0C7F55FBFCFBCBA205BC8A3C8AF20B8F0B5E55D>

1

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

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

2주차: 입출력 제어 복습

슬라이드 1

CAN 통신

슬라이드 1

PowerPoint 프레젠테이션

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

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

Microsoft PowerPoint - chap05-제어문.pptx

Motor

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

SW

1 SW

C프로-3장c03逞풚

Page 2 of 27 Absolute Maximum Ratings - Supply voltage : 3.5V - Operating Temperature Range : -20 ~ 70 - Storage Temperature Range : -40 ~ 85 위조건을넘어서게

歯설명서_020925_.PDF

DTS-L300-V2 Specification Page 1 of 14 비접촉온도측정 원거리온도측정 High Accuracy Digital Interface : SPI Arduino UNO 예제코드제공 제품설명 DTS-L300-V2는접촉을하지않고원하는물체표면에온도를 50

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

untitled

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

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

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

CANTUS Evaluation Board Ap. Note

<B1E2BCFAB9AEBCAD28C0CCB5BFBCF6295F F6F6B696E672E687770>

<C3CA3520B0FAC7D0B1B3BBE7BFEB202E687770>

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

2005프로그램표지

20564A*LT-W600SH*I/M

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

Chapter #01 Subject

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

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

Formatvorlage für Arbeitsanweisungen


AN_0005B_UART

PowerPoint 프레젠테이션

USB3-FRM13 API 매뉴얼

Microsoft Word doc

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

<30302E20BEC6C6AEB8E120BDBAC6A9B5F0BFC020BFACBDC0B9AEC1A620C7D8B4E42E687770>

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

MPLAB C18 C

Microsoft PowerPoint - chap06-2pointer.ppt

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

ATmega128 교재 - 8장 EEPROM.hwp

Formatvorlage für Arbeitsanweisungen

Real Time In-Circuit Emulator for MICROCHIP PIC16CXX

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

<4D F736F F D20C0DBC7B0C6ED5FBDBAC5D7C7CE20B6F3C0CEC6AEB7B9C0CCBCAD20B0B3B9DF2E646F63>

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

1장. 유닉스 시스템 프로그래밍 개요

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

untitled

AN2629

: 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

untitled

중간고사

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202831C1D6C2F72C2032C1D6C2F729>

Chapter_06

1. 기본설정 목차 1-1. 설치해야할프로그램및파일 1-2. 프로그램올리기 1-3. MAKEFILE 2. 캐릭터 LCD(PORT) 3-1. 개요 3-2. 사용하는레지스터 3-3. Source Code 3-4. 실습사진 3. 타이머카운터및초음파센서활용 (PORT, TIM

Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

Microsoft PowerPoint - ch07 - 포인터 pm0415

Transcription:

마이크로컨트롤러 2 (MicroController2) 2 강 ATmega128 의 external interrupt 이귀형교수님

학습목표 interrupt 란무엇인가? 기본개념을알아본다. interrupt 중에서가장사용하기쉬운 external interrupt 의사용방법을학습한다.

1. Interrupt 는왜필요할까? 함수동작을추가하여실행시키려면? //*** example-1 *** #include <avr/io.h> void initialize_port(); void delay(); int main(void) unsigned char ii; initialize_port(); while(1) for(ii=0x01;ii<=0x05;ii++) PORTA=ii; delay(); void initialize_port() DDRA = 0xFF; PORTA = 0x00; void delay( ) unsigned int ta,tb,i,j; ta=10; tb=50000; for(i=0; i<ta; i++) for(j=0; j<tb; j++); void SW0_action() unsigned char jj; for(jj=0x06; jj<=0x0a; jj++) PORTA = jj; delay();

1. Interrupt 는왜필요할까? main 동작중에 SW0 을누를때, 정해진함수동작을실행시키려면? //*** example-2 *** #include <avr/io.h> #define SW0 0x00 void initialize_port(); void delay(); void SW0_action(); int main(void) unsigned char ii; initialize_port(); while(1) while((pind&sw0)==0x00); SW0_action(); for(ii=0x01;ii<=0x05;ii++) PORTA=ii; delay(); void initialize_port() DDRA = 0xFF; DDRD = 0x00; PORTA = 0x00; void delay( ) unsigned int ta,tb,i,j; ta=10; tb=50000; for(i=0; i<ta; i++) for(j=0; j<tb; j++); void SW0_action() unsigned char jj; for(jj=0x06; jj<=0x0a; jj++) PORTA = jj; delay();

1. Interrupt 는왜필요할까? main 동작중에 SW0 을누를때, 정해진함수동작을실행시키려면? //*** example-3 *** #include <avr/io.h> #define SW0 0x00 void initialize_port(); void delay(); void SW0_action(); int main(void) unsigned char ii; initialize_port(); while(1) for(ii=0x01;ii<=0x05;ii++) PORTA=ii; delay(); if((pind&sw0)!=0x00) SW0_action(); void initialize_port() DDRA = 0xFF; DDRD = 0x00; PORTA = 0x00; void delay( ) unsigned int ta,tb,i,j; ta=10; tb=50000; for(i=0; i<ta; i++) for(j=0; j<tb; j++); void SW0_action() unsigned char jj; for(jj=0x06; jj<=0x0a; jj++) PORTA = jj; delay();

2. Interrupt 기초사항 interrupt (by hardware or software) interrupt service routine (isr) interrupt vector ATmega128 에는 35 개의 interrupt 장점 고성능 hardware 제어기능사용가능 프로그램이간결 multi-tasking 이가능

3. External Interrupt external interrupt input INT0~INT7

3. External Interrupt 연관 register 들 external interrupt control register A - EICRA Interrupt Sense Control Bit ISCn 1 ISCn 0 trigger 설정 0 0 INTn 입력의 low level 에인터럽트를요청한다 0 1 reserved 1 0 INTn 입력의 falling edge 때비동기로인터럽트를요청한다 1 1 INTn 입력의 rising edge 때비동기로인터럽트를요청한다

3. External Interrupt 연관 register 들 external interrupt control register B - EICRB Interrupt Sense Control Bit ISCn 1 ISCn 0 trigger 설정 0 0 INTn 입력의 low level 에인터럽트를요청한다 0 1 INTn 입력의 falling & rising edge 에인터럽트를요청한다 1 0 INTn 입력의 falling edge 때비동기로인터럽트를요청한다 1 1 INTn 입력의 rising edge 때비동기로인터럽트를요청한다

3. External Interrupt 연관 register들 external interrupt flag register - EIFR INT7..0까지 interrupt flag를나타내며, isr으로 jump하면해당 flag는클리어됨이 bit를강제로 clear하려면해당 bit에 1을 write해야함

3. External Interrupt 연관 register들 external interrupt mask register - EIMSK INT7..0 까지 interrupt 를 enable/disable 을설정함

3. External Interrupt 연관 register들 status register - SREG 가장최근에수행된연산결과에대한정보를저장하나의연산이끝날때마다 update Bit7 - Global Interrupt Enable 미리설정 함수 sei() 을실행하면 set global interrupt enable(i bit->1) interrupt.h cli() 을실행하면 clear global interrupt enable(i bit->0) interrupt.h

4. External Interrupt 실습문제 external interrupt input INT0, INT1 사용요구조건 external interrupt INT0, INT1(chattering 제거 switch 를사용할것 ) 을동시에사용하려고한다. 다음과같은동작을하는프로그램을작성하라. 1 2 3 main 에서는 PORTA 으로 01H 02H 03H 04H 05H 01H 02H... 를약 1 초간격으로반복출력한다. external interrupt INT0 신호를입력하면, external INT0 isr 에서는 06H 07H 08H 09H 0AH 를한번출력하고 main 으로되돌아간다. external interrupt INT1 신호를입력하면, external INT1 isr 에서는 0BH 0CH 0DH 0EH 0FH 를한번출력하고 main 으로되돌아간다.

4. External Interrupt 실습문제 EICRA 설정 1 1 1 1 #define INT0_RISING_EDGE_TRIGGER 0x03 // 0000 0011 #define INT1_RISING_EDGE_TRIGGER 0x0C // 0000 1100 EICRA = INT0_RISING_EDGE_TRIGGER INT1_RISING_EDGE_TRIGGER; //0000 1111

4. External Interrupt 실습문제 EIMSK 설정 1 1 #define EXT_INT0_ENABLE 0x01 // 0000 0001 #define EXT_INT1_ENABLE 0x02 // 0000 0010 EIMSK = EXT_INT0_ENABLE EXT_INT1_ENABLE; //0000 0011

4. External Interrupt 실습문제 SREG 설정 1 global interrupt enable #include <avr/interrupt.h> sei();

4. External Interrupt 실습문제 Isr (interrupt service routine) 명칭지정 ISR(INT0_vect) BYTE jj; for(jj=0x06; jj<=0x0a; jj++) PORTA = jj; delay(); iom128.h <= io.h /* Interrupt vectors */ /* External Interrupt Request 0 */ #define INT0_vect _VECTOR(1) #define SIG_INTERRUPT0 _VECTOR(1) /* External Interrupt Request 1 */ #define INT1_vect _VECTOR(2) #define SIG_INTERRUPT1 _VECTOR(2)

4. External Interrupt 실습문제 최종 program list //*** example *** #include <avr/io.h> #include <avr/interrupt.h> #define INT0_RISING_EDGE_TRIGGER 0x03 // 0000 0011 #define INT1_RISING_EDGE_TRIGGER 0x0C // 0000 1100 #define EXT_INT0_ENABLE 0x01 // 0000 0001 #define EXT_INT1_ENABLE 0x02 // 0000 0010 void initialize_port(); void initialize_interrupt(); void delay(); int main(void) unsigned char ii; initialize_port(); initialize_interrupt(); sei(); while(1) for(ii=0x01;ii<=0x05;ii++) PORTA=ii; delay(); void initialize_port() DDRA = 0xFF; PORTA = 0x00;

4. External Interrupt 실습문제 최종 program list void initialize_interrupt() EICRA = INT0_RISING_EDGE_TRIGGER INT1_RISING_EDGE_TRIGGER; EIMSK = EXT_INT0_ENABLE EXT_INT1_ENABLE; void delay() unsigned int ta,tb,i,j; ta=10; tb=50000; for(i=0; i<ta; i++) for(j=0; j<tb; j++); ISR(INT0_vect) unsigned char jj; for(jj=0x06; jj<=0x0a; jj++) PORTA = jj; delay(); ISR(INT1_vect) unsigned char kk; for(kk=0x0b; kk<=0x0f; kk++) PORTA = kk; delay();

학습정리 interrupt 를사용하려면외부에서 hardware 신호를입력해주어야하며프로그램첫부분에는 software 로미리설정해주어야한다. interrupt 를사용하면 main 에서 software 적으로함수를부르는동작이생략되어프로그램이간결해지며, 복잡한프로그램에서 multi-tasking 이가능해진다. 다양한기능을활용함으로써, 고도의제어동작이가능해진다. external interrupt 를사용하려면 global interrupt enable(sreg), individual interrupt enable(eimsk) 을선언해주고, external interrupt control register(eicra, B) 에해당입력신호의형태를설정해주어야한다.