专栏中心

EEPW首页 > 专栏 > 2407的定时器测试

2407的定时器测试

发布人:0750long 时间:2009-07-07 来源:工程师 发布文章
2407的定时器测试

1 基于2407的定时器测试程序
/*  往WDKEY连续写0x5555和0xAAAA即可禁止2407内置的看门狗 */
void KickDog()                                    /*  踢除看门狗 */
{
        WDKEY = 0x5555;
        WDKEY = 0xAAAA;
}
void EVAInit()
{
        EVAIMRA = 0x0080;                        /*  定时器1周期中断使能 */
        EVAIFRA = 0xFFFF;                        /*  清除中断标志 */
        GPTCONA = 0x0000;
        T1PR = 0x1f40;                        /*  定时器1的初值,定时16us */
        T1CNT = 0x0000;             /*  定时器的计数初值 */
        T1CON = 0x164C;                            /*  连续增计数模式,128分频,16M/128=0.125M*/       
}

void DSPInit()
{   
        asm(" SETC        INTM ");        /* 关闭总中断 */
        asm(" CLRC  SXM  ");        /* 禁止符号位扩展 */
        asm(" CLRC  CNF  ");    /* B0块映射为 on-chip SDRAM*/
        asm(" CLRC  OVM  ");    /* 累加器结果正常溢出*/
        SCSR1 = 0x06D4;    /* 打开ADC,EVA,CAN和SCI的时钟,系统时钟CLKOUT=16M */
        WDCR = 0x006F;                        /* 禁止看门狗,看门狗时钟64分频 */
        KickDog();                            /* 剔除看门狗 */
    IFR = 0xFFFF;                        /* 清除中断标志 */             
    IMR = 0x0003;                    /* 打开中断级1,2 */
}

main()                 
{        
      DSPInit();
      EVAInit();                                /* 定时器初始化*/
      MCRC = MCRC&0x0000;                        
          asm(" NOP ");
      PFDATDIR = PFDATDIR|0x2000;
          asm(" NOP ");
          PFDATDIR = PFDATDIR&0xFFDF;   
           
      asm(" CLRC INTM ");
          while(1);
}

void c_int2()
{
        if(PIVR!=0x27)
        {       
                asm(" CLRC INTM ");
                return;
        }
               
        //T1CNT = 0;                /*删掉这一句可以使定时器准确*/
       
        PFDATDIR="PFDATDIR"^0x0020; /******* 发送指示灯极性反转 ***********/
        EVAIFRA = 0xFFFF;
    asm(" CLRC INTM ");
}   

2 测试结果
以上程序是使DSP每16us进入一次中断,然后使LED亮灭交替,故灯的闪烁周期为2*16us=32us。定时器不能采用太高的频率,否则会使示波器观察到的波形失真严重。
用示波器进行测量,可以发现,如果在DSP程序进入中断后对T1CNT清零,会使LED处的方波频率变为22.99kHz,即周期为43.497us;而取消对T1CNT清零,会使LED处的方波频率变为31.01kHz~31.25kHz,即31.25us~32us,很接近预计值。
对两次测量周期进行对比,可以看到相差为43.497us-31.25us=12.247us。折合成DSP的时钟数,为12.247us*16MHz=192。
3 误差分析
在汇编窗口中观察定进器中断程序,可以看到如下代码:
c_int2
CALL        I$$SAVE,*
SAR        AR1,*
LAR        AR0,#1h
LAR        AR0,*0+
LDP        #e0h
LACC        1eh
SUB        #27h
BCND        L18,EQ
CLRC        INTM
B                EPIO_8,*
L18:
LACL        #0h
LDP        #e8h
SACL        1h

……
……

I$$SAVE:
MAR        *,AR1
ADRK        #1h
SST                #1,*+
SST                #0,*+
SACH        *+,0
SACL        *+,0
CLRC        OVM
SPM
SPH        *+
SPL                *+
SAR        AR0, *+
SAR        AR2, *+
SAR        AR3, *+
SAR        AR4, *+
SAR        AR5, *+
SAR        AR6, *+
SAR        AR7, *+
POPD        *
LACC        *,0
RPT        #6h
POPD        *+
BACC
从以上的汇编代码,可以大致看到那多出的192个周期花在这些自动生成的代码里面去了。
3 结论
51单片机的定时器开启后,每次进入中断都要对计数值进行重载。而TMS320LF2407的定时器具有自动重载功能,不需要程序对它清零。

专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

WAFERMAP 升级程序

Nexperia将铜夹片(CFP)封装的优势引入双极性晶体管

聚焦正向设计|鲁欧智造第三届用户大会成功举办

AI浪潮下的中国机遇:技术融合与工程创新

中国电信:运营商视角思考RISC-V 在AI领域的应用

半导体创新推动能源格局演变的三种方式

VNC电脑远程控制软件

Microchip与台达电子签署碳化硅解决方案合作协议,共创电源管理未来

WINRAR V3.40中文版 (解压缩的工具软件)

配置四开关降压-升压型µModule稳压器来适应不同应用:升压、降压或反相输出

win2000_win2003 远程终端(远程桌面)客户端程序

2010全球电子峰会:Mentor Graphics

视频 2010-05-14

2010全球电子峰会:National Semiconductor

视频 2010-05-14

2010全球电子峰会:Panel Discussion(上)

歌尔展出前沿创新方案,破译AI眼镜“声学密码”

消费电子 2025-07-19

无人机核心系统解析:自主导航与感知系统

2010全球电子峰会:Altera公司

视频 2010-05-14

Meta不会实施欧盟提出的自愿性人工智能指南

WM8731 WM8731L 低功耗的立体声Codec芯片

2010全球电子峰会:Panel Discussion(下)

更多 培训课堂
更多 焦点
更多 视频

技术专区