Ignore:
Timestamp:
Jul 3, 2020, 7:19:17 PM (4 years ago)
Author:
coas-nagasima
Message:

ASP3, TINET, mbed を更新

File:
1 edited

Legend:

Unmodified
Added
Removed
  • EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/rza1/chip_timer.c

    r321 r429  
    44 *      Advanced Standard Profile Kernel
    55 *
    6  *  Copyright (C) 2006-2017 by Embedded and Real-Time Systems Laboratory
     6 *  Copyright (C) 2006-2018 by Embedded and Real-Time Systems Laboratory
    77 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    88 *
     
    100100
    101101/*
    102  *  高分解能タイマへの割込みタイミングの設定
    103  */
    104 void
    105 target_hrt_set_event(HRTCNT hrtcnt)
    106 {
    107         uint32_t        cnt = hrtcnt * 33 + hrtcnt / 3 + 1;
    108         uint32_t        current;
    109 
    110         /*
    111          *  現在のカウント値を読み,hrtcnt後に割込みが発生するように設定する.
    112          */
    113         current = sil_rew_mem(OSTM_CNT(OSTM0_BASE));
    114         sil_wrw_mem(OSTM_CMP(OSTM0_BASE), current + cnt);
    115 
    116         /*
    117          *  上で現在のカウント値を読んで以降に,cnt以上カウントアップしてい
    118          *  た場合には,割込みを発生させる.
    119          */
    120         if (sil_rew_mem(OSTM_CNT(OSTM0_BASE)) - current >= cnt) {
    121                 raise_int(INTNO_OSTM0);
    122         }
    123 }
    124 
    125 /*
    126  *  高分解能タイマ割込みの要求
    127  */
    128 void
    129 target_hrt_raise_event(void)
    130 {
    131         raise_int(INTNO_OSTM0);
    132 }
    133 
    134 /*
    135102 *  タイマ割込みハンドラ
    136103 */
     
    143110        signal_time();
    144111}
     112
    145113/*
    146114 *  オーバランタイマドライバ
     
    183151
    184152/*
    185  *  オーバランタイマの停止
    186  */
    187 PRCTIM
    188 target_ovrtimer_stop(void)
    189 {
    190         uint32_t        cnt;
    191 
    192         /*
    193          *  OSタイマを停止する.
    194          */
    195         sil_wrb_mem(OSTM_TT(OSTM1_BASE), OSTM_TT_STOP);
    196 
    197         if (probe_int(INTNO_OSTM1)) {
    198                 /*
    199                  *  割込み要求が発生している場合
    200                  */
    201                 clear_int(INTNO_OSTM1);
    202                 return(0U);
    203         }
    204         else {
    205                 cnt = sil_rew_mem(OSTM_CNT(OSTM1_BASE));
    206                 return((PRCTIM)((cnt + 34) / 5 * 3 / 20));
    207         }
    208 }
    209 
    210 /*
    211  *  オーバランタイマの現在値の読出し
    212  */
    213 PRCTIM
    214 target_ovrtimer_get_current(void)
    215 {
    216         uint32_t        cnt;
    217 
    218         if (probe_int(INTNO_OSTM1)) {
    219                 /*
    220                  *  割込み要求が発生している場合
    221                  */
    222                 return(0U);
    223         }
    224         else {
    225                 cnt = sil_rew_mem(OSTM_CNT(OSTM1_BASE));
    226                 return((PRCTIM)((cnt + 34) / 5 * 3 / 20));
    227         }
    228 }
    229 
    230 /*
    231153 *  オーバランタイマ割込みハンドラ
    232154 *
Note: See TracChangeset for help on using the changeset viewer.