OSDN Git Service

チケット #25999 「SIOポートのピン割り当ての変更」に対応
[toppersasp4lpc/asp.git] / asp / arch / arm_m_gcc / common / core_timer.h
1 /*
2  *  TOPPERS/ASP Kernel
3  *      Toyohashi Open Platform for Embedded Real-Time Systems/
4  *      Advanced Standard Profile Kernel
5  * 
6  *  Copyright (C) 2008-2011 by Embedded and Real-Time Systems Laboratory
7  *              Graduate School of Information Science, Nagoya Univ., JAPAN
8  * 
9  *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
10  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
11  *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
12  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
13  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
14  *      スコード中に含まれていること.
15  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
16  *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
17  *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
18  *      の無保証規定を掲載すること.
19  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
20  *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
21  *      と.
22  *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
23  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
24  *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
25  *        報告すること.
26  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
27  *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
28  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
29  *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
30  *      免責すること.
31  * 
32  *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
33  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
34  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
35  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
36  *  の責任を負わない.
37  * 
38  *  @(#) $Id: core_timer.h 2183 2011-07-23 10:29:36Z ertl-honda $
39  */
40
41 /*
42  *  タイマドライバ(SYSTIC用)
43  */
44
45 #ifndef TOPPERS_CORE_TIMER_H
46 #define TOPPERS_CORE_TIMER_H
47
48 #include <sil.h>
49
50 /*
51  *  タイマ割込みハンドラ登録のための定数
52  */
53 #define INHNO_TIMER     IRQNO_SYSTICK /* 割込みハンドラ番号 */
54 #define INTNO_TIMER     IRQNO_SYSTICK /* 割込み番号 */
55
56 #ifndef TOPPERS_MACRO_ONLY
57
58 /*
59  *  タイマ値の内部表現の型
60  */
61 typedef uint32_t    CLOCK;
62
63 /*
64  *  タイマ値の内部表現とミリ秒・μ秒単位との変換
65  *
66  */
67 #define TO_CLOCK(nume, deno)    ((CLOCK)(TIMER_CLOCK * (nume) / (deno)))
68 #define TO_USEC(clock)          (((SYSUTM) clock) * 1000U / TIMER_CLOCK)
69
70 /*
71  *  設定できる最大のタイマ周期(単位は内部表現)
72  */
73 #define MAX_CLOCK    ((CLOCK) 0x00ffffffU)
74
75 /*
76  *  タイマの起動処理
77  *
78  *  タイマを初期化し,周期的なタイマ割込み要求を発生させる.
79  */
80 extern void target_timer_initialize(intptr_t exinf);
81
82 /*
83  *  タイマの停止処理
84  *
85  *  タイマの動作を停止させる.
86  */
87 extern void target_timer_terminate(intptr_t exinf);
88
89 /*
90  *  タイマの現在値の読出し
91  */
92 Inline CLOCK
93 target_timer_get_current(void)
94 {
95         return(TO_CLOCK(TIC_NUME, TIC_DENO) - sil_rew_mem((void*)SYSTIC_CURRENT_VALUE));
96 }
97
98 /*
99  *  タイマ割込み要求のチェック
100  */
101 Inline bool_t
102 target_timer_probe_int(void)
103 {
104         return((sil_rew_mem((void*)SYSTIC_CONTROL_STATUS) & SYSTIC_COUNTFLAG) == SYSTIC_COUNTFLAG);
105 }
106
107 /*
108  *  タイマ割込みハンドラ
109  */
110 extern void target_timer_handler(void);
111
112 #endif /* TOPPERS_MACRO_ONLY */
113 #endif /* TOPPERS_CORE_TIMER_H */