c2000系列dsp的捕获单元设计中需要注意哪些问题?
答案:1 悬赏:60
解决时间 2021-02-21 12:44
- 提问者网友:感性作祟
- 2021-02-21 01:04
c2000系列dsp的捕获单元设计中需要注意哪些问题?
最佳答案
- 二级知识专家网友:煞尾
- 2021-02-21 02:16
我这以2812为例,说一下吧。
大前提:
各个模块的时钟要打开,有一次我就忘开全局时钟,结果查了半天错,郁闷死了。
各级中断保证打开(外设级,PIE级,cup级),这我也吃过亏。
首先要配置你要捕获的定时器值的值,如下:
//T4寄存器配置
EvbRegs.T4CON.bit.TENABLE=0;
EvbRegs.T4CON.bit.TMODE=2;//连续增计数模式
EvbRegs.T4CON.bit.TPS=5;//T4_CLOCK=HSPCLK/32=2.34375MHz
EvbRegs.T4CON.bit.TCLKS10=0;//选择内部时钟
注意几点:
要保证捕获周期时间要小于定时器记到最大值的时间,不然定时器跑一圈了,还没有捕获产生就产生溢出了。这里我要捕获市电的过零点,所以我定时器计一圈的时间大于20ms。
一般让定时器工作在连续增计数模式。
然后就是捕获单元的配置,如下:
//捕获单元配置
EvbRegs.CAPCONB.bit.CAPRES=0;
EvbRegs.CAPCONB.bit.CAPQEPN=0;//禁止捕获4和5
EvbRegs.CAPCONB.bit.CAP45TSEL=0;//选择T4定时器
EvbRegs.CAPCONB.bit.CAP4EDGE=1;//检测上升沿
主要就是上面四句话,先复位,然后为你的捕获单元选择定时器,选择要捕获的边沿。(这里我没有直接开启捕获,是因为还没到时候,具体什么时候开,主程序中有逻辑控制)
最后就是捕获中断函数了,这里就不将函数写出来了,根据自己的需求写就行。别忘了退出中断前要清楚中断标志位,以防重复进入中断。
大前提:
各个模块的时钟要打开,有一次我就忘开全局时钟,结果查了半天错,郁闷死了。
各级中断保证打开(外设级,PIE级,cup级),这我也吃过亏。
首先要配置你要捕获的定时器值的值,如下:
//T4寄存器配置
EvbRegs.T4CON.bit.TENABLE=0;
EvbRegs.T4CON.bit.TMODE=2;//连续增计数模式
EvbRegs.T4CON.bit.TPS=5;//T4_CLOCK=HSPCLK/32=2.34375MHz
EvbRegs.T4CON.bit.TCLKS10=0;//选择内部时钟
注意几点:
要保证捕获周期时间要小于定时器记到最大值的时间,不然定时器跑一圈了,还没有捕获产生就产生溢出了。这里我要捕获市电的过零点,所以我定时器计一圈的时间大于20ms。
一般让定时器工作在连续增计数模式。
然后就是捕获单元的配置,如下:
//捕获单元配置
EvbRegs.CAPCONB.bit.CAPRES=0;
EvbRegs.CAPCONB.bit.CAPQEPN=0;//禁止捕获4和5
EvbRegs.CAPCONB.bit.CAP45TSEL=0;//选择T4定时器
EvbRegs.CAPCONB.bit.CAP4EDGE=1;//检测上升沿
主要就是上面四句话,先复位,然后为你的捕获单元选择定时器,选择要捕获的边沿。(这里我没有直接开启捕获,是因为还没到时候,具体什么时候开,主程序中有逻辑控制)
最后就是捕获中断函数了,这里就不将函数写出来了,根据自己的需求写就行。别忘了退出中断前要清楚中断标志位,以防重复进入中断。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