第一范文网 - 专业文章范例文档资料分享平台

dsp30代码

来源:用户分享 时间:2025/7/29 19:30:35 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

;===================================================== ; 等效的 C代码 ;{

; register short Pos, Delta; ;

; Pos = POSCNT; ;

; Delta = Pos - EncoderParm.iPrevCnt; ; EncoderParm.iPrevCnt = Pos; ;

; if( iDelta >= 0 ) ;{

; // Delta > 0因为 ; // 1) vel > 0或

; // 2) Vel < 0且编码器计数值出现翻转返回。 ;

; if( Delta >= EncoderParm.iCntsPerRev/2 ) ;{

; // Delta >= EncoderParm.iCntsPerRev/2 => 负转速,出现翻转返回 ;

; Delta -= EncoderParm.iCntsPerRev; ;} ;} ; else ;{

; // Delta < 0因为 ; // 1) vel < 0或

; // 2) Vel > 0并出现翻转返回 ;;

; if( Delta < -EncoderParm.iCntsPerRev/2 ) ;{

; // Delta < -EncoderParm.iCntsPerRev/2 => 正转速,出现翻转返回 ;

; Delta += EncoderParm.iCntsPerRev; ;} ;} ;

; EncoderParm.iAccumCnt += Delta; ;

; EncoderParm.iVelCntDwn--; ; if(EncoderParm.iVelCntDwn) ; return; ;

; iVelCntDwn = iIrpPerCalc;

; qVelMech = qKvel * iAccumCnt * 2^Nvel; ; EncoderParm.iAccumCnt = 0; ;}

;=================== 代码 ===================== ; CalcVelIrp的寄存器使用

.equ PosW, w0 ; 当前位置: POSCNT .equ WorkW, w4 ; 工作寄存器

.equ DeltaW, w6 ; NewCnt - PrevCnt .global _CalcVelIrp .global CalcVelIrp _CalcVelIrp: CalcVelIrp:

;; 保存寄存器内容 push w0 push w4 push w6

;; Pos = uTestPos; .ifdef SIMU

mov.w _uTestPos,PosW ; 编码器值 ?? .else

mov.w POSCNT,PosW ; 编码器值 .endif

mov.w _EncoderParm+Encod_iPrevCnt,WorkW

;; 用新的 cnt更新前一个 cnt。

mov.w PosW,_EncoderParm+Encod_iPrevCnt

;; 计算 Delta = New - Prev sub.w PosW,WorkW,DeltaW bra N,jEncoder5 ; Delta < 0

;; Delta > 0因为

;; 1) vel > 0或

搜索更多关于: dsp30代码 的文档
dsp30代码.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c1sqcv57k9u7wp9920sys_13.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top