SlideShare a Scribd company logo
1 of 29
Edited and Added by 15기 김승호 First made by 12기한재웅 Second made by 13 김범수 Interrupt @Atmega
목차 마이크로 프로세서 I/O포트에 대한 프로그램 방법 왜 인터럽트를 써야 할까? 외부 인터럽트 타이머 카운트 인터럽트 CTC 모드 및 PWM 모드 소스 코딩 및 퀴즈 재미있는 과제 1,2
Micro Processor 프로그래밍 분류 어떠한 작업을 수행할 시에 외부에서 들어오는 이벤트로 인해 어떠한 작업을 시행될 때 이용되는 방식 딱 두종류! 폴링 방식 인터럽트 방식
Polling  method Polling : 명사(n) 1.투표 2.여론조사 CPU가 특정 이벤트를 처리하기 위해 그 이벤트가 발생할 때까지 모든 연산을 모니터링 하는데 쓴다. 장점 : 단일 이벤트 시에 유용 단점 : 다중 이벤트가 발생되면?
Interrupt method Interrupt : 동사(v) 1. 방해하다 2.중단하다 특정 요구에 의해서 정상적인 프로그램의 실행순서를 변경하여 요구한 작업을 먼저 수행한 후에 다시 원래의 프로그램으로 복귀하는 방법. 장점 : 다중처리를 효율적으로 할 수 있다. 단점 : 쓸 때 약간의 머리를 써야한다.
Why should we use  the Interrupt method? 우리가 쓰는 컴퓨터들은 한가지 일만 하지 않는다. 즉, 다중 처리를 하고 있는 것이다. 다중처리를 위해서는 많은 CPU 자원을 낭비하는 Polling 방식보다는 Interrupt방식이 CPU를 효율적으로 사용할 수 있다! 하지만 언제나 좋지는 않다.
여기서 스치는 생각. C언어에서 함수랑 좀 비슷하지 않나..? 함수와 인터럽트와 다른 점? 함수는 call할 때, 인터럽트는 인터럽트 걸릴 때 동작. 인터럽트 걸릴 때는 어떻게 조절하지?
외부 인터럽트 Atmega128에는 외부 인터럽트 Port : 8개(INT) ,[object Object]
사용레지스터 : EIMSK(External Interrupt Mask Register),[object Object]
외부 인터럽트 레지스터
근데 레지스터가 뭐죠? Register : 사전적 의미 – 등록하다. 신고하다. 기록하다. 나타내다. 기억하다. 인식되다. 여기서의 의미 : 산술적, 논리적 연산이나 정보 해석, 전송 등을 할 수 있는 일정 길이의 정보를 저장하는 CPU내의 기억 장치. 저장 용량에는 제한되어 있으나 주기억 장치에 비해서 접근 시간이 빠르고, 체계적인 특징이 있다. 컴퓨터에는 산술 및 논리 연산의 결과를 임시로 기억하는 누산기, 기억 주소나 장치의 주소를 기억하는 주소 레지스터를 비롯하여 컴퓨터의 동작을 관리하는 각종 레지스터가 사용된다.
타이머와 머신 사이클 ,[object Object]
머신 사이클 : 명령어 하나를 수행하는데 걸리는 시간으로 타이머 모드에서 일정한 시간 간격이 머신 사이클의 시간 간격을 의미한다.
IF Atmega128에 16Mhz크리스탈이 있다면,  1 머신 사이클의 간격은 62.5ns, 타이머는 62.5ns마다 작동한다.,[object Object]
[object Object]
타이머가  1증가하는 시점
CLOCK(falling Edge 일 때)타이머 카운트 인터럽트
타이머 모드 & 카운트 모드 타이머 모드 일정한 간격의 시간을 세는 것 Ex)100M 달리기할 때의 스톱워치 카운트 모드 일정한 간격과 관계 없이 숫자만을 세는 것 Ex)계수기, 놀이공원 입장객들 체크할 때
타이머/카운터 레지스터 TCNT(Timer/Counter  Register) 총 4개의 타이머/카운터가 있다. Timer/Counter0,2(8bit) Timer/Counter1,3(16bit) Timer는 머신 사이클 마다 카운트된 값을 레지스터에 보관한다. Counter(0,2) : TCNT0/2 레지스터에 저장 Counter(1,3) : TCNT1/3H와 TCNT1/3L 레지스터에 저장(16비트이기 때문에)
OCR(Timer/Counter Output Compare Register) 오버플로(Overflow)가 일어나는 시점을 변경할 경우 그 시점을 명시해주는 레지스터 Timer/Counter0,2(8bit) Timer/Counter1,3(16bit) Timer는 머신 사이클 마다 카운트된 값을 OCR값과 비교한다. Counter(0,2) : OCR0/2 레지스터에 저장 Counter(1,3) : OCR1/3A,B,C H와OCR1/3A,B,C L 레지스터에 저장(16비트이기 때문에) 타이머/카운터 출력비교 레지스터
타이머/카운터 0 제어 레지스터 TCCR0 (Timer/Counter0 Control Register)
TCCR CS : 분주비 설정
TIMSK(Timer/Counter Interrupt Mask Register) 인터럽트 Enable 타이머/카운터 0 인터럽트 마스크 레지스터
타이머 / 카운터 인터럽트 전역 Enable Command 모든 타이머/카운터에 대한 Enable/Disable Commmad
Overflow Interrupt 타이머/카운터 레지스터인 TCNT1H:TCNT1L (타이머1 기준)가 overflow될 때, 요청되는 인터럽트
Overflow Interrupt 방금 그림에서 65535번 카운트를 했다면 모든 레지스터에 ‘1’로 채워지고, 이 때 1을 더하면 최상위 비트 자리에서 올림수가 발생, 이때가 overflow이다.
CTC mode CTC(Clear Time on Compare Match) Mode OCR값과 TCNT값이 맞으면 인터럽트가 호출되고 TCNT값이 리셋된다. OC0 출력파형은 인터럽트마다 Toggle된다.
높은 주파수의 PWM 파형을 발생하는 유용하다. 비반전 비교 출력모드에서 TCNT0 값은 계속하여 OCR0과 비교되어 일치하면 OC0 핀을 통해 0이 출력되고, TCNT0 값이 0이 되면 1을 출력된다. Fast PWM Mode
#include <mega8.h> Unsigned char led= 0xFE; Void main(void) { DDRC=0xFF; PORTC= led; TIMSK = 0x01; // 문제 1 : 이 레지스터가 하는 일은? TCCR0= 0x07; // 문제 2 : 이 레지스터가 하는 일은? TCNT0= 0x00; // 문제3 : 이 레지스터가 하는 일은? SREG = 0x80; // 문제 4 : 이 레지스터가 하는 일은?                	//문제 5  : 이 레지스터들로 인해 생기는 인터럽트 while(1); } Intrrupt [TIM0_OVF] void timer_int0(void) { 	led<<=1; led |= 0x01; if(led == 0xFF) led = 0xFE; PORTC = led; } 답 문제1 : Timer Count Interrupt Mask 레지스터, 인터럽트를 키고 끄는 역할을 한다. 0x01 - 타이머 0 오버플로우 모드 ON 문제2 : Timer Count Control Register 타이머 모드를 제어한다. 0x07 : normal 모드, 1024분주 문제3 : Timer Count Register  0x00: 첫 카운터 값은 00H 문제4 : SREG 전역 인터럽트 인에이블 문제5: (1/16)us*1024분주*(256-0) = 0.0163초마다 인터럽트 발생하여, LED 왼쪽으로 순차 점멸 LED 제어 소스 코딩 & 퀴즈!

