Base address: 0x80810080
Three registers:
| Offset | Function | R/W | Bits |
| 0x0 | Timer3Load | R/W | 32: |
| 0x4 | Timer3Value | R | 32: |
| 0x8 | Timer3Control | R/W | 3:xxx<CLKSEL>xx<MODE><ENABLE> |
| 0xc | Timer3Clear | W | 0: Writing anything clears the interrupt |
All input signals are
Base addresses
0x800B00000x800C0000VIC powers up with
Initialization
On an interrupt
For debugging
| Register Name | Offset | R/W | Description |
| VICxIRQStatus | 0x00 | R | One bit for each interrupt source
1 if interrupt is asserted and not masked |
| VICxFIQStatus | 0x04 | R | As above, for FIQ |
| VICxRawIntr | 0x08 | R | As above, not masked |
| VICxIntSelect | 0x0c | R/W | 0: IRQ, 1: FIQ |
| VICxIntEnable | 0x10 | R/W | 0: Masked, 1: Enabled |
| VICxIntEnClear | 0x14 | W | Clears bits in VICxIntEnable |
| VICxSoftInt | 0x18 | R/W | Asserts interrupt from software |
| VICxSoftIntClear | 0x1c | W | Clears interrupt from software |
| VICxProtection | 0x20 | R/W | Bit 0 enables protection from user mode access |
| VICxVectAddr | 0x30 | R/W | Enables priority hardware
See documentation. |
Initialization
When an interrupt occurs
Look carefully at what's in 0x18
ldr pc, [pc, #offset]<IRQ> is the offset from the pc to the kernel
entry0x18 + 0x8 - 0xffc = -0xfdc =
0xfffff0200x18 + 0x8 + 0xffc = 0x10200x800b00300x800c0030| Register Name | Offset | R/W | Description |
| VICxVectAddr | 0x030 | R/W | Read: address of vector for highest priority interrupt
Write: service complete, enable priority hardware |
| VICxDefVectAddr | 0x034 | R/W | Default vector address |
| VICxVectAddry | 0x100+4y | R/W | Vector address for interrupt y |
| VICxVectCntly | 0x200+4y | R/W | Control register for interrupt y
Bit[0-4]: interrupt source for interrupt y Bit[5]: enable vectored interrupt y |
Return to: