임베디드 프로그래밍  

         
전체 기타 | WinCE | Delphi | VisualC | ARM | Media | SE | 마리오네트 | Java | wdm | JTAG | 영상처리 | 인증 | 질문/답변 | H/W | 알고리즘 | Platform | .net | VB | PPC | Network | android | QT | WWW | Linux |
인터럽트 핸들링
하창호08-29 05:15 | HIT : 4,422
인터럽트 핸들링
하창호 03-16 12:19 | HIT : 1,032



Interrupt Handler 수행시

인터럽트 서비스 루틴 진입전에 다음처럼 입력한다.

rSRCPND=BIT_TIMER0; // Clear pending bits  
rINTPND=BIT_TIMER0;  

위의 내용은 해당 마스크 비트에 관련된 인터럽트의 소스 팬드와 인터럽트 팬드를 지워준다.

단 S3C2410 에서는 Set 동작시 다음과 같은 처리를 한다.

rSRCPND = 1 -> BIT_TIMER0 Set = 0
rSRCPND = 0 -> BIT_TIMER0 Set = 0        

예제)

void Timer0_Isr(void)
{
     rSRCPND=BIT_TIMER0;                                
     rINTPND=BIT_TIMER0;  

     rGPFDAT^=(1<<4);        
}  
IP Address : 127.0.0.1  



하창호   2004/03/16  

(IRQ Exception 처리과정)
LR_IRQ(R14)에 PC + 4 값 저장
CPSR 을 SPSR_IRQ 에 저장
CPSR 을 IRQ Mode, ARM Mode, IRQ Disable
PC는 0x18 번지로 점프




하창호   2004/03/16  

; 범용 인터럽트 서비스 루틴
IsrIRQ
STMFD sp!, {r0-r3,lr}
LDR r2,=INTOFFSET
LDR r2,[r2]
LDR r3,=HandleEINT0
ADD r1,r3,r2,LSL #2

MOV lr, pc
LDR pc, [r1]
LDMFD sp!, {r0-r3,lr}
SUBS pc, lr, #4
LTORG

; 암컴파일러 전용 인터럽트 서비스 루틴
; require => return_type __irq function_name(param_var)
; C 함수 선언시 위 내용 필요
IsrIRQ
sub sp,sp,#4
stmfd sp!,{r8-r9}

ldr r9,=INTOFFSET
ldr r9,[r9]
ldr r8,=HandleEINT0
add r8,r8,r9,lsl #2
ldr r8,[r8]

str r8,[sp,#8]
ldmfd sp!,{r8-r9,pc}




하창호   2004/03/16  

32비트 데이터를 LDR 명령으로 직접 저장할 수 없는데 그 이유는
ARM 명령어 자체가 32비트 이므로 (단 쉬프트를 이용한 입력 제외)
그래서 따로 데이터 저장 코드를 저장하는데 LP(리터럴풀) 에다 넣는다.
LTORG 란 LP(리터럴풀)에 들어 있는 데이터 저장 코드를 실행 하는
작업으로 각각의 이어진 명령어들의 흐름이 끝났을 때 LTORG를 수행한다.



 ARM :: 인터럽트 핸들링    하창호 2007·08·29 4422
35  ARM :: CC 와 Slick Editer & T32 를 연동 프로젝트...    하창호 2007·02·15 4228
34  ARM :: T32 매크로 팁 중 현재 디렉토리 가져오는 방법    하창호 2007·02·08 3773
33  ARM :: 플레쉬에 대해서    하창호 2006·04·12 3846
32  ARM :: 삼성 반도체 홈페이지 Flash S/W 및 PocketStore I...    하창호 2006·04·12 4238
31  ARM :: MMU (memory management unit)    하창호 2005·03·10 4179
30  ARM :: ARM 프로세스이해 교육완수 예제    하창호 2004·03·23 4410
29  ARM :: S3C2410 터치스키린 이용한 그림판 제작 예제    하창호 2004·03·22 5666
28  ARM :: 이종수 박사 ADS, SDT, GCC 를 이용한 예제    하창호 2004·03·22 4850
27  ARM :: S3C2410 LCD에 아날로그 시계 출력하기 (숙제 3)    하창호 2004·03·22 5937
26  ARM :: S3C2410 LCD에 이미지 출력하기 예제    하창호 2004·03·19 6448
25  ARM :: [ASM] 1부터 10 까지 더하기 GCC 사용    하창호 2004·03·19 3994
24  ARM :: [ASM] LOOP 를 이용한 메모리간 복사 GCC 사용  …3  하창호 2004·03·19 4211
23  ARM :: 이종수 박사 ARM 이론강의 요약    하창호 2004·03·18 6557
22  ARM :: ARM Down, GCC 를 받을 수 있는 곳    하창호 2004·03·18 3614
21  ARM :: SMDK2410(S3C2410) Board Reference    하창호 2004·03·18 3791
20  ARM :: S3C2410X USER'S MANUAL    하창호 2004·03·18 3466
19  ARM :: SDT 관련문서    하창호 2004·03·18 3308
18  ARM :: GCC 관련문서    하창호 2004·03·18 3431
17  ARM :: ARM명령어요약    하창호 2004·03·18 3632
16  ARM :: 이종수 박사 ARM 뛰어넘기 교재    하창호 2004·03·18 4971
15  ARM :: ARM Architecture Reference Manual  …1  하창호 2004·03·18 3492
14  ARM :: 에디터 (숙제 2)    하창호 2004·03·17 3520
13  ARM :: S3C2410 IIS를 이용한 사운드 출력 예제    하창호 2004·03·17 4353
12  ARM :: S3C2410 Keyboard와 LCD 제어하기 예제    하창호 2004·03·17 4338
11  ARM :: S3C2410 Keyboard 제어하기 예제    하창호 2004·03·17 4168
10  ARM :: DNW 시리얼을 사용하여 프로그램을 다운로드 및 실행하...    하창호 2004·03·17 5582
9  ARM :: APM DownLoader 방식과 DNW DownLoader ...  …1  하창호 2004·03·17 3825
8  ARM :: S3C2410 간단한 알람 시계 예제 (숙제1)    하창호 2004·03·16 4970
7  ARM :: S3C2410 Watch Dog Timer 사용 예제    하창호 2004·03·16 4456
6  ARM :: S3C2410 타이머와 인터럽트로 LED 불켜기    하창호 2004·03·16 4304
5  ARM :: ARM 프로세스의 이해 강의 자료    하창호 2004·03·16 4919
4  ARM :: S3C2410 시리얼로 값 입력받는 계산기 만들기    하창호 2004·03·16 4188
3  ARM :: CPU 최대 주파수를 가지고 최소 타이머 주기 알아내기  …36  하창호 2004·03·16 2906
2  ARM :: S3C2410 버튼 입력받아 LED 불켜기 예제    하창호 2004·03·15 4555
1  ARM :: S3C2410 LED 불켜기 예제    하창호 2004·03·15 4450
1
   
Copyright 1999-2018 Zeroboard / skin by GGAMBO
....