Ignore:
Timestamp:
May 22, 2019, 10:03:37 PM (5 years ago)
Author:
coas-nagasima
Message:

ビルドが通るよう更新

File:
1 edited

Legend:

Unmodified
Added
Removed
  • azure_iot_hub/trunk/asp3_dcre/target/gr_sakura_gcc/target_timer.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc;charset=UTF-8
    r388 r389  
    1414 *  Copyright (C) 2017      by Cores Co., Ltd. Japan
    1515 *
    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 è²¬ã™ã‚‹ã“と.
     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 *      免責すること.
    5238 *
    53  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    54 ãŠ
    55  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    56  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    57  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    58  *  の責任を負わない.
     39 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     40 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     41 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     42 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     43 *  の責任を負わない.
    5944 *
    6045 *  @(#) $Id$
     
    6247
    6348/*
    64  *              タイマドライバ(GR-SAKURA用)
     49 *              タイマドライバ(GR-SAKURA用)
    6550 */
    6651
     
    7459
    7560/*
    76  * 上位タイマソフトカウンタ
     61 * 上位タイマソフトカウンタ
    7762 */
    7863static uint16_t elapse_upper_timer = 0;
    7964
    8065/*
    81  * 上下位タイマ設定カウンタ
     66 * 上下位タイマ設定カウンタ
    8267 */
    8368static uint16_t timer_upper_set_count = 0, timer_lower_set_count = 0;
     
    8570#ifdef TOPPERS_SUPPORT_OVRHDR
    8671
    87 /* オーバラン上下位タイマ設定カウンタ */
     72/* オーバラン上下位タイマ設定カウンタ */
    8873static uint16_t timer_ovr_upper_set_count = 0, timer_ovr_lower_set_count = 0;
    8974
    90 /* オーバランタイマ実行中フラグ */
     75/* オーバランタイマ実行中フラグ */
    9176static bool_t timer_ovr_running_flg = false;
    9277
    93 /* オーバランタイマ開始時HRTタイマ値 */
     78/* オーバランタイマ開始時HRTタイマ値 */
    9479static HRTCNT timer_ovr_hrt_backup;
    9580
    96 /* オーバランタイマ設定時間 */
     81/* オーバランタイマ設定時間 */
    9782static PRCTIM timer_ovr_ovrtim_backup;
    9883
    9984/*
    100  *  オーバランタイマ割込み要求のクリア
     85 *  オーバランタイマ割込み要求のクリア
    10186 */
    10287Inline void
     
    10994
    11095/*
    111  *  タイマの初期化処理
     96 *  タイマの初期化処理
    11297 */
    11398void
     
    115100{
    116101        /*
    117          * モジュールストップ機能の設定  CMTユニット0 解除
    118          */
    119         sil_wrh_mem(SYSTEM_PRCR_ADDR, 0xA502);  /* 書込み許可 */
     102         * モジュールストップ機能の設定  CMTユニット0 解除
     103         */
     104        sil_wrh_mem(SYSTEM_PRCR_ADDR, 0xA502);  /* 書込み許可 */
    120105        sil_wrw_mem(SYSTEM_MSTPCRA_ADDR,
    121106                        sil_rew_mem(SYSTEM_MSTPCRA_ADDR) & ~SYSTEM_MSTPCRA_MSTPA15_BIT);
    122         sil_wrh_mem(SYSTEM_PRCR_ADDR, 0xA500);  /* 書込み禁止 */
     107        sil_wrh_mem(SYSTEM_PRCR_ADDR, 0xA500);  /* 書込み禁止 */
    123108
    124109        /*
    125          * タイマ停止
     110         * タイマ停止
    126111         */
    127112        sil_wrh_mem(CMT_CMSTR0_ADDR,
     
    129114       
    130115        /*
    131          * カウントアップに用いられるクロック設定
    132          * PCLK/8を選択
     116         * カウントアップに用いられるクロック設定
     117         * PCLK/8を選択
    133118         */
    134119        sil_wrh_mem(CMT0_CMCR_ADDR, CMT_PCLK_DIV_8);
     
    136121
    137122        /*
    138          * コンペアマッチタイマカウンタ設定
     123         * コンペアマッチタイマカウンタ設定
    139124         */
    140125        sil_wrh_mem(CMT0_CMCNT_ADDR, 0U);
     
    142127
    143128        /*
    144          * コンペアマッチタイマ周期設定
     129         * コンペアマッチタイマ周期設定
    145130         */
    146131        sil_wrh_mem(CMT0_CMCOR_ADDR, 0); /* lower */
     
    149134
    150135        /*
    151          * コンペアマッチタイマ割り込み要求å
    152 ˆè¨­å®šãƒ¬ã‚¸ã‚¹ã‚¿ï¼ˆ28,29)
     136         * コンペアマッチタイマ割り込み要求先設定レジスタ(28,29)
    153137         */
    154138        sil_wrb_mem(ICU_ISELR028_ADDR, ICU_ISEL_CPU);
     
    156140
    157141        /*
    158          *  タイマ動作開始前の割込み要求をクリア
     142         *  タイマ動作開始前の割込み要求をクリア
    159143         */
    160144        clear_int(INTNO_TIMER0);
     
    162146
    163147        /*
    164          * コンペアマッチタイマ割り込みを許可
     148         * コンペアマッチタイマ割り込みを許可
    165149         */
    166150//      sil_wrh_mem(CMT0_CMCR_ADDR,
     
    170154
    171155        /*
    172          * タイマ動作開始
     156         * タイマ動作開始
    173157         */
    174158//      sil_wrh_mem(CMT_CMSTR0_ADDR,
     
    179163
    180164/*
    181  *  タイマの停止処理
     165 *  タイマの停止処理
    182166 */
    183167void
     
    185169{
    186170        /*
    187          * タイマ停止  lower, upper
     171         * タイマ停止  lower, upper
    188172         */
    189173        sil_wrh_mem(CMT_CMSTR0_ADDR,
     
    191175
    192176        /*
    193          * タイマ割り込み禁止 lower,upper
     177         * タイマ割り込み禁止 lower,upper
    194178         */
    195179        sil_wrh_mem(CMT0_CMCR_ADDR,
     
    199183
    200184        /*
    201          *  タイマ割込み要求をクリア
     185         *  タイマ割込み要求をクリア
    202186         */
    203187        clear_int(INTNO_TIMER0);
     
    205189
    206190        /*
    207          * モジュールストップ機能の設定  CMTユニット0 停止
    208          */
    209         sil_wrh_mem(SYSTEM_PRCR_ADDR, 0xA502);  /* 書込み許可 */
     191         * モジュールストップ機能の設定  CMTユニット0 停止
     192         */
     193        sil_wrh_mem(SYSTEM_PRCR_ADDR, 0xA502);  /* 書込み許可 */
    210194        sil_wrw_mem(SYSTEM_MSTPCRA_ADDR,
    211195                        sil_rew_mem(SYSTEM_MSTPCRA_ADDR) | SYSTEM_MSTPCRA_MSTPA15_BIT);
    212         sil_wrh_mem(SYSTEM_PRCR_ADDR, 0xA500);  /* 書込み禁止 */
    213 }
    214 
    215 /*
    216  *  下位タイマ割込みハンドラ(CMT0)
     196        sil_wrh_mem(SYSTEM_PRCR_ADDR, 0xA500);  /* 書込み禁止 */
     197}
     198
     199/*
     200 *  下位タイマ割込みハンドラ(CMT0)
    217201 */
    218202void target_lower_timer_handler(void)
    219203{
    220204        /*
    221          * タイマ停止
     205         * タイマ停止
    222206         */
    223207        sil_wrh_mem(CMT_CMSTR0_ADDR,
     
    225209
    226210        /*
    227          * タイマ割り込み禁止
     211         * タイマ割り込み禁止
    228212         */
    229213        sil_wrh_mem(CMT0_CMCR_ADDR,
     
    231215
    232216        /*
    233          * 割り込み要因クリア
     217         * 割り込み要因クリア
    234218         */
    235219        clear_int(INTNO_TIMER0);
    236220
    237221        /*
    238          * カウント設定クリア
     222         * カウント設定クリア
    239223         */
    240224        timer_lower_set_count = 0;
    241225
    242226        /*
    243          * タイマ割り込み処理
     227         * タイマ割り込み処理
    244228         */
    245229        signal_time();
     
    247231
    248232/*
    249  *  上位タイマ割込みハンドラ(CMT1)
     233 *  上位タイマ割込みハンドラ(CMT1)
    250234 */
    251235void target_upper_timer_handler(void)
    252236{
    253237        /*
    254          * 上位タイマソフトカウンタ更新
     238         * 上位タイマソフトカウンタ更新
    255239         */
    256240        elapse_upper_timer++;
    257241
    258242        /*
    259          * 上位タイマ設定値更新
     243         * 上位タイマ設定値更新
    260244         */
    261245        if(timer_upper_set_count > 0) {
     
    264248
    265249        /*
    266          * 上位タイママッチ処理
     250         * 上位タイママッチ処理
    267251         */
    268252        if(timer_upper_set_count == 0){
    269253                if(timer_lower_set_count > 0){
    270254                        /*
    271                          * 下位タイマ設定、開始
     255                         * 下位タイマ設定、開始
    272256                         */
    273257                        sil_wrh_mem(CMT0_CMCOR_ADDR, timer_lower_set_count);
     
    280264                else{
    281265                        /*
    282                          * 下位タイマ割り込み強制起動
     266                         * 下位タイマ割り込み強制起動
    283267                         */
    284268                        target_hrt_raise_event();
     
    289273        if(timer_ovr_running_flg == true) {
    290274                /*
    291                  * オーバラン上位タイマ設定値更新
     275                 * オーバラン上位タイマ設定値更新
    292276                 */
    293277                if(timer_ovr_upper_set_count > 0) {
     
    296280
    297281                /*
    298                  * オーバラン上位タイママッチ処理
     282                 * オーバラン上位タイママッチ処理
    299283                 */
    300284                if(timer_ovr_upper_set_count == 0) {
    301285                        if(timer_ovr_lower_set_count > 0){
    302286                                /*
    303                                  * オーバラン下位タイマ設定、開始
     287                                 * オーバラン下位タイマ設定、開始
    304288                                 */
    305289                                sil_wrh_mem(CMT2_CMCNT_ADDR, 0U);
     
    313297                        else {
    314298                                /*
    315                                  * オーバラン下位タイマ割り込み強制起動
     299                                 * オーバラン下位タイマ割り込み強制起動
    316300                                 */
    317301                                target_ovrtimer_raise_event();
     
    323307
    324308/*
    325  *  高分解能タイマへの割込みタイミングの設定
     309 *  高分解能タイマへの割込みタイミングの設定
    326310 */
    327311void
     
    332316
    333317        /*
    334          * 時間 -> タイマカウンタ 変換
     318         * 時間 -> タイマカウンタ 変換
    335319         */
    336320        total_timer_count = hrtcnt * USEC_CONVERT_VALUE;
     
    339323
    340324        /*
    341          * 上位タイマカウンタ現在値で調整
     325         * 上位タイマカウンタ現在値で調整
    342326         */
    343327        current_timer_count_work = timer_lower_set_count + sil_reh_mem(CMT1_CMCNT_ADDR);
     
    348332
    349333        /*
    350          * 下位タイマ設定
     334         * 下位タイマ設定
    351335         */
    352336        if(timer_upper_set_count == 0 && timer_lower_set_count > 0) {
    353337                /*
    354                  * コンペアマッチタイマカウンタ設定
     338                 * コンペアマッチタイマカウンタ設定
    355339                 */
    356340                sil_wrh_mem(CMT0_CMCNT_ADDR, 0U);
    357341
    358342                /*
    359                  * 割り込み要因クリア
     343                 * 割り込み要因クリア
    360344                 */
    361345                clear_int(INTNO_TIMER0);
    362346
    363347                /*
    364                  * コンペアマッチタイマ周期設定
     348                 * コンペアマッチタイマ周期設定
    365349                 */
    366350                sil_wrh_mem(CMT0_CMCOR_ADDR, timer_lower_set_count);
    367351
    368352                /*
    369                  *  タイマ割り込み許可
     353                 *  タイマ割り込み許可
    370354                 */
    371355                sil_wrh_mem(CMT0_CMCR_ADDR,
     
    373357
    374358                /*
    375                  * タイマ開始
     359                 * タイマ開始
    376360                 */
    377361                sil_wrh_mem(CMT_CMSTR0_ADDR,
     
    381365
    382366/*
    383  *  高分解能タイマ割込みの要求
     367 *  高分解能タイマ割込みの要求
    384368 */
    385369void
     
    387371{
    388372        /*
    389          * 下位タイマ強制割り込み起動
    390          * 注意:停止するまで割り込みが繰り返し発生する
    391          */
    392         sil_wrh_mem(CMT0_CMCNT_ADDR, 0U);       /* カウンタ初期化        */
    393         clear_int(INTNO_TIMER0);                        /* 要求クリア              */
    394         sil_wrh_mem(CMT0_CMCOR_ADDR, 0U);       /* マッチ周期設定        */
    395         sil_wrh_mem(CMT0_CMCR_ADDR,                     /* 割り込み許可   */
     373         * 下位タイマ強制割り込み起動
     374         * 注意:停止するまで割り込みが繰り返し発生する
     375         */
     376        sil_wrh_mem(CMT0_CMCNT_ADDR, 0U);       /* カウンタ初期化      */
     377        clear_int(INTNO_TIMER0);                        /* 要求クリア                */
     378        sil_wrh_mem(CMT0_CMCOR_ADDR, 0U);       /* マッチ周期設定      */
     379        sil_wrh_mem(CMT0_CMCR_ADDR,                     /* 割り込み許可       */
    396380                        sil_reh_mem(CMT0_CMCR_ADDR) | CMT0_CMCR_CMIE_BIT);
    397         sil_wrh_mem(CMT_CMSTR0_ADDR,            /* タイマ起動              */
     381        sil_wrh_mem(CMT_CMSTR0_ADDR,            /* タイマ起動                */
    398382                        sil_reh_mem(CMT_CMSTR0_ADDR) | CMT_CMSTR0_STR0_BIT);
    399383}
    400384
    401385/*
    402  * 高分解能タイマの現在のカウント値の読出し å†
    403 éƒ¨å‡¦ç†
     386 * 高分解能タイマの現在のカウント値の読出し 内部処理
    404387 */
    405388HRTCNT target_hrt_get_current_convert(void)
     
    412395
    413396        /*
    414          * 上位タイマ コンペアマッチチェック
     397         * 上位タイマ コンペアマッチチェック
    415398         */
    416399        if (probe_int(INTNO_TIMER1)) {
     
    421404        time = (((HRTCNT)local_eut * CMCOR_PERIOD) + (HRTCNT)local_cnt) / USEC_CONVERT_VALUE;
    422405#ifdef _MSC_VER
    423         // シミュレーションではタイマーが戻らないよう調整
     406        // シミュレーションではタイマーが戻らないよう調整
    424407        if (time < current_hrtcnt)
    425408                time = current_hrtcnt + ((HRTCNT)local_cnt / USEC_CONVERT_VALUE);
     
    429412
    430413/*
    431  *  オーバランタイマドライバ
     414 *  オーバランタイマドライバ
    432415 */
    433416#ifdef TOPPERS_SUPPORT_OVRHDR
    434417
    435418/*
    436  *  オーバランタイマの初期化処理
     419 *  オーバランタイマの初期化処理
    437420 */
    438421void
     
    440423{
    441424        /*
    442          * モジュールストップ機能の設定  CMTユニット1 解除
    443          */
    444         sil_wrh_mem(SYSTEM_PRCR_ADDR, 0xA502);  /* 書込み許可 */
     425         * モジュールストップ機能の設定  CMTユニット1 解除
     426         */
     427        sil_wrh_mem(SYSTEM_PRCR_ADDR, 0xA502);  /* 書込み許可 */
    445428        sil_wrw_mem(SYSTEM_MSTPCRA_ADDR,
    446429                        sil_rew_mem(SYSTEM_MSTPCRA_ADDR) & ~SYSTEM_MSTPCRA_MSTPA14_BIT);
    447         sil_wrh_mem(SYSTEM_PRCR_ADDR, 0xA500);  /* 書込み禁止 */
    448 
    449         /*
    450          * タイマ停止 CMT2
     430        sil_wrh_mem(SYSTEM_PRCR_ADDR, 0xA500);  /* 書込み禁止 */
     431
     432        /*
     433         * タイマ停止 CMT2
    451434         */
    452435        sil_wrh_mem(CMT_CMSTR1_ADDR,
     
    454437
    455438        /*
    456          * カウントアップに用いられるクロック設定 CMT2
    457          * PCLK/8を選択
     439         * カウントアップに用いられるクロック設定 CMT2
     440         * PCLK/8を選択
    458441         */
    459442        sil_wrh_mem(CMT2_CMCR_ADDR, CMT_PCLK_DIV_8);
    460443
    461444        /*
    462          * コンペアマッチタイマカウンタ設定 CMT2
     445         * コンペアマッチタイマカウンタ設定 CMT2
    463446         */
    464447        sil_wrh_mem(CMT2_CMCNT_ADDR, 0U);
    465448
    466449        /*
    467          * コンペアマッチタイマ周期設定 CMT2
     450         * コンペアマッチタイマ周期設定 CMT2
    468451         */
    469452        sil_wrh_mem(CMT2_CMCOR_ADDR, 0U);
    470453
    471454        /*
    472          * コンペアマッチタイマ割り込み要求å
    473 ˆè¨­å®šãƒ¬ã‚¸ã‚¹ã‚¿ï¼ˆ30)
     455         * コンペアマッチタイマ割り込み要求先設定レジスタ(30)
    474456         */
    475457        sil_wrb_mem(ICU_ISELR030_ADDR, ICU_ISEL_CPU);
    476458
    477459        /*
    478          *  タイマ動作開始前の割込み要求をクリア
     460         *  タイマ動作開始前の割込み要求をクリア
    479461         */
    480462        target_ovrtimer_int_clear();
     
    488470
    489471        /*
    490          * 時間 -> タイマカウンタ 変換
     472         * 時間 -> タイマカウンタ 変換
    491473         */
    492474        total_timer_count = ovrtim * USEC_CONVERT_VALUE;
     
    495477
    496478        /*
    497          * 高分解能上位タイマカウンタ現在値で調整
     479         * 高分解能上位タイマカウンタ現在値で調整
    498480         */
    499481        timer_ovr_ovrtim_backup = ovrtim;
     
    506488
    507489        /*
    508          * オーバランタイマ動作中フラグ
     490         * オーバランタイマ動作中フラグ
    509491         */
    510492        timer_ovr_running_flg = true;
    511493
    512494        /*
    513          * 下位タイマ設定
     495         * 下位タイマ設定
    514496         */
    515497        if(timer_ovr_upper_set_count == 0) {
     
    519501                else {
    520502                        /*
    521                          * コンペアマッチタイマカウンタクリア CMT2
     503                         * コンペアマッチタイマカウンタクリア CMT2
    522504                         */
    523505                        sil_wrh_mem(CMT2_CMCNT_ADDR, 0U);
    524506
    525507                        /*
    526                          * コンペアマッチタイマ周期設定 CMT2
     508                         * コンペアマッチタイマ周期設定 CMT2
    527509                         */
    528510                        sil_wrh_mem(CMT2_CMCOR_ADDR, timer_ovr_lower_set_count);
    529511
    530512                        /*
    531                          *  タイマ動作開始前の割込み要求をクリア
     513                         *  タイマ動作開始前の割込み要求をクリア
    532514                         */
    533515                        target_ovrtimer_int_clear();
    534516
    535517                        /*
    536                          * コンペアマッチタイマ割り込みを許可 CMT2
     518                         * コンペアマッチタイマ割り込みを許可 CMT2
    537519                         */
    538520                        sil_wrh_mem(CMT2_CMCR_ADDR,
     
    540522
    541523                        /*
    542                          * タイマ動作開始 CMT2
     524                         * タイマ動作開始 CMT2
    543525                         */
    544526                        sil_wrh_mem(CMT_CMSTR1_ADDR,
     
    549531
    550532/*
    551  *  オーバランタイマの停止処理
     533 *  オーバランタイマの停止処理
    552534 */
    553535void
     
    555537{
    556538        /*
    557          * タイマ停止
     539         * タイマ停止
    558540         */
    559541        sil_wrh_mem(CMT_CMSTR1_ADDR,
     
    561543
    562544        /*
    563          * タイマ割り込み禁止
     545         * タイマ割り込み禁止
    564546         */
    565547        sil_wrh_mem(CMT2_CMCR_ADDR,
     
    567549
    568550        /*
    569          *  タイマ割込み要求をクリア
     551         *  タイマ割込み要求をクリア
    570552         */
    571553        target_ovrtimer_int_clear();
    572554
    573555        /*
    574          * オーバランタイマ動作中フラグ
     556         * オーバランタイマ動作中フラグ
    575557         */
    576558        timer_ovr_running_flg = false;
    577559
    578560        /*
    579          * モジュールストップ機能の設定  CMTユニット0 停止
    580          */
    581         sil_wrh_mem(SYSTEM_PRCR_ADDR, 0xA502);  /* 書込み許可 */
     561         * モジュールストップ機能の設定  CMTユニット0 停止
     562         */
     563        sil_wrh_mem(SYSTEM_PRCR_ADDR, 0xA502);  /* 書込み許可 */
    582564        sil_wrw_mem(SYSTEM_MSTPCRA_ADDR,
    583565                        sil_rew_mem(SYSTEM_MSTPCRA_ADDR) | SYSTEM_MSTPCRA_MSTPA14_BIT);
    584         sil_wrh_mem(SYSTEM_PRCR_ADDR, 0xA500);  /* 書込み禁止 */
    585 }
    586 
    587 /*
    588  *  オーバランタイマの停止
     566        sil_wrh_mem(SYSTEM_PRCR_ADDR, 0xA500);  /* 書込み禁止 */
     567}
     568
     569/*
     570 *  オーバランタイマの停止
    589571 */
    590572PRCTIM
     
    594576
    595577        /*
    596          * タイマ停止
     578         * タイマ停止
    597579         */
    598580        sil_wrh_mem(CMT_CMSTR1_ADDR,
     
    600582
    601583        /*
    602          * オーバランタイマ動作中フラグ
     584         * オーバランタイマ動作中フラグ
    603585         */
    604586        timer_ovr_running_flg = false;
     
    606588        if(int_num == INTNO_TIMER2) {
    607589                /*
    608                  *  オーバラン割込みの場合
     590                 *  オーバラン割込みの場合
    609591                 */
    610592                target_ovrtimer_int_clear();
     
    622604                }
    623605
    624                 if(cnt > timer_ovr_ovrtim_backup) { /* 設定時間を過ぎた */
     606                if(cnt > timer_ovr_ovrtim_backup) { /* 設定時間を過ぎた */
    625607                        cnt = 0;
    626608                }
     
    630612
    631613/*
    632  *  オーバランタイマの現在値の読出し
     614 *  オーバランタイマの現在値の読出し
    633615 */
    634616PRCTIM
     
    639621        if (probe_int(INTNO_TIMER2)) {
    640622                /*
    641                  *  割込み要求が発生している場合
     623                 *  割込み要求が発生している場合
    642624                 */
    643625                return(0U);
     
    650632                }
    651633
    652                 if(cnt > timer_ovr_ovrtim_backup) { /* 設定時間を過ぎた */
     634                if(cnt > timer_ovr_ovrtim_backup) { /* 設定時間を過ぎた */
    653635                        cnt = 0;
    654636                }
     
    658640
    659641/*
    660  *  高分解能タイマ割込みの要求
     642 *  高分解能タイマ割込みの要求
    661643 */
    662644void
     
    664646{
    665647        /*
    666          * オーバラン下位タイマ強制割り込み起動
    667          * 注意:停止するまで割り込みが繰り返し発生する
    668          */
    669         sil_wrh_mem(CMT2_CMCNT_ADDR, 0U);       /* カウンタ初期化        */
    670         clear_int(INTNO_TIMER2);                        /* 要求クリア              */
    671         sil_wrh_mem(CMT2_CMCOR_ADDR, 0U);       /* マッチ周期設定        */
    672         sil_wrh_mem(CMT2_CMCR_ADDR,                     /* 割り込み許可   */
     648         * オーバラン下位タイマ強制割り込み起動
     649         * 注意:停止するまで割り込みが繰り返し発生する
     650         */
     651        sil_wrh_mem(CMT2_CMCNT_ADDR, 0U);       /* カウンタ初期化      */
     652        clear_int(INTNO_TIMER2);                        /* 要求クリア                */
     653        sil_wrh_mem(CMT2_CMCOR_ADDR, 0U);       /* マッチ周期設定      */
     654        sil_wrh_mem(CMT2_CMCR_ADDR,                     /* 割り込み許可       */
    673655                        sil_reh_mem(CMT2_CMCR_ADDR) | CMT2_CMCR_CMIE_BIT);
    674         sil_wrh_mem(CMT_CMSTR1_ADDR,            /* タイマ起動              */
     656        sil_wrh_mem(CMT_CMSTR1_ADDR,            /* タイマ起動                */
    675657                        sil_reh_mem(CMT_CMSTR1_ADDR) | CMT_CMSTR1_STR2_BIT);
    676658}
    677659
    678660/*
    679  *  オーバランタイマ割込みハンドラ
     661 *  オーバランタイマ割込みハンドラ
    680662 *
    681  *  このルーチンに来るまでに,target_ovrtimer_stopが呼ばれているため,
    682  *  OSタイマを停止するå¿
    683 è¦ã¯ãªã„.
     663 *  このルーチンに来るまでに,target_ovrtimer_stopが呼ばれているため,
     664 *  OSタイマを停止する必要はない.
    684665 */
    685666void
     
    687668{
    688669        /*
    689          * タイマ割り込み禁止
     670         * タイマ割り込み禁止
    690671         */
    691672        sil_wrh_mem(CMT2_CMCR_ADDR,
     
    693674
    694675        /*
    695          * 上下位タイマカウンタクリア
     676         * 上下位タイマカウンタクリア
    696677         */
    697678        timer_ovr_upper_set_count = 0;
    698679        timer_ovr_lower_set_count = 0;
    699680
    700         call_ovrhdr();  /* オーバランハンドラの起動処理 */
     681        call_ovrhdr();  /* オーバランハンドラの起動処理 */
    701682}
    702683
Note: See TracChangeset for help on using the changeset viewer.