首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 单片机栏
基于TMS320F2812事件管理器的一种测频方法
来源:本站整理  作者:佚名  2009-03-31 16:45:50



这里利用EV模块的定时器,可以节省一个CPU定时器去处理其他工作。捕获单元捕捉被测信号的有效电平跳变沿,由内部的计数器记录一个周波内标频脉冲个数,并通过相应的运算来得到被测频率的大小。频率测量时应在接入DSP前接一比较电路,将被测信号整形为方波信号后输出到DSP捕获引脚。图3为硬件电路模块图。

捕获单元可以记录捕获单元引脚的变化,用户可以指定诊断变化的方式(上升沿、下降沿或两个边沿)。当捕捉输入引脚CAPx(x=1、2、3属于EVA;x=4、5、6属于EVB)检测到变化时,它将捕捉所选择的GP定时器的当前计数值,并把该计数值存储在两级深度的16位FIFO堆栈中。这里每个捕捉单元都有一个专用的2级深度FIFO堆栈,顶层堆栈由CAPFIFOx组成,底层由CAPxFBOT组成。测频分两次捕捉,第一次捕捉到引脚发生的指定变化时,捕获单元将捕捉所选用计数器的计数值并把该值写入FIFO堆栈的上层寄存器(如果堆栈为空)。如果在第一次捕捉的值读取之前发生第二次捕捉,一个新的捕捉值会被送入底层寄存器。捕获单元捕捉到数值后,相应的中断标志位置1,如果没有屏蔽中断,就会产生外围设备中断请求。这里第一次捕捉屏蔽中断,第二次设置为和第一次捕捉相同的跳变沿捕捉,并开中断。响应中断,就可以通过中断服务程序读出一对捕捉的数值。这样的一对捕捉值正好是一个被测频率周期的两次计数。堆栈中的数值个数可以通过16位的FIFO状态寄存器CAPFIFOA(或CAPFIFOB)检测到。读出堆栈中两次存入的新旧捕获值,就能计算出一个周波内的标频脉冲数,进而得出被测周波的频率。

3 测频软件设计

3.1 事件管理器的初始化

初始化事件管理器时,在EVA的定时器1控制寄存器(T1CON)中设为连续增计数模式,64分频(由于被测的电网频率范围在45Hz-55Hz,而TMS320F2812主频为150MHz,计数器最大计数为0xFFFF,即65535.为使精度最高,选64分频,150M/64/50=46875),并使能定时器T1。通过设置捕获单元控制寄存器A(CAPCONA)的相应位来选用EVA模块的CAP1和GP定时器T1,并设为上升沿捕获。这里选用连续增计数模式,写0xFFFF到周期寄存器T1PR以使两次捕获的计数值之差尽可能大。GP定时器T1根据输入时钟进行增计数直到计数器的计数值与周期寄存器(T1PR)的值相等时为止,在产生匹配后的下一个输入时钟上升沿定时器复位为0并重新开始计数。捕获前要清中断标志位,开捕获中断。初始化子程序下所示。

void InitEv(void)

{

EvaRegs.T1PR = 0xFFFF;        //周期寄存器设为FFFF

       EvaRegs.T1CNT=0;

       EvaRegs.T1CON.all=0;          //定时器控制寄存器

       EvaRegs.T1CON.bit.TMODE=2;    //连续增计数模式

       EvaRegs.T1CON.bit.TPS=5;      //4分频

       EvaRegs.T1CON.bit.TENABLE=1;  //使能定时器

       EvaRegs.CAPCON.all=0;         //捕捉控制寄存器

       EvaRegs.CAPCON.bit.CAPQEPN=1;  //使能捕捉

       EvaRegs.CAPCON.bit.CAP1EDGE=1;    /检测上升沿

       EvaRegs.CAPCON.bit.CAP12TSEL=1;  //选定时器1

       EvaRegs.CAPFIFO.bit.CAP1FIFO=0; //CAP1FIFO空

       EvaRegs.EVAIFRC.bit.CAP1INT=1;//清捕获中断1标志位

       EvaRegs.EVAIMRC.bit.CAP1INT=1; //捕获1中断使能

}     

3.2 捕获中断子程序

上一页  [1] [2] [3] 

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:112,769.50000 毫秒