Texas Instruments TMS320C2XX User Manual

Page 90

Advertising
background image

Direct Memory Access Using the HOLD Operation

4-28

Example 4–1. An Interrupt Service Routine Supporting INT1 and HOLD

.mmregs

;Include c2xx memory–mapped registers.

ICR

.set

0FFECh

;Define interrupt control register in I/O space.

ICRSHDW

.set

060h

;Define ICRSHDW in scratch pad location.

* Interrupt vectors *

reset

B

main

;0 – reset , Branch to main program on reset.

Int1h

B

int1_hold

;1 – external interrupt 1 or HOLD.

.space 40*16

;Fill 0000 between vectors and main program.

main:

SPLK

#0001h,imr

;Enable HOLD/INT1 interrupt line.

CLRC

INTM

wait:

B

wait

*********Interrupt service routine for HOLD logic*****************************

int1_hold:

; Perform any desired context save.

LDP

#0

;Set data–memory page to 0.

IN

ICRSHDW, ICR

;Save the contents of ICR register.

LACL

#010h

;Load accumulator (ACC) with mask for MODE bit.

AND

ICRSHDW

;Filter out all bits except MODE bit.

BCND

int1, neq

;Branch if MODE bit is 1, else in HOLD mode.

LACC

imr, 0

;Load ACC with interrupt mask register.

SPLK

#1, imr

;Mask all interrupts except interrupt1/HOLD.

IDLE

;Enter HOLD mode. Issues HOLDA, and puts
;buses in high impedance. Wait until
;rising edge is seen on HOLD/INT1 pin.

SPLK

#1, ifr

;Clear HOLD/INT1 flag in interrupt flag register
;to prevent re–entering HOLD mode.

SACL

imr

;Restore interrupt mask register.

; Perform necessary context restore.

CLRC

INTM

;Enable all interrupts.

RET

;Return from HOLD interrupt.

int1:

NOP

;Replace these NOPs with desired int1 interrupt

NOP

;service routine.

; Perform necessary context restore.
CLRC

INTM

;Enable all interrupts.

RET

;Return from interrupts.

Advertising