- Timestamp:
- May 22, 2019, 10:03:37 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
azure_iot_hub/trunk/asp3_dcre/target/gr_sakura_gcc/target_timer.h
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr;charset=UTF-8
r388 r389 14 14 * Copyright (C) 2017 by Cores Co., Ltd. Japan 15 15 * 16 * ä¸è¨èä½æ¨©è 17 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 18 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 19 * å¤ã»åé 20 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 21 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 22 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 23 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 24 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 25 * ç¨ã§ããå½¢ã§åé 26 å¸ããå ´åã«ã¯ï¼åé 27 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 28 * è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 30 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 32 * ç¨ã§ããªãå½¢ã§åé 33 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 34 * ã¨ï¼ 35 * (a) åé 36 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 37 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 38 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 39 * (b) åé 40 å¸ã®å½¢æ 41 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 42 * å ±åãããã¨ï¼ 43 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 44 * 害ãããï¼ä¸è¨èä½æ¨©è 45 ããã³TOPPERSããã¸ã§ã¯ããå 46 責ãããã¨ï¼ 47 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 48 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 49 ããã³TOPPERSããã¸ã§ã¯ãã 50 * å 51 責ãããã¨ï¼ 52 * 53 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 54 ã 55 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 56 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 57 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 58 * ã®è²¬ä»»ãè² ããªãï¼ 16 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 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 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 37 * 免責すること. 38 * 39 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 40 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 41 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 42 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 43 * の責任を負わない. 59 44 * 60 45 * @(#) $Id$ … … 62 47 63 48 /* 64 * ã¿ã¤ããã©ã¤ãï¼GR-SAKURAç¨ï¼49 * タイマドライバ(GR-SAKURA用) 65 50 */ 66 51 … … 73 58 74 59 /* 75 * ã¿ã¤ãå²è¾¼ã¿ãã³ãã©ç»é²ã®ããã®å®æ° 76 */ 77 #define INHNO_TIMER0 INT_CMT0_CMI /* å²è¾¼ã¿ãã³ãã©çªå· */ 78 #define INTNO_TIMER0 INT_CMT0_CMI /* å²è¾¼ã¿çªå· */ 79 #define INTPRI_TIMER0 -5 /* å²è¾¼ã¿åªå 80 度 */ 81 #define INTATR_TIMER0 (TA_ENAINT | TA_EDGE) /* å²è¾¼ã¿å±æ§ */ 82 83 #define INHNO_TIMER1 INT_CMT1_CMI /* å²è¾¼ã¿ãã³ãã©çªå· */ 84 #define INTNO_TIMER1 INT_CMT1_CMI /* å²è¾¼ã¿çªå· */ 85 #define INTPRI_TIMER1 -5 /* å²è¾¼ã¿åªå 86 度 */ 87 #define INTATR_TIMER1 (TA_ENAINT | TA_EDGE) /* å²è¾¼ã¿å±æ§ */ 88 89 /* 90 * ãªã¼ãã©ã³ã¿ã¤ãå²è¾¼ã¿ãã³ãã©ç»é²ã®ããã®å®æ° 91 */ 92 #define INHNO_TIMER2 INT_CMT2_CMI /* å²è¾¼ã¿ãã³ãã©çªå· */ 93 #define INTNO_TIMER2 INT_CMT2_CMI /* å²è¾¼ã¿çªå· */ 94 #define INTPRI_TIMER2 -5 /* å²è¾¼ã¿åªå 95 度 */ 96 #define INTATR_TIMER2 (TA_ENAINT | TA_EDGE) /* å²è¾¼ã¿å±æ§ */ 97 #define INTNO_OVR_BASE_TIMER INTNO_TIMER1 /* åºæ¬ã¿ã¤ãã«ä½¿ãã¿ã¤ãå²è¾¼ã¿çªå· */ 98 #define INTNO_DUMMY_TIMER 255 /* ããã¼ã¿ã¤ãå²è¾¼ã¿çªå· */ 60 * タイマ割込みハンドラ登録のための定数 61 */ 62 #define INHNO_TIMER0 INT_CMT0_CMI /* 割込みハンドラ番号 */ 63 #define INTNO_TIMER0 INT_CMT0_CMI /* 割込み番号 */ 64 #define INTPRI_TIMER0 -5 /* 割込み優先度 */ 65 #define INTATR_TIMER0 (TA_ENAINT | TA_EDGE) /* 割込み属性 */ 66 67 #define INHNO_TIMER1 INT_CMT1_CMI /* 割込みハンドラ番号 */ 68 #define INTNO_TIMER1 INT_CMT1_CMI /* 割込み番号 */ 69 #define INTPRI_TIMER1 -5 /* 割込み優先度 */ 70 #define INTATR_TIMER1 (TA_ENAINT | TA_EDGE) /* 割込み属性 */ 71 72 /* 73 * オーバランタイマ割込みハンドラ登録のための定数 74 */ 75 #define INHNO_TIMER2 INT_CMT2_CMI /* 割込みハンドラ番号 */ 76 #define INTNO_TIMER2 INT_CMT2_CMI /* 割込み番号 */ 77 #define INTPRI_TIMER2 -5 /* 割込み優先度 */ 78 #define INTATR_TIMER2 (TA_ENAINT | TA_EDGE) /* 割込み属性 */ 79 #define INTNO_OVR_BASE_TIMER INTNO_TIMER1 /* 基本タイマに使うタイマ割込み番号 */ 80 #define INTNO_DUMMY_TIMER 255 /* ダミータイマ割込み番号 */ 99 81 100 82 #ifndef TOPPERS_MACRO_ONLY 101 83 102 84 /* 103 * ã¿ã¤ãå¤ã®å 104 é¨è¡¨ç¾ã®å 85 * タイマ値の内部表現の型 105 86 */ 106 87 typedef uint16_t CLOCK; 107 88 108 89 /* 109 * ã¿ã¤ãå¤ã®å 110 é¨è¡¨ç¾ã¨ããªç§åä½ã¨ã®å¤æ 111 * 112 * 1msã®ã¿ã¤ãã¼å²ãè¾¼ã¿ã使ç¨ããã®ã§ãã®ã¯ããã¯ãå®ç¾©ããï¼ 113 */ 114 #define TIMER_CLOCK (FREQ_PCLK / 8U) /* PCLK/æä½åå¨æ¯8 = 6MHz */ 90 * タイマ値の内部表現とミリ秒単位との変換 91 * 92 * 1msのタイマー割り込みを使用するのでそのクロックを定義する. 93 */ 94 #define TIMER_CLOCK (FREQ_PCLK / 8U) /* PCLK/最低分周比8 = 6MHz */ 115 95 #define TO_CLOCK(nume, deno) ((CLOCK)(TIMER_CLOCK * (nume) / (deno))) 116 96 #define TO_USEC(clock) ((SYSUTM)((clock) * 1000U / TIMER_CLOCK)) 117 97 118 98 /* 119 * ã³ã³ãã¢ãããã¿ã¤ãã³ã³ã¹ã¿ã³ãã¬ã¸ã¹ã¿ï¼CMCORï¼120 * 121 * ã³ã³ãã¢ãããå¨æ122 * å¨è¾ºã¢ã¸ã¥ã¼ã«ã¯ããã¯ï¼PCLKï¼48MHzã8åå¨ããã®ã§ï¼123 * 6 ã«ã¦ã³ã= 1us : max 10922.667us99 * コンペアマッチタイマコンスタントレジスタ(CMCOR) 100 * 101 * コンペアマッチ周期 102 * 周辺モジュールクロック(PCLK)48MHzを8分周するので, 103 * 6カウント = 1us : max 10922.667us 124 104 */ 125 105 #define CMCOR_PERIOD (0x10000U) 126 106 127 107 /* 128 * ã«ã¦ã³ã < - > ãã¤ã¯ãç§ å¤æå¤108 * カウント < - > マイクロ秒 変換値 129 109 * 48MHz / 8 / 1000 130 110 */ … … 132 112 133 113 /* 134 * é«å解è½ã¿ã¤ãã®ã¿ã¤ãå¨æ114 * 高分解能タイマのタイマ周期 135 115 * 136 116 * 2^32 / 6 … … 139 119 140 120 /* 141 * é«å解è½ã¿ã¤ãã®ã«ã¦ã³ãå¤ã®é²ã¿å¹ 142 121 * 高分解能タイマのカウント値の進み幅 143 122 */ 144 123 #define TSTEP_HRTCNT 1U 145 124 146 125 /* 147 * æ§è½è©ä¾¡ç¨ã·ã¹ãã æå»ãåãåºãéã®å¦çæéã®è¦ç©ãå¤ï¼åä½ã¯å 148 é¨è¡¨ç¾ï¼ 149 */ 150 #define GET_TOLERANCE (100U) /* å¦çé 151 ãã®è¦ç©ãå¤ï¼åä½ã¯å 152 é¨è¡¨ç¾ï¼*/ 126 * 性能評価用システム時刻を取り出す際の処理時間の見積り値(単位は内部表現) 127 */ 128 #define GET_TOLERANCE (100U) /* 処理遅れの見積り値(単位は内部表現)*/ 153 129 #define BEFORE_IREQ(clock) \ 154 130 ((clock) >= (TO_CLOCK(TIC_NUME, TIC_DENO) - GET_TOLERANCE)) 155 131 156 132 /* 157 * ã³ã³ãã¢ãããã¿ã¤ãã³ã³ããã¼ã«ã¬ã¸ã¹ã¿ã®è¨å®å¤158 */ 159 /* 160 * ã¯ããã¯é¸æããã161 * 162 * bit7 ã¯äºç´é åã§ãã, æ¸è¾¼ã¿ã¯1åºå®133 * コンペアマッチタイマコントロールレジスタの設定値 134 */ 135 /* 136 * クロック選択ビット 137 * 138 * bit7は予約領域であり, 書込みは1固定 163 139 */ 164 140 #define CMT_PCLK_DIV_8 (0x0080U) … … 168 144 169 145 /* 170 * ã³ã³ãã¢ãããã¿ã¤ãå²ãè¾¼ã¿è¦æ±å 171 è¨å®ã¬ã¸ã¹ã¿iï¼ISELRiï¼ï¼i= å²ãè¾¼ã¿ãã¯ã¿çªå·ï¼ 146 * コンペアマッチタイマ割り込み要求先設定レジスタi(ISELRi)(i= 割り込みベクタ番号) 172 147 */ 173 148 #define ICU_ISEL_CPU (0x00U) 174 149 175 150 /* 176 * ã¿ã¤ãã®èµ·åå¦ç177 * 178 * ã¿ã¤ããåæåãï¼å¨æçãªã¿ã¤ãå²è¾¼ã¿è¦æ±ãçºçãããï¼151 * タイマの起動処理 152 * 153 * タイマを初期化し,周期的なタイマ割込み要求を発生させる. 179 154 */ 180 155 extern void target_timer_initialize(intptr_t exinf); 181 156 182 157 /* 183 * ã¿ã¤ãã®åæ¢å¦ç184 * 185 * ã¿ã¤ãã®åä½ãåæ¢ãããï¼158 * タイマの停止処理 159 * 160 * タイマの動作を停止させる. 186 161 */ 187 162 extern void target_timer_terminate(intptr_t exinf); 188 163 189 164 /* 190 * ã¿ã¤ãã¬ã¸ã¹ã¿å¤ã®èªã¿åºã165 * タイマレジスタ値の読み出し 191 166 */ 192 167 Inline uint16_t rx630_cmt_getcount(void) … … 196 171 197 172 /* 198 * ã¿ã¤ãã¬ã¸ã¹ã¿å¤ã®æ¸ãè¾¼ã¿173 * タイマレジスタ値の書き込み 199 174 */ 200 175 Inline void rx630_cmt_setcount(uint16_t count) … … 204 179 205 180 /* 206 * ã¿ã¤ãã®ç¾å¨å¤ã®èªåºã181 * タイマの現在値の読出し 207 182 */ 208 183 Inline CLOCK 209 184 target_timer_get_current(void) 210 185 { 211 /* ã¢ããã«ã¦ã³ãã®ããã¿ã¤ãã¬ã¸ã¹ã¿å¤ããã®ã¾ã¾è¿ã*/186 /* アップカウントのためタイマレジスタ値をそのまま返す */ 212 187 return (rx630_cmt_getcount()); 213 188 } 214 189 215 190 /* 216 * ã¿ã¤ãå²è¾¼ã¿è¦æ±ã®ãã§ãã¯191 * タイマ割込み要求のチェック 217 192 */ 218 193 Inline bool_t … … 223 198 224 199 /* 225 * ã¿ã¤ãå²è¾¼ã¿ãã³ãã©200 * タイマ割込みハンドラ 226 201 */ 227 202 extern void target_lower_timer_handler(void); … … 229 204 230 205 /* 231 * å²è¾¼ã¿ã¿ã¤ãã³ã°ã«æå®ããæ大å¤206 * 割込みタイミングに指定する最大値 232 207 */ 233 208 #define HRTCNT_BOUND 100000002U 234 209 235 210 /* 236 * é«å解è½ã¿ã¤ãã¸ã®å²è¾¼ã¿ã¿ã¤ãã³ã°ã®è¨å®237 * 238 * é«å解è½ã¿ã¤ããï¼hrtcntã§æå®ããå¤ã«ã¦ã³ãã¢ãããããå²è¾¼ã¿ãçº239 * çãããããã«è¨å®ããï¼211 * 高分解能タイマへの割込みタイミングの設定 212 * 213 * 高分解能タイマを,hrtcntで指定した値カウントアップしたら割込みを発 214 * 生させるように設定する. 240 215 */ 241 216 extern void target_hrt_set_event(HRTCNT hrtcnt); 242 217 243 218 /* 244 * é«å解è½ã¿ã¤ãå²è¾¼ã¿ã®è¦æ±219 * 高分解能タイマ割込みの要求 245 220 */ 246 221 extern void target_hrt_raise_event(void); 247 222 248 223 /* 249 * é«å解è½ã¿ã¤ãã®ç¾å¨ã®ã«ã¦ã³ãå¤ã®èªåºããå 250 é¨å¦ç 224 * 高分解能タイマの現在のカウント値の読出し 内部処理 251 225 */ 252 226 extern HRTCNT target_hrt_get_current_convert(void); 253 227 254 228 /* 255 * é«å解è½ã¿ã¤ãã®ç¾å¨ã®ã«ã¦ã³ãå¤ã®èªåºã229 * 高分解能タイマの現在のカウント値の読出し 256 230 */ 257 231 Inline HRTCNT … … 264 238 265 239 /* 266 * ãªã¼ãã©ã³ã¿ã¤ãã®åæåå¦ç240 * オーバランタイマの初期化処理 267 241 */ 268 242 extern void target_ovrtimer_initialize(intptr_t exinf); 269 243 270 244 /* 271 * ãªã¼ãã©ã³ã¿ã¤ãã®åæ¢å¦ç245 * オーバランタイマの停止処理 272 246 */ 273 247 extern void target_ovrtimer_terminate(intptr_t exinf); 274 248 275 249 /* 276 * ãªã¼ãã©ã³ã¿ã¤ãã®åä½éå§250 * オーバランタイマの動作開始 277 251 */ 278 252 extern void target_ovrtimer_start(PRCTIM ovrtim); 279 253 280 254 /* 281 * ãªã¼ãã©ã³ã¿ã¤ãã®åæ¢255 * オーバランタイマの停止 282 256 */ 283 257 extern PRCTIM target_ovrtimer_stop(uint_t int_num); 284 258 285 259 /* 286 * ãªã¼ãã©ã³ã¿ã¤ãã®ç¾å¨å¤ã®èªåºã260 * オーバランタイマの現在値の読出し 287 261 */ 288 262 extern PRCTIM target_ovrtimer_get_current(void); 289 263 290 264 /* 291 * ãªã¼ãã©ã³ã¿ã¤ãã®å²è¾¼ã¿ã®è¦æ±265 * オーバランタイマの割込みの要求 292 266 */ 293 267 extern void target_ovrtimer_raise_event(void); 294 268 295 269 /* 296 * ãªã¼ãã©ã³ã¿ã¤ãå²è¾¼ã¿ãã³ãã©270 * オーバランタイマ割込みハンドラ 297 271 */ 298 272 extern void target_ovrtimer_handler(void);
Note:
See TracChangeset
for help on using the changeset viewer.