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

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

initial

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