source: UsbWattMeter/trunk/asp_dcre/target/grsakura_ccrx/target_timer.h

Last change on this file was 167, checked in by coas-nagasima, 6 years ago

MIMEにSJISを設定

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