source: anotherchoice/tags/jsp-1.4.4-full-UTF8/config/sh1/sh1itu.h@ 26

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

initial

File size: 8.3 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-2004 by Embedded and Real-Time Systems Laboratory
7 * Toyohashi Univ. of Technology, JAPAN
8 * Copyright (C) 2001-2004 by Industrial Technology Institute,
9 * Miyagi Prefectural Government, JAPAN
10 *
11 * 上記著作権者
12は,以下の (1)〜(4) の条件か,Free Software Foundation
13 * によってå…
14¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
15 * 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
16 * を改変したものを含む.以下同じ)を使用・複製・改変・再é…
17å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
18 * 利用と呼ぶ)することを無償で許諾する.
19 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
20 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
21 * スコード中に含まれていること.
22 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
23 * 用できる形で再é…
24å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
25å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
26 * 者
27マニュアルなど)に,上記の著作権表示,この利用条件および下記
28 * の無保証規定を掲載すること.
29 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
30 * 用できない形で再é…
31å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
32 * と.
33 * (a) 再é…
34å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
35マニュアルなど)に,上記の著
36 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
37 * (b) 再é…
38å¸ƒã®å½¢æ…
39‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
40 * 報告すること.
41 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
42 * 害からも,上記著作権者
43およびTOPPERSプロジェクトをå…
44è²¬ã™ã‚‹ã“と.
45 *
46 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者
47お
48 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
49 * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
50 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
51 *
52 * @(#) $Id: sh1itu.h,v 1.8 2005/11/14 08:00:44 honda Exp $
53 */
54
55/*
56 * タイマドライバ
57 *     SH1内
58蔵のインテグレーテッド・タイマ・パルス・ユニットITUの
59 *     チャネル0を使用
60 */
61
62#ifndef _SH1ITU_H_
63#define _SH1ITU_H_
64
65/*
66 * クロック周波数依存の設定
67 *
68 *   クロック周波数はコンパイルオプションで与えられる
69 */
70
71/*
72 * タイマへのå…
73¥åŠ›ã‚¯ãƒ­ãƒƒã‚¯ã®åˆ†å‘¨æ¯”設定
74 * f/8でカウント
75 */
76#define TCR_TPSC 0x3u
77
78/*
79 * タイマに供給されるクロック周波数[kHz]
80 * 20MHz/8 =2.5MHz =2500kHz
81 */
82#ifdef CONFIG_20MHZ
83#define TIMER_CLOCK 2500
84#endif
85
86/*
87 * 19.6608MHz/8 =2.4576MHz =2457.6kHz
88 */
89#ifdef CONFIG_19MHZ
90#define TIMER_CLOCK 2458
91#endif
92
93/*
94 * 16MHz/8 =2MHz =2000kHz
95 */
96#ifdef CONFIG_16MHZ
97#define TIMER_CLOCK 2000
98#endif
99
100
101
102/*
103 * タイマ値の内
104部表現の型
105 */
106typedef UH CLOCK;
107
108/*
109 * タイマ値の内
110部表現とミリ秒・μ秒単位との変換
111 *
112 */
113#define TO_CLOCK(nume, deno) (TIMER_CLOCK * (nume) / (deno))
114#define TO_USEC(clock) ((clock) * 1000 / TIMER_CLOCK)
115#define CLOCK_PER_TICK ((CLOCK) TO_CLOCK(TIC_NUME, TIC_DENO))
116
117/*
118 * 設定できる最大のタイマ周期(単位は内
119部表現)
120 */
121#define MAX_CLOCK ((CLOCK) 0xffffu)
122
123/*
124 * タイマの現在値を割込み発生前の値とみなすかの判断
125 */
126#define GET_TOLERANCE 100 /* 処理遅
127れの見積り値(単位は内
128部表現)*/
129#define BEFORE_IREQ(clock) \
130 ((clock) >= TO_CLOCK(TIC_NUME, TIC_DENO) - GET_TOLERANCE)
131
132
133/*
134 * コントロールレジスタのアドレス
135 */
136
137 /* å…
138±é€š */
139#define ITU_TSTR (VB *)0x5ffff00 /* タイマスタートレジスタ (1バイト)*/
140#define ITU_TSNC (VB *)0x5ffff01 /* タイマシンクロレジスタ (1バイト)*/
141#define ITU_TMDR (VB *)0x5ffff02 /* タイマモードレジスタ (1バイト) */
142 /* タイマファンクションコントロールレジスタ (1バイト) */
143#define ITU_TFCR (VB *)0x5ffff03
144 /* タイマアウトプットコントロールレジスタ (1バイト) */
145#define ITU_TOCR (VB *)0x5ffff31
146
147 /* ITU0 */
148#define ITU_TCR0 (VB *)0x5ffff04 /* タイマコントロールレジスタ0 (1バイト)*/
149 /* タイマI/Oコントロールレジスタ0 (1バイト)*/
150#define ITU_TIOR0 (VB *)0x5ffff05
151 /* タイマインタラプトイネーブルレジスタ0 (1バイト)*/
152#define ITU_TIER0 (VB *)0x5ffff06
153#define ITU_TSR0 (VB *)0x5ffff07 /* タイマステータスレジスタ0 (1バイト)*/
154#define ITU_TCNT0 (VH *)0x5ffff08 /* タイマカウンタ0 (2バイト)*/
155#define ITU_GRA0 (VH *)0x5ffff0a /* ジェネラルレジスタA0 (2バイト)*/
156#define ITU_GRB0 (VH *)0x5ffff0b /* ジェネラルレジスタB0 (2バイト)*/
157
158
159/*
160 * コントロールレジスタの設定値
161 */
162#define TSR_IMFA 0x01u /* GRAコンペアマッチフラグ */
163#define TSTR_STR0 0x01u /* タイマスタートビット */
164#define TCR_CCLR_GRA 0x20u /* GRAコンペアマッチでカウンタをクリア */
165#define TIER_RESERVE 0x78u /* TIERレジスタの予約ビット */
166#define TIER_IMIEA 0x01u /* GRAコンペアマッチによる割込み要求を許可 */
167#define TIOR_RESERVE 0x08u /* TIORレジスタの予約ビット */
168#define TIOR_IOA 0x00u /* GRAコンペアマッチによる端子出力禁止 */
169
170
171#ifndef _MACRO_ONLY
172
173/*
174 * タイマスタート
175 */
176Inline void
177sh1_itu_start(void)
178{
179 sh1_orb_reg(ITU_TSTR, TSTR_STR0);
180}
181
182/*
183 * タイマ一時停止
184 */
185Inline void
186sh1_itu_stop(void)
187{
188 sh1_anb_reg(ITU_TSTR, (VB)~TSTR_STR0);
189}
190
191/*
192 * タイマ割込み要求のクリア
193 * TCRレジスタのIMFAビットは1回読み出した後に0を書き込む
194 */
195Inline void
196sh1_itu_int_clear(void)
197{
198 /* 割り込み要求をクリア */
199 /* (GRAコンペアマッチフラグ) */
200 sh1_anb_reg(ITU_TSR0, (VB)~TSR_IMFA);
201}
202
203
204/*
205 * タイマの起動処理
206 *
207 * タイマを初期化し,周期的なタイマ割込み要求を発生させる.
208 */
209Inline void
210sh1_itu_initialize(void)
211{
212 CLOCK cyc = TO_CLOCK(TIC_NUME, TIC_DENO);
213
214
215 /*
216 * タイマ関連の設定
217 */
218 sh1_itu_stop(); /* タイマ停止 */
219 /* タイマ上限値のチェック */
220 assert(cyc <= MAX_CLOCK);
221 /* GRAコンペアマッチでカウンタをクリア */
222 /* 分周比設定 */
223 sil_wrb_mem(ITU_TCR0, TCR_CCLR_GRA | TCR_TPSC);
224 /* GRAコンペアマッチによる割込み要求を許可 */
225 sil_wrb_mem(ITU_TIER0, TIER_RESERVE | TIER_IMIEA);
226 /* GRAコンペアマッチによる端子出力禁止 */
227 sil_wrb_mem(ITU_TIOR0, TIOR_RESERVE | TIOR_IOA);
228 /* GRAレジスタ設定(カウンタ目標値) */
229 sil_wrh_mem(ITU_GRA0, CLOCK_PER_TICK);
230 sil_wrh_mem(ITU_TCNT0, 0); /* カウンタをクリア */
231
232}
233
234/*
235 * タイマの停止処理
236 *
237 * タイマの動作を停止させる.
238 */
239Inline void
240sh1_itu_terminate(void)
241{
242 sh1_itu_stop(); /* タイマを停止 */
243 sh1_itu_int_clear(); /* 割り込み要求をクリア */
244
245 /* タイマ割込みを禁止 */
246 /* (OVIE,IMIEB,IMIEAビットをクリア) */
247 sil_wrb_mem(ITU_TIER0, TIER_RESERVE);
248}
249
250/*
251 * タイマの現在値の読出し
252 *   タイマの動作を一時的に停止し,タイマ値を読み出す.
253 */
254Inline CLOCK
255sh1_itu_get_current(void)
256{
257 CLOCK clk;
258
259
260 sh1_itu_stop(); /* タイマ停止 */
261
262 /* 本来は待
263ち時間をå…
264¥ã‚Œã‚‹ã¹ã */
265
266 clk = sil_reh_mem(ITU_TCNT0);
267 sh1_itu_start(); /* タイマスタート */
268
269 return(clk);
270}
271
272/*
273 * タイマ割込み要求のチェック
274 */
275Inline BOOL
276sh1_itu_fetch_interrupt(void)
277{
278 VB tsr0 = sil_reb_mem(ITU_TSR0);
279 return(tsr0 & TSR_IMFA);
280}
281
282#endif /* _MACRO_ONLY */
283#endif /* _SH1ITU_H_ */
Note: See TracBrowser for help on using the repository browser.