[讨论] 求解释,MSP430定时器死区模式程序不懂

suoma   2015-10-17 20:31 楼主
如图红色部分的条件语句中的表达式不明白,还请高手指点
switch(Mod)                                                                                                                //根据模式设定TACCRx
                {
        case 2: case 6:                        /**死区模式2,6时,需要判断修正死区时间,且同时设定TA0CCR1/2 的值*/
                {
                        if((1000-2*Percent)<=DeadPermill)                        //为何这样计算?
                                Percent=(1000-DeadPermill)/2;              //?
                        TA0CCR1=Percent*TA0CCR0/1000;              //??
                        TA0CCR2= TA0CCR0-TA0CCR1;                     //这是什么意思?为什么这么运算?
                        break;
                }
                case 7:
                {
                        if(Percent>1000)        Percent=1000;
                        if(Channel==1) TA0CCR1=Percent* TA0CCR0/1000;
                        if(Channel==2) TA0CCR2=Percent* TA0CCR0/1000;
                        break;
                }
                case 3:                //占空比一律为正脉宽,所以需要 TA0CCR0减去占空比
                {
                        if(Percent>1000)        Percent=1000;
                        if(Channel==1) TA0CCR1= TA0CCR0-Percent*TA0CCR0/1000;
                        if(Channel==2) TA0CCR2= TA0CCR0-Percent*TA0CCR0/1000;
                        break;
                }
                default: return(0);
                }
                return (1);
        }

回复评论 (8)

图片上传不上来,估计你也是看launchpad 口袋实验的吧,自己对照那个图自己看


1.安全起见,死区时间一定要小于要求的绝对死区时间,简单说就是小于规定的时间,
2.有效周期=(全部周期-死区周期)/2. 因为是对称的。看口袋实验图解
3.因为TACCR0为作为频率,根据数学斜率一样。斜率*TACCR0=TACCR1.
看图可知在同一Y轴上  TACCR0-TACCR1=TACCR2
不对的地方请指教
点赞  2015-10-23 20:52
引用: z317946208 发表于 2015-10-23 20:52 图片上传不上来,估计你也是看launchpad 口袋实验的吧,自己对照那个图自己看 1.安全起见,死区时间一 ...
谢谢回复,豁然开朗 本帖最后由 suoma 于 2015-10-23 22:43 编辑
点赞  2015-10-23 22:42
引用: suoma 发表于 2015-10-23 22:42
谢谢回复,豁然开朗

第三点有点,我解释感觉有错。不是很清楚
点赞  2015-10-23 22:48
DeadPermill =((DeadTime*1000)/TA0CCR0);这个怎么理解
点赞  2015-10-24 21:51
引用: z317946208 发表于 2015-10-24 21:51
DeadPermill =((DeadTime*1000)/TA0CCR0);这个怎么理解

deadtime是死区时间?
点赞  2015-10-24 22:10
是死区时间,这个是自己设置的么。有点晕
点赞  2015-10-24 22:28
这个有完整的程序么
点赞  2015-10-24 22:29
引用: z317946208 发表于 2015-10-24 22:29
这个有完整的程序么

网上的,只有部分
点赞  2015-10-25 09:52
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复