Timer Realtime-Interrupt

Funktion

Das Real Time Interrupt(RTI)-Modul erzeugt in regelmässigen Abständen Interruptsignale. Die Frequenz der Interruptsignale kann über einen Vorteiler aus dem "clk_i"-Takt eingestellt werden. Der Takteingang "clk_i" dieses Vorteilers kann beliebig mit dem Systemtakt, einem DCM Ausgang, einem Timerausgang oder dem Ausgang eines zweiten RTI verbunden werden. Durch Zugriff auf das RTI_CTRL-Register wird das Interruptsignal zurückgesetzt.
Gleichzeitig mit den Interruptsignalen werden auch an einem speziellen Ausgang des RTI-Moduls Impulse (Impulsbreite ist eine Periode des Eingangstaktes) erzeugt.

Register

Das Steuerregister RTI_CTRL enthält alle zur Steuerung der Funktionen des RTI Moduls nötigen Bits. Bei einem Reset werden alle Bits mit Null initialisiert. Auf das Register kann lesend und schreibend zugegriffen werden.

RTI_CTRL Funktion (read/write)
Bit 0: RTI enable: 0 = disable, 1 = enable
Bit 1: Int enable: 0 = disable, 1 = enable
Bit 2 bis 5: Vorteiler:
0000: 2⁰
0001: 2¹
0010: 2²
0011: 2³
0100: 2⁴
0101: 2⁵
0110: 2⁶
0111: 2⁷
1000: 2⁸
1001: 2⁹
1010: 2¹⁰
1011: 2¹¹
1100: 2¹²
1101: 2¹³
1110: 2¹⁴
1111: 2¹⁵
Bit 6 bis 17: nicht benutzt


rti.h

#ifndef __RTI_H
#define __RTI_H

#define RTI_EN          (1 << 0)
#define RTI_EN_INT      (1 << 1)
#define RTI_PRE_VAL     (1 << 2) // *0 fuer 2^0 bis *15 fuer 2^15

#define RTI_PRE_1       (RTI_PRE_VAL * 0)
#define RTI_PRE_2       (RTI_PRE_VAL * 1)
#define RTI_PRE_4       (RTI_PRE_VAL * 2)
#define RTI_PRE_8       (RTI_PRE_VAL * 3)
#define RTI_PRE_16      (RTI_PRE_VAL * 4)
#define RTI_PRE_32      (RTI_PRE_VAL * 5)
#define RTI_PRE_64      (RTI_PRE_VAL * 6)
#define RTI_PRE_128     (RTI_PRE_VAL * 7)
#define RTI_PRE_256     (RTI_PRE_VAL * 8)
#define RTI_PRE_512     (RTI_PRE_VAL * 9)
#define RTI_PRE_1024    (RTI_PRE_VAL * 10)
#define RTI_PRE_2048    (RTI_PRE_VAL * 11)
#define RTI_PRE_4096    (RTI_PRE_VAL * 12)
#define RTI_PRE_8192    (RTI_PRE_VAL * 13)
#define RTI_PRE_16384   (RTI_PRE_VAL * 14)
#define RTI_PRE_32768   (RTI_PRE_VAL * 15)

typedef struct rti {
    volatile unsigned int ctrl;
} rti_regs_t;

#endif

Konfiguration und Instanziierung

Bei der Instanziierung eines RTI-Moduls wird der Parameter BASE_ADR vom jConfig automatisch eingestellt. BASE_ADR gibt den Offset der Adresse des Moduls zur Basisadresse aller Peripherieregister an. Der Wert besteht aus den oberen sieben Bit der zehn Bit-Adresse eines Moduls (die unteren drei Bit werden nur modulintern benutzt).

Die Interruptleitung des Moduls muss an den gewünschten Eingang des Interruptkontrollers angeschlossen werden und der Ausgang für die RTI-Impulse an eine entsprechende Leitung.

Einstellungen für den Realtime-Interrupt

Image Image Image Image Image Image Image

SpartanMC