target_timer.h

#include <sil.h>
#include "dve68k.h"

ソースコードを見る。

マクロ定義

#define INHNO_TIMER   TINHNO_TT0
#define INTNO_TIMER   TINTNO_TT0
#define INTPRI_TIMER   TIRQ_LEVEL4
#define INTATR_TIMER   TA_EDGE
#define TIMER_CLOCK   1000U
#define TO_CLOCK(nume, deno)   ((CLOCK)(TIMER_CLOCK * (nume) / (deno)))
#define TO_USEC(clock)   (((SYSUTM) clock) * 1000U / TIMER_CLOCK)
#define MAX_CLOCK   ((CLOCK) 0xffffffU)
#define TIMER_STOP_DELAY   200U
#define CSR12_START   0x80000000U
#define CSR12_STOP   0x00000000U

型定義

typedef uint32_t CLOCK

関数

void target_timer_initialize (intptr_t exinf)
void target_timer_terminate (intptr_t exinf)
Inline CLOCK target_timer_get_current (void)
Inline bool_t target_timer_probe_int (void)
void target_timer_handler (void)


マクロ定義

#define CSR12_START   0x80000000U

target_timer.h92 行で定義されています。

参照元 target_timer_initialize().

#define CSR12_STOP   0x00000000U

target_timer.h93 行で定義されています。

参照元 target_timer_get_current(), と target_timer_terminate().

#define INHNO_TIMER   TINHNO_TT0

target_timer.h56 行で定義されています。

#define INTATR_TIMER   TA_EDGE

target_timer.h59 行で定義されています。

#define INTNO_TIMER   TINTNO_TT0

target_timer.h57 行で定義されています。

参照元 target_timer_handler(), target_timer_initialize(), と target_timer_probe_int().

#define INTPRI_TIMER   TIRQ_LEVEL4

target_timer.h58 行で定義されています。

#define MAX_CLOCK   ((CLOCK) 0xffffffU)

target_timer.h80 行で定義されています。

参照元 target_timer_initialize().

#define TIMER_CLOCK   1000U

target_timer.h73 行で定義されています。

#define TIMER_STOP_DELAY   200U

target_timer.h87 行で定義されています。

参照元 target_timer_get_current().

#define TO_CLOCK ( nume,
deno   )     ((CLOCK)(TIMER_CLOCK * (nume) / (deno)))

target_timer.h74 行で定義されています。

参照元 target_timer_initialize().

#define TO_USEC ( clock   )     (((SYSUTM) clock) * 1000U / TIMER_CLOCK)

target_timer.h75 行で定義されています。


型定義

typedef uint32_t CLOCK

target_timer.h66 行で定義されています。


関数

Inline CLOCK target_timer_get_current ( void   ) 

target_timer.h113 行で定義されています。

参照先 CSR12_STOP, dga_read(), dga_write(), sil_dly_nse(), SIL_LOC_INT, SIL_PRE_LOC, SIL_UNL_INT, TADR_DGA_CSR12, TADR_DGA_CSR13, と TIMER_STOP_DELAY.

00114 {
00115     CLOCK       clk;
00116     uint32_t    saved_csr12;
00117     SIL_PRE_LOC;
00118 
00119     /*
00120      *  タイマの動作を一時的に停止し,タイマ値を読み出す.タイマの動作
00121      *  を一時的に停止させると,システム時刻がずれるために望ましくない
00122      *  が,DVE68K/40のハードウェア的な制約であり,やむをえない.ずれを
00123      *  最小に抑えるために,割込みロック状態とする.
00124      */
00125     SIL_LOC_INT();
00126     saved_csr12 = dga_read((void *) TADR_DGA_CSR12);
00127     dga_write((void *) TADR_DGA_CSR12, CSR12_STOP);
00128     sil_dly_nse(TIMER_STOP_DELAY);
00129     clk = dga_read((void *) TADR_DGA_CSR13) & 0x00ffffffU;
00130     dga_write((void *) TADR_DGA_CSR12, saved_csr12);
00131     SIL_UNL_INT();
00132     return(clk);
00133 }

void target_timer_handler ( void   ) 

target_timer.c86 行で定義されています。

参照先 i_begin_int(), i_end_int(), INTNO_TIMER, と signal_time.

00087 {
00088     i_begin_int(INTNO_TIMER);
00089     signal_time();                  /* タイムティックの供給 */
00090     i_end_int(INTNO_TIMER);
00091 }

void target_timer_initialize ( intptr_t  exinf  ) 

target_timer.c54 行で定義されています。

参照先 assert, CSR12_START, dga_write(), INTNO_TIMER, MAX_CLOCK, TADR_DGA_CSR12, TIC_DENO, TIC_NUME, TO_CLOCK, と x_clear_int().

00055 {
00056     CLOCK   cyc = TO_CLOCK(TIC_NUME, TIC_DENO);
00057 
00058     /*
00059      *  タイマ周期を設定し,タイマの動作を開始する.
00060      */
00061     assert(cyc <= MAX_CLOCK);
00062     dga_write((void *) TADR_DGA_CSR12, CSR12_START | cyc);
00063 
00064     /*
00065      *  タイマ割込み要求をクリアする.
00066      */
00067     x_clear_int(INTNO_TIMER);
00068 }

Inline bool_t target_timer_probe_int ( void   ) 

target_timer.h139 行で定義されています。

参照先 INTNO_TIMER, と x_probe_int().

00140 {
00141     return(x_probe_int(INTNO_TIMER));
00142 }

void target_timer_terminate ( intptr_t  exinf  ) 

target_timer.c74 行で定義されています。

参照先 CSR12_STOP, dga_write(), と TADR_DGA_CSR12.

00075 {
00076     /*
00077      *  タイマの動作を停止する.
00078      */
00079     dga_write((void *) TADR_DGA_CSR12, CSR12_STOP);
00080 }


Copyright © 2008 by Kijineko Inc.

ホームページ制作