2 * Sample program for Hyper Operating System V4 Advance
5 * @brief %jp{OSタイマ}%en{OS timer}
7 * Copyright (C) 1998-2008 by Project HOS
8 * http://sourceforge.jp/projects/hos/
18 #define REG_TIMER_BASE 0x41c00000
19 #define REG_TIMER_TCSR0 ((volatile unsigned long *)(REG_TIMER_BASE + 0x00))
20 #define REG_TIMER_TLR0 ((volatile unsigned long *)(REG_TIMER_BASE + 0x04))
21 #define REG_TIMER_TCR0 ((volatile unsigned long *)(REG_TIMER_BASE + 0x08))
22 #define REG_TIMER_TCSR1 ((volatile unsigned long *)(REG_TIMER_BASE + 0x10))
23 #define REG_TIMER_TLR1 ((volatile unsigned long *)(REG_TIMER_BASE + 0x14))
24 #define REG_TIMER_TCR1 ((volatile unsigned long *)(REG_TIMER_BASE + 0x18))
27 static void OsTimer_Isr(VP_INT exinf); /**< %jp{タイマ割込みサービスルーチン} */
30 /** %jp{OS用タイマ初期化ルーチン} */
31 void OsTimer_Initialize(VP_INT exinf)
35 /* %jp{割込みサービスルーチン生成} */
36 cisr.isratr = TA_HLNG;
38 cisr.intno = INTNO_TIMER;
39 cisr.isr = (FP)OsTimer_Isr;
43 *REG_TIMER_TLR0 = 100000 - 1; /* 1ms 100MHz */
44 *REG_TIMER_TCSR0 = 0x0132; /* clear int, load counter */
45 *REG_TIMER_TCSR0 = 0x00d2; /* start */
52 /** %jp{タイマ割込みハンドラ} */
53 void OsTimer_Isr(VP_INT exinf)
55 *REG_TIMER_TCSR0 |= 0x0100; /* clear int */
56 vclr_int(INTNO_TIMER);