
Chapter 4. Interrupts Page 4-15
4.4.2.10 ERRLIMIT Interrupt
This interrupt is asserted when the USB error-limit counter has exceeded the preset error limit
threshold. See Section 8.6.3.3 for full details.
4.4.2.11 EPxISOERR Interrupt
These interrupts are asserted when an ISO data PID is missing or arrives out of sequence, or
when an ISO packet is dropped because no buffer space is available (to receive an OUT packet)
or no data is available to be sent (from an IN buffer).
4.5 USB-Interrupt Autovectors
The main USB interrupt is shared by 27 interrupt sources. To save the code and processing time
which normally would be required to identify the individual USB interrupt source, the FX2 provides
a second level of interrupt vectoring, called Autovectoring. When a USB interrupt is asserted, the
FX2 pushes the program counter onto its stack then jumps to address 0x0043, where it expects to
find a “jump” instruction to the USB Interrupt service routine.
The FX2 jump instruction is encoded as follows:
If Autovectoring is enabled (AV2EN=1 in the INTSETUP register), the FX2 substitutes its INT2VEC
byte (see Table 4-10) for the byte at address 0x0045. Therefore, if the high byte (“page”) of a jump-
table address is preloaded at location 0x0044, the automatically-inserted INT2VEC byte at 0x0045
will direct the jump to the correct address out of the 27 addresses within the page.
As shown in Table 4-13, the jump table contains a series of jump instructions, one for each individ-
ual USB Interrupt source’s ISR.
Table 4-12. FX2 JUMP Instruction
Address Op-Code Hex Value
0x0043 LJMP 0x02
0x0044 AddrH 0xHH
0x0045 AddrL 0xLL
Komentáře k této Příručce