XE8000EV108 Semtech, XE8000EV108 Datasheet - Page 56

EVAL BOARD FOR XE8806/XE8807

XE8000EV108

Manufacturer Part Number
XE8000EV108
Description
EVAL BOARD FOR XE8806/XE8807
Manufacturer
Semtech
Type
MCUr
Datasheets

Specifications of XE8000EV108

Contents
Fully Assembled Evaluation Board
For Use With/related Products
XE88LC06AMI026
Lead Free Status / RoHS Status
Contains lead / RoHS non-compliant
First of all, the jump addresses are defined at the beginning of the crt0.s file. In our case, all three interrupt levels
jump to the same place (defined by the _interrupt label), but this can be changed if required.
The first thing to do when an interrupt is activated is to save the context. You have to start with saving the contents
of the accumulator, then the flags and finally the internal CPU registers. You will find this part of the code in the
IRQComon_xx.s file.
Next step is to determine which interrupt is activated. In this case, we use the value in the RegIrqPriority register
to determine the highest priority interrupt that was activated. Other ways can be used, especially when the priority
order fixed in the hardware needs to be changed. You will find this part of the code in the IRQComon_xx.s file. In
this example, the labels are used as defined for the XE8802.
© Semtech 2006
########################################################################
## Reset & interrupt vectors
########################################################################
_start:
_interrupt:
########################################################################
## Save all registers and flags
########################################################################
########################################################################
## The following lines enables the adress calculation of the interrupt
## table. Where RegIrqPriority is the addres offset for the table.
## The RegIrqPriority valid values are between 0x00 until 0x017. The
## 0xFF value should never exist.
########################################################################
_interrupttab:
jump
jump
jump
jump
move
calls _interrupttab
add
addc
add
addc
rets
; interrupt table
jump
jump
jump
jump
jump
jump
move
move
sflag
move
move
move
move
move
move
move
move
move
move
move
move
move
main_init
_interrupt
_interrupt
_interrupt
r0,RegIrqPriority
ipl,#0x05
iph,#0x00
ipl,r0
iph,#0x00
ret_int
ret_int
Irq_Pa2
Irq_Pa3
Irq_CntD
Irq_CntB
-(i3), a
a, r0
-(i3), a
-(i3), ipl
-(i3), iph
-(i3), i0l
-(i3), i0h
-(i3), i1l
-(i3), i1h
-(i3), i2l
-(i3), i2h
-(i3), r0
-(i3), r1
-(i3), r2
-(i3), r3
; reset
; IN1
; IN2
; IN0
; add the offset, nb instr. before table
; save pc+1 in ip
; propagate carry
; add the offset of the regirqpriority
; propagate carry
; put ip in pc
;
;
;
;
;
;
8-6
RegIrqPriority = 0x00
RegIrqPriority = 0x01
RegIrqPriority = 0x02
RegIrqPriority = 0x03
RegIrqPriority = 0x04
RegIrqPriority = 0x05
XE8806A/XE8807A
www.semtech.com

Related parts for XE8000EV108