More Related Content

Similar to Interrupt @atmega

ADC(nanheekim)
ADC(nanheekim)ADC(nanheekim)
ADC(nanheekim)Nanhee Kim
 
Let's geek! (1)
Let's geek! (1) Let's geek! (1)
Let's geek! (1) nerdsday
 
Tcp ip & io model
Tcp ip & io modelTcp ip & io model
Tcp ip & io modelNam Hyeonuk
 
2013 mcu( 마이크로컨트롤러 ) 수업자료 4
2013 mcu( 마이크로컨트롤러 ) 수업자료 42013 mcu( 마이크로컨트롤러 ) 수업자료 4
2013 mcu( 마이크로컨트롤러 ) 수업자료 4진우 김
 
테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템QooJuice
 
TestBCD2016-1(Answer)
TestBCD2016-1(Answer)TestBCD2016-1(Answer)
TestBCD2016-1(Answer)Yong Heui Cho
 
랩탑으로 tensorflow 도전하기 - tutorial
랩탑으로 tensorflow 도전하기 - tutorial랩탑으로 tensorflow 도전하기 - tutorial
랩탑으로 tensorflow 도전하기 - tutorialLee Seungeun
 
The Deep Learning Compiler
The Deep Learning CompilerThe Deep Learning Compiler
The Deep Learning CompilerTae Young Lee
 
원준갓의 IoT 수업
원준갓의 IoT 수업원준갓의 IoT 수업
원준갓의 IoT 수업Won Jun Song
 

Similar to Interrupt @atmega (14)

ADC(nanheekim)
ADC(nanheekim)ADC(nanheekim)
ADC(nanheekim)
 
Avr lecture3
Avr lecture3Avr lecture3
Avr lecture3
 
Hardware
HardwareHardware
Hardware
 
Let's geek! (1)
Let's geek! (1) Let's geek! (1)
Let's geek! (1)
 
