source: rubycfg_asp/trunk/asp_dcre/target/gr_sakura_ccrx/target_timer.h@ 313

Last change on this file since 313 was 313, checked in by coas-nagasima, 7 years ago

ソースを追加

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
  • Property svn:mime-type set to text/x-chdr
File size: 6.1 KB
Line 
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 * 上記著作権者
16は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
17 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
18 * 変・再é…
19å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
20 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
21 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
22 * スコード中に含まれていること.
23 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
24 * 用できる形で再é…
25å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
26å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
27 * 者
28マニュアルなど)に,上記の著作権表示,この利用条件および下記
29 * の無保証規定を掲載すること.
30 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
31 * 用できない形で再é…
32å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
33 * と.
34 * (a) 再é…
35å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
36マニュアルなど)に,上記の著
37 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
38 * (b) 再é…
39å¸ƒã®å½¢æ…
40‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
41 * 報告すること.
42 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
43 * 害からも,上記著作権者
44およびTOPPERSプロジェクトをå…
45è²¬ã™ã‚‹ã“と.
46 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
47 * 由に基づく請求からも,上記著作権者
48およびTOPPERSプロジェクトを
49 * å…
50è²¬ã™ã‚‹ã“と.
51 *
52 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者
53お
54 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
55 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
56 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
57 * の責任を負わない.
58 *
59 * @(#) $Id: target_timer.h 313 2017-07-23 04:50:32Z coas-nagasima $
60 */
61
62/*
63 * タイマドライバ
64 */
65
66#ifndef TOPPERS_TARGET_TIMER_H
67#define TOPPERS_TARGET_TIMER_H
68
69#include <sil.h>
70#include "gr_sakura.h"
71#include "target_syssvc.h"
72
73/*
74 * タイマ割込みハンドラ登録のための定数
75 */
76#define INHNO_TIMER INT_CMT0_CMI /* 割込みハンドラ番号 */
77#define INTNO_TIMER INT_CMT0_CMI /* 割込み番号 */
78#define INTPRI_TIMER -5 /* 割込み優å…
79ˆåº¦ */
80#define INTATR_TIMER (TA_ENAINT | TA_EDGE) /* 割込み属性 */
81
82#ifndef TOPPERS_MACRO_ONLY
83
84/*
85 * タイマ値の内
86部表現の型
87 */
88typedef uint16_t CLOCK;
89
90/*
91 * タイマ値の内
92部表現とミリ秒単位との変換
93 *
94 * 1msのタイマー割り込みを使用するのでそのクロックを定義する.
95 */
96#define TIMER_CLOCK (48000U / 8U) /* PCLK/最低分周比8 = 6MHz */
97#define TO_CLOCK(nume, deno) ((CLOCK)(TIMER_CLOCK * (nume) / (deno)))
98#define TO_USEC(clock) ((SYSUTM)((clock) * 1000U / TIMER_CLOCK))
99
100/*
101 * 設定できる最大のタイマ周期(単位は内
102部表現)
103 */
104#define MAX_CLOCK ((CLOCK) 0xFFFFU)
105
106/*
107 * 性能評価用システム時刻を取り出す際の処理時間の見積り値(単位は内
108部表現)
109 */
110#define GET_TOLERANCE (100U) /* 処理遅
111れの見積り値(単位は内
112部表現)*/
113#define BEFORE_IREQ(clock) \
114 ((clock) >= (TO_CLOCK(TIC_NUME, TIC_DENO) - GET_TOLERANCE))
115
116/*
117 * コンペアマッチタイマコントロールレジスタの設定値
118 */
119/*
120 * クロック選択ビット
121 *
122 * bit7は予約領域であり, 書込みは1固定
123 */
124#define CMT_PCLK_DIV_8 (0x0080U)
125#define CMT_PCLK_DIV_32 (0x0081U)
126#define CMT_PCLK_DIV_128 (0x0082U)
127#define CMT_PCLK_DIV_512 (0x0083U)
128
129/*
130 * コンペアマッチタイマコンスタントレジスタ(CMCOR)
131 *
132 * コンペアマッチ周期を1msとする.
133 * 周辺モジュールクロック(PCLK)48MHzを8分周するので,
134 * 1周期あたり166nsecとなり,6000周期で1ms(タイムティックの周期)とする.
135 */
136#define CMCOR_PERIOD (TIMER_CLOCK)
137
138/*
139 * コンペアマッチタイマ割り込み要求å…
140ˆè¨­å®šãƒ¬ã‚¸ã‚¹ã‚¿i(ISELRi)(i= 割り込みベクタ番号)
141 */
142#define ICU_ISEL_CPU (0x00U)
143
144
145
146
147/*
148 * タイマの起動処理
149 *
150 * タイマを初期化し,周期的なタイマ割込み要求を発生させる.
151 */
152extern void target_timer_initialize(intptr_t exinf);
153
154/*
155 * タイマの停止処理
156 *
157 * タイマの動作を停止させる.
158 */
159extern void target_timer_terminate(intptr_t exinf);
160
161/*
162 * タイマレジスタ値の読み出し
163 */
164Inline uint16_t rx630_cmt_getcount(void)
165{
166 return *CMT0_CMCNT_ADDR;
167}
168
169/*
170 * タイマレジスタ値の書き込み
171 */
172Inline void rx630_cmt_setcount(uint16_t count)
173{
174 *CMT0_CMCNT_ADDR = count;
175}
176
177/*
178 * タイマの現在値の読出し
179 */
180Inline CLOCK
181target_timer_get_current(void)
182{
183 /* アップカウントのためタイマレジスタ値をそのまま返す */
184 return (rx630_cmt_getcount());
185}
186
187/*
188 * タイマ割込み要求のチェック
189 */
190Inline bool_t
191target_timer_probe_int(void)
192{
193 return(x_probe_int(INTNO_TIMER));
194}
195
196/*
197 * タイマ割込みハンドラ
198 */
199extern void target_timer_handler(void);
200
201#endif /* TOPPERS_MACRO_ONLY */
202#endif /* TOPPERS_TARGET_TIMER_H */
Note: See TracBrowser for help on using the repository browser.