AG903ライブラリリファレンス
内容インデックスホーム
Body Source
本文ソース
1: int32_t AG903_TIMRMgrSetPwmInMode(AG903_TIMRMgrHandle* handle, AG903_TIMRMgrPwmInParam* 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_INPUT_TYPENUM <= param->intype) || 19: (AG903_TIMR_CNT_TYPENUM <= param->resolution) || 20: (AG903_TIMR_POL_TYPENUM <= param->polarity) ) { 21: return -AG903_EINVAL; 22: } 23: if(NULL != param->output) { 24: if( (AG903_TIMR_EXTOUT_NUM <= param->output->portch) || 25: (AG903_TIMR_POL_TYPENUM <= param->output->polarity) || 26: (AG903_TIMR_OUT_PWM <= param->output->mode) || 27: ((AG903_TIMR_OUT_PLUSE == param->output->mode)&&(AG903_TIMR_PLUSEWIDTH_MAX < param->output->plusewidth)) ) { 28: return -AG903_EINVAL; 29: } 30: } 31: idle = TIMRMgr_CheckIdle(ch); 32: if(true != idle) { 33: return -AG903_EBUSY; 34: } 35: 36: inprm.res = TimrResolutionTypeTbl[param->resolution]; 37: inprm.lo = TimrInputTbl[param->intype][0]; 38: inprm.ch = TimrInputTbl[param->intype][1]; 39: inprm.pol = param->polarity; 40: AG903_TIMRPrmSetInMode(ch, &inprm); 41: if(true == param->oneshot) { 42: AG903_TIMRPrmEnableOneshot(ch); 43: } 44: else { 45: AG903_TIMRPrmDisableOneshot(ch); 46: } 47: 48: if(NULL == param->output) { 49: outprm.mod = AG903_TIMR_OUTMOD_DISABLE; 50: } 51: else { 52: outprm.cm = 1; 53: outprm.ch = param->output->portch; 54: outprm.pol = param->output->polarity; 55: outprm.mod = TimrOutModeTbl[param->output->mode]; 56: } 57: AG903_TIMRPrmSetOutMode(ch, &outprm); 58: if(AG903_TIMR_OUTMOD_PLUSE == outprm.mod) { 59: AG903_TIMRPrmSetPluseWidth(ch, param->output->plusewidth); 60: } 61: 62: rstprm.en = AG903_TIMR_RSTEN_DISABLE; 63: AG903_TIMRPrmSetResetTrigger(ch, &rstprm); 64: 65: TimrChStat[ch].outmode = outprm.mod; 66: TimrChStat[ch].mode = AG903_TIMR_CTRLMOD_PWMIN; 67: 68: return retval; 69: }
Copyright (c) 2017-2025 Axell Corporation. All rights reserved.