head 1.1; branch 1.1.1; access ; symbols noReleaseTag:1.1.1.1 noVendorName:1.1.1; locks ; strict; comment @# @; 1.1 date 2003.02.10.04.04.58; author doru; state Exp; branches 1.1.1.1; next ; 1.1.1.1 date 2003.02.10.04.04.58; author doru; state Exp; branches ; next ; desc @@ 1.1 log @Initial revision @ text @ Interrupts
Main Page   Modules   Related Pages  

Interrupts
[Pipeline details]

General
The Interrupt System can forcedly place calls into the pipeline stage s3, as a result of specific IO activity.

Implementation
The core of the Interrupt System is the Interrupt Manager module. It prioritizes the interrupt sources, checks if interrupts are enabled and if the pipeline is ready to process interrupts, and finally sends interrupt requests to the pipeline, together with the associated interrupt vector and other pipeline control signals.

pavr_hwres_int_01.gif

The pipeline acknowledges interrupt requests by forcing the Instruction Decoder to decode a call instruction, with the absolute jump address given by the Interrupt Manager. Next 2 instructions, that were already uselessly fetched, are flushed.

The interrupt vectors are parameterized, and can be placed anywhere in the Program Memory.
Every interrupt has a parameterized priority.
In the present implementation, up to 32 interrupt sources are handled.
2 interrupt sources are implemented: external interrupt 0 and timer 0 interrupt.

Because the Interrupt Manger shares much with the IO File, it is not built as a separate entity, but rather embedded into the IO File. The Interrupt Manager might be implemented as separate entity in a future version of pAVR.

The interrupt latency is 5 clocks (1 clock needed by the interrupt manager and 4 clocks needed by the implicit call).

Generated on Tue Dec 31 20:26:31 2002 for Pipelined AVR microcontroller by doxygen1.2.16
@ 1.1.1.1 log @Importing into repository the new directory structure. @ text @@