ARM Assembly Interrupt & Timer
본 자료는 7페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
해당 자료는 7페이지 까지만 미리보기를 제공합니다.
7페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

ARM Assembly Interrupt & Timer에 대한 보고서 자료입니다.

목차

1. Title
ARM Assembly Interrupt & Timer
2. Name

3. Abstract
Assembly로 ARM의 Interrupt와 Timer를 제어한다. 조건은 아래와 같다.
*Counting up from `0` per 1 second, using Timer0 interrupt.
*Display 7 Segment and LED at the same time.
*When the number become `F`, reset it `0` then count it up again.
Ex) 0 -> 1 -> 2 -> ….. -> E -> F -> 0 -> 1 -> …

4. Background
※Interrupt
5. Experimental Results
-Program
6. Analysis
1)Program Component-1
2)Program Component-2
3)Program Component-3
4)Program Component-4
5)Program Component-5

7. Conclusion
8. References

본문내용

ecial register의 시작 주소와, internal SRAM의 시작주소를 가리킨다. TMOD는 타이머의 모드를 설정한다. TCON은 타이머의 카운트 레지스터이다. TCON에 데이터 크기에 따라 타이머의 시간 길이 조정이 가능하다. INTMOD는 인터럽트 모드를 설정한다. INTMSK는 인터럽트 마스크 레지스터로서 각 인터럽트 소스의 인터럽트마스크 비트를 설정한다.
4)Program Component-4
IRQ_Handler
STMFDsp!, {r0-r3,lr}
ldrr0, SYSCFG
ldrr1, IOPDATA
ldrr2, INTPND
ldrr3, [r0, r2]
strr3, [r0, r2]
;// IOPMOD, IOPDATA SETTING & led, 7-set out----------
ldrr4, IOPMOD
cmp r7, #0
ldreq r6, =0x17C00
cmp r7, #1
ldreq r6, =0x01880
cmp r7, #2
ldreq r6, =0x0Ec40
cmp r7, #3
ldreq r6, =0x0Bcc0
cmp r7, #4
ldreq r6, =0x19820
cmp r7, #5
ldreq r6, =0x1b4a0
cmp r7, #6
ldreq r6, =0x1F460
cmp r7, #7
ldreq r6, =0x11ce0
cmp r7, #8
ldreq r6, =0x1Fc10
cmp r7, #9
ldreq r6, =0x19c90
cmp r7, #10
ldreq r6, =0x0fc50
cmp r7, #11
ldreq r6, =0x1f0d0
cmp r7, #12
ldreq r6, =0x16430
cmp r7, #13
ldreq r6, =0x0f8b0
cmp r7, #14
ldreq r6, =0x1e670
cmp r7, #15
ldreq r6, =0x1c4f0
strr6, [r0, r1]
strr11, [r0, r2]
add r7, r7, #1
cmp r7, #16
moveq r7, #0
eorr5, r5, #0xf0
LDMFDsp!, {r0-r3,lr}
SUBSpc, lr, #0x4
- 7-segment 및 LED setting
[0] 0x17C00
[9] 0x19c90
[1] 0x01880
[A] 0x0fc50
[3] 0x0Bcc0
[B] 0x1f0d0
[4] 0x19820
[C] 0x16430
[5] 0x1b4a0
[D] 0x0f8b0
[6] 0x1F460
[E] 0x1e670
[8] 0x1Fc10
[F] 0x1c4f0
Program Component-4는 IRQ_Handler로서 [STMFDsp!, {r0-r3,lr}]명령은 스택에 있는 데이터를 이동시키는데 PUSH 동안에는 SP에 지정된 위치에서 어드레스를 레지스터 리스트만큼 감소 후 각 레지스터를 저장하고, 처리가 완료된 후 POP 동작에서는 다시 데이터를 읽어 각 레지스터에 복원한다. 이 후 각 레지스터의 데이터를 넣은 후 CMP 비교 명령어를 통해 R7에 값을 비교 한 후 7-segment 및 LED를 출력한다. R7의 값은 [ add r7, r7, #1] 명령을 통해 꾸준히 증가하다가 [cmp r7, #16 moveq r7, #0]명령을 통해 R7이 16이 되었을 때 값을 0으로 초기화하여 반복적으로 카운트되게 한다.
5)Program Component-5
area reg, data, readwrite
SYSCFGdcd0x03ff0000
INTMODdcd0x4000
INTPND dcd0x4004
INTMSK dcd0x4008
IOPMODdcd0x5000
IOPDATA dcd0x5008
TMOD dcd 0x6000
TDATA0dcd 0x6004
TCNT0 dcd0x600C
DCD는 워드 Data를 선언한다. 이 부분은 각 레지스터의 선언부분이다.
System configuration register(SYSCFG)는 0x03ff0000이다.
INTERRUPT MODE REGISTER(INTMOD)의 Offset Address는 0x4000이다.
INTERRUPT PENDING REGISTER(INTPND) 의 Offset Address는 0x4004이다.
INTERRUPT MASK REGISTER(INTMSK)의 Offset Address는 0x4008이다.
I/O PORT SPECIAL REGISTERS(IOPMOD)의 Offset Address는 0x5000이다.
I/O PORT DATA REGISTER(IOPDATA)의 Offset Address는 0x5008이다.
TIMER MODE REGISTER(TMOD)의 Offset Address는 0x6000이다.
TIMER DATA REGISTERS(TDATA0) )의 Offset Address는 0x6004이다.
TIMER COUNT REGISTERS(TCNT0)의 Offset Address는 0x600C이다.
7. Conclusion
이번 실험은 인터럽트와 타이머를 이용하여 숫자를 카운트하는 것이다. 이전에 딜레이문을 이용한 것과는 출력의 값은 같지만 타이머를 이용하기 때문에 필요한 때에 보다 정확한 값을 출력할 수 있기 때문에 유용하다. 하지만 이전의 딜레이는 여러 가지 형식과 많은 레지스터사용과 Handler 등의 개념이 필요치 않았기 때문에 보다 쉽게 접근 할 수 있었다. 예외처리, Handler, 타이머와 인터럽트 레지스터를 사용했기 때문에 실험을 시작하기 이전에 이와 같은 개념이 보다 정확하고 체계적으로 세워지지 않아 혼란을 겪었다. 어셈블러를 아직도 유용하게 사용하지 못해 프로그램이 길어지는 상황이다. 어셈블러가 기계어로서 하급언어이긴 하지만 능숙하게 사용한다면 프로그램의 길이가 지금보다 많이 간결해 질 수 있다고 생각한다.
8. References
[1] 안효복. "ARM으로 배우는 임베디드 시스템“, 한빛미디어(주), 2006.
[2] 윤덕용, “어셈블리와 C언어로 익히는 8051 마스터”, Ohm사, 2000.
[3] 윤덕용, “ARM7TDMI AT91SAM7S256으로 시작하기”, Ohm사, 2000.
[4] ARM 홈페이지, http://www.arm.com/
[5] Samsung, S3C4510B 데이터시트
  • 가격2,000
  • 페이지수20페이지
  • 등록일2011.12.30
  • 저작시기2011.9
  • 파일형식한글(hwp)
  • 자료번호#723618
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니