AG903ライブラリリファレンス
内容インデックスホーム
前へ上へ次へ
AG903_TIMRMgrSetTickCountMode 関数

クロック・Tick計測モード設定

Syntax
C++
int32_t AG903_TIMRMgrSetTickCountMode(AG903_TIMRMgrHandle* handle, AG903_TIMRMgrTickCntParam* param);
引数 
説明 
AG903_TIMRMgrHandle* handle 
[in] TIMRハンドル 
AG903_TIMRMgrTickCntParam* param 
[in] パラメータ 

AG903_ENONE 正常終了 

-AG903_EINVAL 引数異常 

-AG903_EBUSY ハンドル使用中 (タイマ動作中).

クロック・Tick計測モードを設定します。 

本モードのタイマ動作詳細は『AX51903仕様書』を参照して下さい。

1: int32_t AG903_TIMRMgrSetTickCountMode(AG903_TIMRMgrHandle* handle, AG903_TIMRMgrTickCntParam* param) 2: { 3: AG903_TIMRPrmInModeParam inprm = {0}; 4: AG903_TIMRPrmOutModeParam outprm = {0}; 5: AG903_TIMRPrmResetTriggerParam rstprm = {0}; 6: int32_t retval = AG903_ENONE; 7: int32_t result; 8: uint8_t ch; 9: uint8_t idle; 10: 11: result = TIMRMgr_CheckHandle(handle, &ch); 12: if(AG903_ENONE != result) { 13: return -AG903_EINVAL; 14: } 15: if(NULL == param) { 16: return -AG903_EINVAL; 17: } 18: if(AG903_TIMR_CNT_TYPENUM <= param->resolution) { 19: return -AG903_EINVAL; 20: } 21: if(NULL != param->output) { 22: if( (AG903_TIMR_EXTOUT_NUM <= param->output->portch) || 23: (AG903_TIMR_POL_TYPENUM <= param->output->polarity) || 24: (AG903_TIMR_OUT_MODENUM <= param->output->mode) || 25: ((AG903_TIMR_OUT_PLUSE == param->output->mode)&&(AG903_TIMR_PLUSEWIDTH_MAX < param->output->plusewidth)) ) { 26: return -AG903_EINVAL; 27: } 28: } 29: idle = TIMRMgr_CheckIdle(ch); 30: if(true != idle) { 31: return -AG903_EBUSY; 32: } 33: 34: inprm.res = TimrResolutionTypeTbl[param->resolution]; 35: AG903_TIMRPrmSetInMode(ch, &inprm); 36: AG903_TIMRPrmSetPeriod(ch, param->period); 37: AG903_TIMRPrmSetMatch(ch, param->match); 38: if(true == param->oneshot) { 39: AG903_TIMRPrmEnableOneshot(ch); 40: } 41: else { 42: AG903_TIMRPrmDisableOneshot(ch); 43: } 44: 45: if(NULL == param->output) { 46: outprm.mod = AG903_TIMR_OUTMOD_DISABLE; 47: } 48: else { 49: if(AG903_TIMR_COMPARE_BIT & param->output->mask) { 50: outprm.cm = 1; 51: } 52: if(AG903_TIMR_OVERFLOW_BIT & param->output->mask) { 53: outprm.ovf = 1; 54: } 55: outprm.ch = param->output->portch; 56: outprm.pol = param->output->polarity; 57: outprm.mod = TimrOutModeTbl[param->output->mode]; 58: } 59: AG903_TIMRPrmSetOutMode(ch, &outprm); 60: if(AG903_TIMR_OUTMOD_PLUSE == outprm.mod) { 61: AG903_TIMRPrmSetPluseWidth(ch, param->output->plusewidth); 62: } 63: 64: rstprm.en = AG903_TIMR_RSTEN_DISABLE; 65: rstprm.boot = AG903_TIMR_RSTBOOT_TICKCNT; 66: AG903_TIMRPrmSetResetTrigger(ch, &rstprm); 67: 68: TimrChStat[ch].outmode = outprm.mod; 69: TimrChStat[ch].mode = AG903_TIMR_CTRLMOD_TICKCNT; 70: 71: return retval; 72: }
Copyright (c) 2017-2025 Axell Corporation. All rights reserved.