飞思卡尔定时中断程序3

飞思卡尔定时中断程序3

ID:37680012

大小:144.30 KB

页数:16页

时间:2019-05-28

飞思卡尔定时中断程序3_第1页
飞思卡尔定时中断程序3_第2页
飞思卡尔定时中断程序3_第3页
飞思卡尔定时中断程序3_第4页
飞思卡尔定时中断程序3_第5页
资源描述:

《飞思卡尔定时中断程序3》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、2D64定时器中断和频率捕捉中断冲突问题一、首先大致功能:1:四路频率捕捉中断,要求可同时输入四路,也可任意输入一路、两路或者三路(10~2.5KHz)。2、将捕捉到的频率通过四路PWM依次输出,要求实时、稳定、输入多少输出就为多少(误差:千分之二)。3:定时器中断,1毫秒中断一次。利用定时器屏蔽10Hz(100ms)以下的频率或者无频率输入时,置为0,屏蔽输出。二、调试过程1、开始使用定时器中断和频率捕捉中断,频率捕捉中断开通方法:初始化四路全部开通,进入第一路捕捉中断,开通第二路捕捉中断,关闭第一路捕捉中断进入第二路捕捉中断,开通第三路捕捉中断,关闭第二路捕捉中断进入第

2、三路捕捉中断,开通第四路捕捉中断,关闭第三路捕捉中断进入第四路捕捉中断,开通第一路捕捉中断,关闭第二路捕捉中断形成一个环状,只有当频率全部有输入时才能采集正常,有任意一路没有输入时都将停止中断的执行。存在问题,当四路频率全部输入时,捕捉正常,但当只有一路或者两路或者三路输入时,能进入中断的那几路也只能响应一次中断。程序如下:#pragmaCODE_SEG__NEAR_SEGNON_BANKEDinterruptvoidMDC_ISR()//定时器1ms中断一次{CpuCounter++;//工作指示灯计数器,500ms翻转一次if(ptflag0==1)//10Hz以下或者

3、无输入时计数,进入捕捉中断标志和计数清零,中断结束时打开标志{ptcount0++;}if(ptflag1==1){ptcount1++;}if(ptflag2==1){ptcount2++;}CreatedwithSmartPrintertrailversionwww.i-enet.comif(ptflag3==1){ptcount3++;}if(ptcount0>100)//10Hz以下或者无输入时不允许输出{ptcount0=0;//计数清零flagECT0=0;//标志清零fin1=0;//频率置为0PTH_PTH7=0;//指示灯熄灭PWME=PWME&0xfc;

4、//不允许输出}if(ptcount1>100){ptcount1=0;flagECT1=0;fin2=0;PTH_PTH6=0;PWME=PWME&0xf3;}if(ptcount2>100){ptcount2=0;flagECT2=0;fin3=0;PTH_PTH5=0;PWME=PWME&0xcf;}if(ptcount3>100){ptcount3=0;flagECT3=0;fin4=0;PTH_PTH4=0;CreatedwithSmartPrintertrailversionwww.i-enet.comPWME=PWME&0x3f;}if(CpuCounter>

5、=500)//处理器工作指示灯{cpuflag=1;CpuCounter=0;}MCFLG_MCZF=1;}interruptvoidPT3_isr(){DisableInterrupts;//总中断关闭ptflag3=0;//清除无输入或者10Hz以下频率标志ptcount3=0;//清除无输入或者10Hz以下频率计数器TIE_C0I=1;//开放ECT0局部中断TFLG1_C3F=1;//中断标志寄存器对C3F清零//newcount3=TC3;//读一次TCxif(TC3>TC3H){count3=TC3-TC3H;}else{count3=65535-TC3H+TC

6、3;}if((count3>148)&&(count3<37450))//10~2.5KHz有效,其余无效{flagECT3=1;//输出标志置一PWME=PWME

7、0xc0;//允许输出}else//无效不允许输出{CreatedwithSmartPrintertrailversionwww.i-enet.comflagECT3=0;//输出标志清零fin4=0;PTH_PTH4=0;PWME=PWME&0x3f;//不允许输出}ptflag3=1;//打开无输入或者10Hz以下频率标志ptcount3=0;//清除无输入或者10Hz以下频率计数器EnableInterr

8、upts;//总中断开启TIE_C3I=0;//关闭ECT3局部中断}interruptvoidPT2_isr(){DisableInterrupts;ptflag2=0;ptcount2=0;TIE_C3I=1;//开放ECT3局部中断TFLG1_C2F=1;//中断标志寄存器对C2F清零//newcount2=TC2;if(TC2>TC2H){count2=TC2-TC2H;}else{count2=65535-TC2H+TC2;}if((count2>148)&&(count2<37450))//570->7

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。