source: uKadecot/trunk/ssp/target/grsakura_ccrx/target_timer.h

Last change on this file was 108, checked in by coas-nagasima, 9 years ago

MIMEプロパティの変更

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
  • Property svn:mime-type set to text/x-chdr; charset=SHIFT_JIS
File size: 4.9 KB
Line 
1/*
2 * TOPPERS/SSP Kernel
3 * Smallest Set Profile Kernel
4 *
5 * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
6 * Toyohashi Univ. of Technology, JAPAN
7 * Copyright (C) 2003-2004 by Naoki Saito
8 * Nagoya Municipal Industrial Research Institute, JAPAN
9 * Copyright (C) 2003-2004 by Platform Development Center
10 * RICOH COMPANY,LTD. JAPAN
11 * Copyright (C) 2008-2010 by Witz Corporation, JAPAN
12 * Copyright (C) 2013 by Mitsuhiro Matsuura
13 *
14 * 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
15 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
16 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
17 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
18 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
19 * スコード中に含まれていること.
20 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
21 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
22 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
23 * の無保証規定を掲載すること.
24 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
25 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
26 * と.
27 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
28 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
29 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
30 * 報告すること.
31 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
32 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
33 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
34 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
35 * 免責すること.
36 *
37 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
38 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
39 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
40 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
41 * の責任を負わない.
42 *
43 */
44
45/*
46 * タイマドライバ(GR-SAKURA用)
47 */
48
49#ifndef TOPPERS_TARGET_TIMER_H
50#define TOPPERS_TARGET_TIMER_H
51
52#include <sil.h>
53#include "target_config.h"
54#include "grsakura.h"
55#include "target_syssvc.h"
56
57/*
58 * タイマ割込みハンドラ登録のための定数
59 */
60#define INHNO_TIMER INT_CMT0_CMI /* 割込みハンドラ番号 */
61#define INTNO_TIMER INT_CMT0_CMI /* 割込み番号 */
62#define INTPRI_TIMER -5 /* 割込み優先度 */
63#define INTATR_TIMER (TA_ENAINT | TA_EDGE) /* 割込み属性 */
64
65#ifndef TOPPERS_MACRO_ONLY
66
67/*
68 * タイマ値の内部表現の型
69 */
70typedef uint16_t CLOCK;
71
72/*
73 * タイマ値の内部表現とミリ秒単位との変換
74 *
75 * 1msのタイマー割り込みを使用するのでそのクロックを定義する.
76 */
77#define TIMER_CLOCK (FREQ_PCLK / 8U) /* PCLK/最低分周比8 = 6MHz */
78#define TO_CLOCK(nume, deno) ((CLOCK)(TIMER_CLOCK * (nume) / (deno)))
79#define TO_USEC(clock) ((SYSUTM)((clock) * 1000U / TIMER_CLOCK))
80
81/*
82 * 設定できる最大のタイマ周期(単位は内部表現)
83 */
84#define MAX_CLOCK ((CLOCK) 0xFFFFU)
85
86/*
87 * 性能評価用システム時刻を取り出す際の処理時間の見積り値(単位は内部表現)
88 */
89#define GET_TOLERANCE (100U) /* 処理遅れの見積り値(単位は内部表現)*/
90#define BEFORE_IREQ(clock) \
91 ((clock) >= (TO_CLOCK(TIC_NUME, TIC_DENO) - GET_TOLERANCE))
92
93/*
94 * コンペアマッチタイマコントロールレジスタの設定値
95 */
96/*
97 * クロック選択ビット
98 *
99 * bit7は予約領域であり, 書込みは1固定
100 */
101#define CMT_PCLK_DIV_8 (0x0080U)
102#define CMT_PCLK_DIV_32 (0x0081U)
103#define CMT_PCLK_DIV_128 (0x0082U)
104#define CMT_PCLK_DIV_512 (0x0083U)
105
106/*
107 * コンペアマッチタイマコンスタントレジスタ(CMCOR)
108 *
109 * コンペアマッチ周期を1msとする.
110 * 周辺モジュールクロック(PCLK)48MHzを8分周するので,
111 * 1周期あたり166.7nsecとなり,6000周期で1ms(タイムティックの周期)とする.
112 */
113#define CMCOR_PERIOD (TIMER_CLOCK)
114
115/*
116 * コンペアマッチタイマ割り込み要求先設定レジスタi(ISELRi)(i= 割り込みベクタ番号)
117 */
118#define ICU_ISEL_CPU (0x00U)
119
120
121
122
123/*
124 * タイマの起動処理
125 *
126 * タイマを初期化し,周期的なタイマ割込み要求を発生させる.
127 */
128extern void target_timer_initialize(intptr_t exinf);
129
130/*
131 * タイマの停止処理
132 *
133 * タイマの動作を停止させる.
134 */
135extern void target_timer_terminate(intptr_t exinf);
136
137/*
138 * タイマレジスタ値の読み出し
139 */
140Inline uint16_t rx630_cmt_getcount(void)
141{
142 return sil_reh_mem(CMT0_CMCNT_ADDR);
143}
144
145/*
146 * タイマレジスタ値の書き込み
147 */
148Inline void rx630_cmt_setcount(uint16_t count)
149{
150 sil_wrh_mem(CMT0_CMCNT_ADDR, count);
151}
152
153/*
154 * タイマの現在値の読出し
155 */
156Inline CLOCK
157target_timer_get_current(void)
158{
159 /* アップカウントのためタイマレジスタ値をそのまま返す */
160 return (rx630_cmt_getcount());
161}
162
163/*
164 * タイマ割込み要求のチェック
165 */
166Inline bool_t
167target_timer_probe_int(void)
168{
169 return(x_probe_int(INTNO_TIMER));
170}
171
172/*
173 * タイマ割込みハンドラ
174 */
175extern void target_timer_handler(void);
176
177#endif /* TOPPERS_MACRO_ONLY */
178#endif /* TOPPERS_TARGET_TIMER_H */
Note: See TracBrowser for help on using the repository browser.