source: anotherchoice/tags/jsp-1.4.4-full-UTF8/config/m32c-renesas/oaks32/hw_timer.h@ 26

Last change on this file since 26 was 26, checked in by ykominami, 10 years ago

initial

File size: 5.9 KB
Line 
1/*
2 * TOPPERS/JSP Kernel
3 * Toyohashi Open Platform for Embedded Real-Time Systems/
4 * Just Standard Profile Kernel
5 *
6 * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
7 * Toyohashi Univ. of Technology, JAPAN
8 * Copyright (C) 2003-2004 by Naoki Saito
9 * Nagoya Municipal Industrial Research Institute, JAPAN
10 * Copyright (C) 2003-2004 by Platform Development Center
11 * RICOH COMPANY,LTD. JAPAN
12 *
13 * 上記著作権者
14は,Free Software Foundation によってå…
15¬è¡¨ã•ã‚Œã¦ã„ã‚‹
16 * GNU General Public License の Version 2 に記述されている条件か,以
17 * 下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェア(本ソフトウェ
18 * アを改変したものを含む.以下同じ)を使用・複製・改変・再é…
19å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
20 * 利用と呼ぶ)することを無償で許諾する.
21 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
22 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
23 * スコード中に含まれていること.
24 * (2) 本ソフトウェアを再利用可能なバイナリコード(リロケータブルオブ
25 * ジェクトファイルやライブラリなど)の形で利用する場合には,利用
26 * に伴うドキュメント(利用者
27マニュアルなど)に,上記の著作権表示,
28 * この利用条件および下記の無保証規定を掲載すること.
29 * (3) 本ソフトウェアを再利用不可能なバイナリコードの形または機器に組
30 * み込んだ形で利用する場合には,次のいずれかの条件を満たすこと.
31 * (a) 利用に伴うドキュメント(利用者
32マニュアルなど)に,上記の著作
33 * 権表示,この利用条件および下記の無保証規定を掲載すること.
34 * (b) 利用の形æ…
35‹ã‚’,別に定める方法によって,上記著作権者
36に報告する
37 * こと.
38 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
39 * 害からも,上記著作権者
40をå…
41è²¬ã™ã‚‹ã“と.
42 *
43 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者
44は,
45 * 本ソフトウェアに関して,その適用可能性も含めて,いかなる保証も行わ
46 * ない.また,本ソフトウェアの利用により直接的または間接的に生じたい
47 * かなる損害に関しても,その責任を負わない.
48 *
49 * @(#) $Id: hw_timer.h,v 1.4 2005/12/06 02:55:09 honda Exp $
50 */
51
52/*
53 * タイマドライバ(OAKS32用)
54 */
55
56#ifndef _HW_TIMER_H_
57#define _HW_TIMER_H_
58
59#include <s_services.h>
60#include <sil.h>
61#include <oaks32.h>
62
63/*
64 * タイマ割込みハンドラのベクタ番号
65 */
66#define INHNO_TIMER INT_TA0
67
68/*
69 * タイマーの割り込みレベル
70 */
71
72#define INT_LEVEL_TIMER 0x05
73
74#ifndef _MACRO_ONLY
75
76/*
77 * タイマ値の内
78部表現の型
79 */
80typedef UH CLOCK;
81
82/*
83 * タイマ値の内
84部表現とミリ秒単位との変換
85 *
86 * 1msのタイマー割り込みを使用するのでそのクロックを定義する.
87 */
88#define TIMER_CLOCK (30000u) /* 30MHz */
89#define TO_CLOCK(nume, deno) ((CLOCK)(TIMER_CLOCK * (nume) / (deno)))
90#define TO_USEC(clock) ((SYSUTIM)(clock) * 1000u / TIMER_CLOCK)
91
92/*
93 * 設定できる最大のタイマ周期(単位は内
94部表現)
95 */
96#define MAX_CLOCK ((CLOCK) 0xffffu)
97
98/*
99 * 性能評価用システム時刻を取り出す際の処理時間の見積り値(単位は内
100部表現)
101 */
102#define GET_TOLERANCE (100u) /* 処理遅
103れの見積り値(単位は内
104部表現)*/
105#define BEFORE_IREQ(clock) \
106 ((clock) >= TO_CLOCK(TIC_NUME, TIC_DENO) - GET_TOLERANCE)
107
108/*
109 * タイマの起動処理
110 *
111 * タイマを初期化し,周期的なタイマ割込み要求を発生させる.
112 */
113Inline void
114hw_timer_initialize(void)
115{
116 VB tabsr;
117
118 /*
119 * タイマ初期化
120 */
121
122 /* タイマカウント停止 */
123 tabsr = sil_reb_mem((VP)TADR_SFR_TABSR);
124 tabsr &= ~TBIT_TABSR_TA0S;
125 sil_wrb_mem((VP)TADR_SFR_TABSR, tabsr);
126
127 sil_wrb_mem((VP)TADR_SFR_UDF, 0x00); /* ダウンカウント設定 */
128 sil_wrb_mem((VP)TADR_SFR_TA0MR, 0x00); /* カウントソースf1, タイマモード */
129 /*
130 * タイマは 1msで TIMER_CLOCK カウント,
131 * レジスタ設定値はマイナス1する.
132 */
133 sil_wrh_mem((VP)TADR_SFR_TA0, TO_CLOCK(TIC_NUME, TIC_DENO)-1);/* タイマ値の初期化 */
134
135 /* 割り込みレベルの設定 */
136 sil_wrb_mem((VP)(TADR_SFR_INT_BASE+TADR_SFR_TA0IC_OFFSET), INT_LEVEL_TIMER);
137 /* カウント開始 */
138 /* タイマカウント開始 */
139 tabsr = sil_reb_mem((VP)TADR_SFR_TABSR);
140 tabsr |= TBIT_TABSR_TA0S;
141 sil_wrb_mem((VP)TADR_SFR_TABSR, tabsr);
142}
143
144/*
145 * タイマ割込み要求のクリア
146 */
147Inline void
148hw_timer_int_clear(void)
149{
150 /*
151 * この関数はタイマ割り込みハンドラが
152 * isig_tim を呼び出す前に実行される.
153 * 割込みが受け付けられてから
154 * 割込みハンドラに処理が移った時点で
155 * 割込み要求ビットはクリアされるため
156 * 何もする必
157要がない.
158 */
159}
160
161/*
162 * タイマの停止処理
163 *
164 * タイマの動作を停止させる.
165 */
166Inline void
167hw_timer_terminate(void)
168{
169 VB c;
170
171 c = sil_reb_mem((VP)TADR_SFR_TABSR);
172 c &= ~TBIT_TABSR_TA0S; /* カウント終了 */
173 sil_wrb_mem((VP)TADR_SFR_TABSR, c);
174}
175
176/*
177 * タイマの現在値の読出し
178 */
179Inline CLOCK
180hw_timer_get_current(void)
181{
182 return ((CLOCK)(TO_CLOCK(TIC_NUME, TIC_DENO)-1)-sil_reh_mem((VP)TADR_SFR_TA0));
183}
184
185/*
186 * タイマ割込み要求のチェック
187 */
188Inline BOOL
189hw_timer_fetch_interrupt(void)
190{
191 return ((sil_reb_mem((VP)(TADR_SFR_INT_BASE+TADR_SFR_TA0IC_OFFSET)) & TBIT_TAiIC_IR) != 0);
192}
193
194#endif /* _MACRO_ONLY */
195#endif /* _HW_TIMER_H_ */
Note: See TracBrowser for help on using the repository browser.