OSDN Git Service

Sメーター周りを修正
[trx-305dsp/dsp.git] / trx305 / kernel / config / blackfin / _common_bf537 / hw_timer.h
1 /*
2  *  TOPPERS/JSP Kernel
3  *      Toyohashi Open Platform for Embedded Real-Time Systems/
4  *      Just Standard Profile Kernel
5  *
6  *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
7  *                              Toyohashi Univ. of Technology, JAPAN
8  *
9  *  TOPPERS/JSP for Blackfin
10  *
11  *  Copyright (C) 2004,2006,2006 by Takemasa Nakamura
12  *  Copyright (C) 2004 by Ujinosuke
13  *
14  *  上記著作権者は,以下の (1)縲鰀(4) の条件か,Free Software Foundation
15  *  によって公表されている GNU General Public License の Version 2 に記
16  *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
17  *  を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
18  *  利用と呼ぶ)することを無償で許諾する.
19  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
20  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
21  *      スコード中に含まれていること.
22  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
23  *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
24  *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
25  *      の無保証規定を掲載すること.
26  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
27  *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
28  *      と.
29  *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
30  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
31  *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
32  *        報告すること.
33  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
34  *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
35  *
36  *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
37  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
38  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
39  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
40  *
41  *
42  */
43
44 /*
45  *  タイマドライバ(ADSP-BF537用)
46  *
47  */
48
49 #ifndef _HW_TIMER_H_
50 #define _HW_TIMER_H_
51
52 #include <s_services.h>
53 #include "sil.h"
54
55 #ifndef _MACRO_ONLY
56
57
58
59 //#include <ccblkfn.h>
60
61
62
63
64 /**************************************************************
65  *  タイマの起動処理
66  *
67  *  タイマを初期化し,周期的なタイマ割込み要求を発生させる.
68  *
69  **************************************************************/
70 Inline void
71 hw_timer_initialize()
72 {
73 #ifdef USE_TIC_CORE
74     // Core timer
75     // TCNTL bit assignement
76     // TMPWR                  0x00000001
77     // TMREN                  0x00000002
78     // TAUTORLD               0x00000004
79     // TINT                   0x00000008
80     *__pTCNTL = 0x00000001;                 // TMPWR : power up timer;
81     *__pTPERIOD = CORECLOCK/1000;           // CORE CLOCK is defined in sys_config.h
82     *__pTCNTL = 0x00000007;                 // TMPWR | TMREN | TAUTORLD;
83 #else
84     // GPT7(General-purpose timer7)
85         // PWM_OUT          0x0001
86         // WDTH_CAP         0x0002
87         // EXT_CLK          0x0003
88         // PULSE_HI         0x0004
89         // PERIOD_CNT       0x0008
90         // IRQ_ENA          0x0010
91         // TIN_SEL          0x0020
92         // OUT_DIS          0x0040
93         // CLK_SEL          0x0080
94         // TOGGLE_HI        0x0100
95         // EMU_RUN          0x0200
96         // ERR_TYP          0xC000
97     *__pTIMER7_CONFIG = 0x0059;// PERIOD_CNT | OUT_DIS |IRQ_ENA | PWM_OUT;  // PWM_OUT, Output Pad disable
98     *__pTIMER7_PERIOD = SYSCLOCK/1000;  // SYS CLOCK is defined in sys_config.h
99     *__pTIMER7_WIDTH = 1;                   // 0 < width < period
100         // TIMEN0           0x0001
101         // TIMEN1           0x0002
102         // TIMEN2           0x0004
103         // TIMEN3           0x0008
104         // TIMEN4           0x0010
105         // TIMEN5           0x0020
106         // TIMEN6           0x0040
107         // TIMEN7           0x0080
108     *__pTIMER_ENABLE =  0x0080; //TIMEN7;           // timer7 start
109     ena_int( INHNO_TIMER );             // enable Timer Interrupt
110
111 #endif
112     asm("ssync;");
113
114 }
115
116 /**************************************************************
117  *  タイマ割込み要求のクリア
118  **************************************************************/
119 Inline void
120 hw_timer_int_clear()
121 {
122 #ifdef USE_TIC_CORE
123     // Core timer
124     // TCNTL bit assignement
125     // TMPWR                  0x00000001
126     // TMREN                  0x00000002
127     // TAUTORLD               0x00000004
128     // TINT                   0x00000008
129     /* TINTはW1Cではないので、TINTのTINTビットは0を書き込む */
130     *__pTCNTL = 0x00000007; // TMPWR | TMREN | TAUTORLD;
131 #else
132     // GPT7(General-purpose timer7)
133         // TIMIL7           0x00080000
134     *__pTIMER_STATUS =  0x00080000; // TIMIL7;
135 #endif
136     asm("ssync;");
137 }
138
139 /**************************************************************
140  *  タイマの停止処理
141  *
142  *  タイマの動作を停止させる.
143  **************************************************************/
144 Inline void
145 hw_timer_terminate()
146 {
147     /*
148      *  タイマの動作を停止する.
149      */
150 #ifdef USE_TIC_CORE
151     // Core timer
152     // TCNTL bit assignement
153     // TMPWR                  0x00000001
154     // TMREN                  0x00000002
155     // TAUTORLD               0x00000004
156     // TINT                   0x00000008
157     *__pTCNTL = 0x00000005; //TMPWR | TAUTORLD | TINT;      // 停止
158     *__pTCNTL = 0;                          // パワーダウンモード
159 #else
160     // GPT2(General-purpose timer7)
161         // TIMDIS7          0x0080
162     *__pTIMER_DISABLE = 0x0080; // TIMDIS7;         // timer7 disable
163 #endif
164     asm("ssync;");
165 }
166
167
168 #endif /* _MACRO_ONLY */
169 #endif /* _HW_TIMER_H_ */