System+os study 7
System+os study 7System+os study 7
System+os study 7
 
Ch19
Ch19Ch19
Ch19
 
Tcp ip & io model
Tcp ip & io modelTcp ip & io model
Tcp ip & io model
 
2013 mcu( 마이크로컨트롤러 ) 수업자료 4
2013 mcu( 마이크로컨트롤러 ) 수업자료 42013 mcu( 마이크로컨트롤러 ) 수업자료 4
2013 mcu( 마이크로컨트롤러 ) 수업자료 4
 
Avr lecture8
Avr lecture8Avr lecture8
Avr lecture8
 
테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템
 
TestBCD2016-1(Answer)
TestBCD2016-1(Answer)TestBCD2016-1(Answer)
TestBCD2016-1(Answer)
 
랩탑으로 tensorflow 도전하기 - tutorial
랩탑으로 tensorflow 도전하기 - tutorial랩탑으로 tensorflow 도전하기 - tutorial
랩탑으로 tensorflow 도전하기 - tutorial
 
The Deep Learning Compiler
The Deep Learning CompilerThe Deep Learning Compiler
The Deep Learning Compiler
 
원준갓의 IoT 수업
원준갓의 IoT 수업원준갓의 IoT 수업
원준갓의 IoT 수업
 

Interrupt @atmega

  • 1. Edited and Added by 15기 김승호 First made by 12기한재웅 Second made by 13 김범수 Interrupt @Atmega
  • 2. 목차 마이크로 프로세서 I/O포트에 대한 프로그램 방법 왜 인터럽트를 써야 할까? 외부 인터럽트 타이머 카운트 인터럽트 CTC 모드 및 PWM 모드 소스 코딩 및 퀴즈 재미있는 과제 1,2
  • 3. Micro Processor 프로그래밍 분류 어떠한 작업을 수행할 시에 외부에서 들어오는 이벤트로 인해 어떠한 작업을 시행될 때 이용되는 방식 딱 두종류! 폴링 방식 인터럽트 방식
  • 4. Polling method Polling : 명사(n) 1.투표 2.여론조사 CPU가 특정 이벤트를 처리하기 위해 그 이벤트가 발생할 때까지 모든 연산을 모니터링 하는데 쓴다. 장점 : 단일 이벤트 시에 유용 단점 : 다중 이벤트가 발생되면?
  • 5. Interrupt method Interrupt : 동사(v) 1. 방해하다 2.중단하다 특정 요구에 의해서 정상적인 프로그램의 실행순서를 변경하여 요구한 작업을 먼저 수행한 후에 다시 원래의 프로그램으로 복귀하는 방법. 장점 : 다중처리를 효율적으로 할 수 있다. 단점 : 쓸 때 약간의 머리를 써야한다.
  • 6. Why should we use the Interrupt method? 우리가 쓰는 컴퓨터들은 한가지 일만 하지 않는다. 즉, 다중 처리를 하고 있는 것이다. 다중처리를 위해서는 많은 CPU 자원을 낭비하는 Polling 방식보다는 Interrupt방식이 CPU를 효율적으로 사용할 수 있다! 하지만 언제나 좋지는 않다.
  • 7. 여기서 스치는 생각. C언어에서 함수랑 좀 비슷하지 않나..? 함수와 인터럽트와 다른 점? 함수는 call할 때, 인터럽트는 인터럽트 걸릴 때 동작. 인터럽트 걸릴 때는 어떻게 조절하지?
  • 8.
  • 9.
  • 11. 근데 레지스터가 뭐죠? Register : 사전적 의미 – 등록하다. 신고하다. 기록하다. 나타내다. 기억하다. 인식되다. 여기서의 의미 : 산술적, 논리적 연산이나 정보 해석, 전송 등을 할 수 있는 일정 길이의 정보를 저장하는 CPU내의 기억 장치. 저장 용량에는 제한되어 있으나 주기억 장치에 비해서 접근 시간이 빠르고, 체계적인 특징이 있다. 컴퓨터에는 산술 및 논리 연산의 결과를 임시로 기억하는 누산기, 기억 주소나 장치의 주소를 기억하는 주소 레지스터를 비롯하여 컴퓨터의 동작을 관리하는 각종 레지스터가 사용된다.
  • 12.
  • 13. 머신 사이클 : 명령어 하나를 수행하는데 걸리는 시간으로 타이머 모드에서 일정한 시간 간격이 머신 사이클의 시간 간격을 의미한다.
  • 14.
  • 15.
  • 17. CLOCK(falling Edge 일 때)타이머 카운트 인터럽트
  • 18. 타이머 모드 & 카운트 모드 타이머 모드 일정한 간격의 시간을 세는 것 Ex)100M 달리기할 때의 스톱워치 카운트 모드 일정한 간격과 관계 없이 숫자만을 세는 것 Ex)계수기, 놀이공원 입장객들 체크할 때
  • 19. 타이머/카운터 레지스터 TCNT(Timer/Counter Register) 총 4개의 타이머/카운터가 있다. Timer/Counter0,2(8bit) Timer/Counter1,3(16bit) Timer는 머신 사이클 마다 카운트된 값을 레지스터에 보관한다. Counter(0,2) : TCNT0/2 레지스터에 저장 Counter(1,3) : TCNT1/3H와 TCNT1/3L 레지스터에 저장(16비트이기 때문에)
  • 20. OCR(Timer/Counter Output Compare Register) 오버플로(Overflow)가 일어나는 시점을 변경할 경우 그 시점을 명시해주는 레지스터 Timer/Counter0,2(8bit) Timer/Counter1,3(16bit) Timer는 머신 사이클 마다 카운트된 값을 OCR값과 비교한다. Counter(0,2) : OCR0/2 레지스터에 저장 Counter(1,3) : OCR1/3A,B,C H와OCR1/3A,B,C L 레지스터에 저장(16비트이기 때문에) 타이머/카운터 출력비교 레지스터
  • 21. 타이머/카운터 0 제어 레지스터 TCCR0 (Timer/Counter0 Control Register)
  • 22. TCCR CS : 분주비 설정
  • 23. TIMSK(Timer/Counter Interrupt Mask Register) 인터럽트 Enable 타이머/카운터 0 인터럽트 마스크 레지스터
  • 24. 타이머 / 카운터 인터럽트 전역 Enable Command 모든 타이머/카운터에 대한 Enable/Disable Commmad
  • 25. Overflow Interrupt 타이머/카운터 레지스터인 TCNT1H:TCNT1L (타이머1 기준)가 overflow될 때, 요청되는 인터럽트
  • 26. Overflow Interrupt 방금 그림에서 65535번 카운트를 했다면 모든 레지스터에 ‘1’로 채워지고, 이 때 1을 더하면 최상위 비트 자리에서 올림수가 발생, 이때가 overflow이다.
  • 27. CTC mode CTC(Clear Time on Compare Match) Mode OCR값과 TCNT값이 맞으면 인터럽트가 호출되고 TCNT값이 리셋된다. OC0 출력파형은 인터럽트마다 Toggle된다.
  • 28. 높은 주파수의 PWM 파형을 발생하는 유용하다. 비반전 비교 출력모드에서 TCNT0 값은 계속하여 OCR0과 비교되어 일치하면 OC0 핀을 통해 0이 출력되고, TCNT0 값이 0이 되면 1을 출력된다. Fast PWM Mode
  • 29. #include <mega8.h> Unsigned char led= 0xFE; Void main(void) { DDRC=0xFF; PORTC= led; TIMSK = 0x01; // 문제 1 : 이 레지스터가 하는 일은? TCCR0= 0x07; // 문제 2 : 이 레지스터가 하는 일은? TCNT0= 0x00; // 문제3 : 이 레지스터가 하는 일은? SREG = 0x80; // 문제 4 : 이 레지스터가 하는 일은? //문제 5 : 이 레지스터들로 인해 생기는 인터럽트 while(1); } Intrrupt [TIM0_OVF] void timer_int0(void) { led<<=1; led |= 0x01; if(led == 0xFF) led = 0xFE; PORTC = led; } 답 문제1 : Timer Count Interrupt Mask 레지스터, 인터럽트를 키고 끄는 역할을 한다. 0x01 - 타이머 0 오버플로우 모드 ON 문제2 : Timer Count Control Register 타이머 모드를 제어한다. 0x07 : normal 모드, 1024분주 문제3 : Timer Count Register 0x00: 첫 카운터 값은 00H 문제4 : SREG 전역 인터럽트 인에이블 문제5: (1/16)us*1024분주*(256-0) = 0.0163초마다 인터럽트 발생하여, LED 왼쪽으로 순차 점멸 LED 제어 소스 코딩 & 퀴즈!
  • 30. 과제 1 Timer1 오버플로우 인터럽트를 이용하여 1초에 LED가 1초에 한 번 꺼졌다 켜졌다 하게 하기. 16MHz 동작속도를 가지고 있다. 분주비를 이용 TCNT1H와 TCNT1L의 초기값은 0(65536번 카운트해야 Overflow 발생) TCCR1B 레지스터 하위 3비트의 값과 계산식을 적을 것(분주비)
  • 31. 과제 2 인터럽트(CTC모드)를 사용하여 3개의 LED 패턴 만들기(눈에서 인식할 수 있을만큼) 조건 1 : 스위치 1, 2, 3을 누를 때마다 패턴이 바뀌어야함. 조건 2 : 인터럽트에서Delay를 사용하면 안됨.
  • 32. Q & A