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

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

initial

File size: 5.7 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.5 2007/01/05 02:33:59 honda Exp $
50 */
51
52/*
53 * タイマドライバ(OAKS16用)
54 */
55
56#ifndef _HW_TIMER_H_
57#define _HW_TIMER_H_
58
59#include <s_services.h>
60#include <sil.h>
61#include <oaks16.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 16000
89#define TO_CLOCK(nume, deno) (TIMER_CLOCK * (nume) / (deno))
90#define TO_USEC(clock) ((clock) * 1000 / TIMER_CLOCK)
91
92/*
93 * 設定できる最大のタイマ周期(単位は内
94部表現)
95 */
96#define MAX_CLOCK ((CLOCK) 0xffff)
97
98/*
99 * 性能評価用システム時刻を取り出す際の処理時間の見積り値(単位は内
100部表現)
101 */
102#define GET_TOLERANCE 100 /* 処理遅
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 /* タイマ初期化 */
117 sil_wrb_mem((VP)TADR_SFR_TABSR, 0x00); /* タイマカウント停止 */
118 sil_wrb_mem((VP)TADR_SFR_UDF, 0x00); /* ダウンカウント設定 */
119 sil_wrb_mem((VP)TADR_SFR_TA0MR, 0x00); /* カウントソースf1, タイマモード */
120 /*
121 * タイマは 1msで TIMER_CLOCK カウント,
122 * レジスタ設定値はマイナス1する.
123 */
124 sil_wrh_mem((VP)TADR_SFR_TA0, TIMER_CLOCK-1);/* タイマ値の初期化 */
125 /* 割り込みレベルの設定 */
126 set_ic_ilvl((VP)(TADR_SFR_INT_BASE+TADR_SFR_TA0IC_OFFSET), INT_LEVEL_TIMER);
127 /* カウント開始 */
128 sil_wrb_mem((VP)TADR_SFR_TABSR, TBIT_TABSR_TA0S);
129}
130
131/*
132 * タイマ割込み要求のクリア
133 */
134Inline void
135hw_timer_int_clear(void)
136{
137 /*
138 * この関数はタイマ割り込みハンドラが
139 * isig_tim を呼び出す前に実行される.
140 * 割込みが受け付けられてから
141 * 割込みハンドラに処理が移った時点で
142 * 割込み要求ビットはクリアされるため
143 * 何もする必
144要がない.
145 */
146}
147
148/*
149 * タイマの停止処理
150 *
151 * タイマの動作を停止させる.
152 */
153Inline void
154hw_timer_terminate(void)
155{
156 VB c;
157
158 c = sil_reb_mem((VP)TADR_SFR_TABSR);
159 c &= ~TBIT_TABSR_TA0S; /* カウント終了 */
160 sil_wrb_mem((VP)TADR_SFR_TABSR, c);
161}
162
163/*
164 * タイマの現在値の読出し
165 */
166Inline CLOCK
167hw_timer_get_current(void)
168{
169 return (TIMER_CLOCK-1)-sil_reh_mem((VP)TADR_SFR_TA0);
170}
171
172/*
173 * タイマ割込み要求のチェック
174 */
175Inline BOOL
176hw_timer_fetch_interrupt(void)
177{
178 return (sil_reb_mem((VP)(TADR_SFR_INT_BASE+TADR_SFR_TA0IC_OFFSET)) & TBIT_TAiIC_IR) != 0;
179}
180
181#endif /* _MACRO_ONLY */
182#endif /* _HW_TIMER_H_ */
Note: See TracBrowser for help on using the repository browser.