폴링 / 인터럽트 비교
| 공 통 점 | 차 이 점 |
폴 링 | 외부 신호에 의해 다른 작업을 수행 | 주기적으로 체크 C언어 : while / for 로 구현 |
인터럽트 | 특정 사건이 일어나면 체크 회로로 구현 |
인터럽트
인터럽트는 C언어 함수의 호출과 비슷하지만 호출없이 언제든지 발생할 수 있다.
interrupt 에는 H/W interrupt 와 S/W interrupt 가 있다
S/W interrupt 는 다음과 같이 불려진다.
os : Call Back
window : Message
Java : Event
Linux : Signal
인터럽트 방법
1. 축차능 비교법 ( TC_RC에 적용 )
: 비교할 register C 의 기준값을 정하고 쌓다가 기준과 같아지면 인터럽트
2. 오버플로우 비교법
: 시작점이 되는 기준값을 정하고 쌓다가 overflow 하면 인터럽트
AT91SAM7S256 소스 코드
<timer.c>
1. TC_CMR0 = (TIMER_CLOCK4<<TCCLKS)|(1<<CPCTRG);
분주비 128 = Timer_Clock4
CPCTRG : 리셋 및 카운터 시작
2. TC_RC0 = 375;
레지스터 C 의 기준값 설정
분주비 128일때 RC값 = 375
3. AIC_IDCR = (1<<TC0);
타이머 카운터 0 인터럽트 비활성화(AIC_IDCR, TC0)
AIC ( Advanced Interrupt Controller )
: 핀이나 주변장치로부터 받은 인터럽트를 콘트롤하여 각 장치에 보낸다
Fast Interrupt : 우선순위가 높은 인터럽트
IRQ : Interrupt Request
4. AIC_SVR[TC0] = (unsigned int) Timer_Handler;
// 타이머 카운터 0 인터럽트 핸들러 등록
<timer.h>
AIC_SVR[TC0] 는 배열이다 ( AIC_SVR 은 주소, 주소[ ]는 배열 )
timer.h 헤더파일에 Timer_Handler 라는 함수가 define 되어 있다.
(unsigned int) Timer_Handler;
함수의 이름은 주소 ( 함수의 호출과는 다르다 )
'코스웨어 > 13년 스마트컨트롤러' 카테고리의 다른 글
5월 13일 수업 정리 - 임기준 (11) | 2013.05.20 |
---|---|
2013.5.14 (화) Review - C언어 13장 do - while , 조건부컴파일 [손초롱] (8) | 2013.05.20 |
[수업정리]130510_김창훈 (9) | 2013.05.20 |
5월 9일 정리 노트 - 이규남 (7) | 2013.05.20 |
프로젝트제안서- 한성원 (0) | 2013.05.13 |
황두민_프로젝트_제안서 입니다. (0) | 2013.05.13 |
프로젝트제안서-송시혁 (0) | 2013.05.13 |
프로젝트 제안서 -서준영 (0) | 2013.05.13 |