打印

求助:DM642定时器

[复制链接]
1247|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
展翅飞|  楼主 | 2009-6-26 18:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
DM642定时器能定时1us么,赋好初值后 实际试验中发现定时器中断内没任何指认 定时时间约为1.16us,内部指认愈多中断时间变的越长,我想问下这定时器中断是怎么工作的?从现象看好像是出定时器中断后计数器才开始重新计数,否则进中断周期不应该与中断服务函数内的指认有关?另外进栈出栈大概要多少时间  时钟是600M?
是中断结束后 定时器计数才开始重新计数么?为何中断内指认越多,进入中断时间周期越长,?定时周期不变
 
代码:


/* Header file created by DSP/BIOS tool */
#include "spicfgcfg.h"

#include <std.h>

#include <log.h>
#include <sys.h>
#include <mem.h>
#include <sio.h>
#include <csl.h>
#include <csl_cache.h>
#include <csl_irq.h>
#include <gio.h>

#define DRR0                    *((unsigned char *)(0x018C0000))
#define DXR0                    *((unsigned char *)(0x018C0004))
#define DRR1                    *((unsigned char *)(0x01900000))
#define DXR1                    *((unsigned char *)(0x01900004))

#define GPIO_EN        (*((unsigned int*)(0x01b00000)))
#define GPIO_DIR       (*((unsigned int*)(0x01b00004)))
#define GPIO_VAL       (*((unsigned int*)(0x01b00008)))
#define GPIO_DH        (*((unsigned int*)(0x01b00010)))
#define GPIO_HM        (*((unsigned int*)(0x01b00014)))
#define GPIO_DL        (*((unsigned int*)(0x01b00018)))
#define GPIO_LM        (*((unsigned int*)(0x01b0001c)))
#define GPIO_GC        (*((unsigned int*)(0x01b00020)))
#define GPIO_POL       (*((unsigned int*)(0x01b00024)))

void InitGPIO();     //初始化GPIO接口

void SpiRcv0();
void SpiRcv1();
void MCBSP_init();
#define PRDValue0 0x0000004b  // 1US 
Uint32 x[100],y[100];
Uint32 i,j;
#pragma CODE_SECTION(timer1,".jpgtbls ");
#pragma CODE_SECTION(writed,".jpgtbls ");
#pragma CODE_SECTION(SpiRcv0,".jpgtbls ");
#pragma CODE_SECTION(SpiRcv1,".jpgtbls ");//定义到内部ISRAM

void writed();
Uint32 KK=0,l=0;
Uint32 x[100],y[100];
Uint32 i,j;
TIMER_Handle hTimer1;
Uint32 TimerEventid;
//定时器配置系数结构体
TIMER_Config MyConfig1=
{
0x00000305,//CTL
PRDValue0,//PRD
0x00000000,//CNT
};
void writed()
{

        GPIO_VAL |= 0x00002002;    
    
        GPIO_VAL &= 0xffffdffd;
                GPIO_VAL |= 0x00002002;    
    
        GPIO_VAL &= 0xffffdffd;
                GPIO_VAL |= 0x00002002;    
    
        GPIO_VAL &= 0xffffdffd;
                GPIO_VAL |= 0x00002002;    
    
        GPIO_VAL &= 0xffffdffd;
                GPIO_VAL |= 0x00002002;    
    
        GPIO_VAL &= 0xffffdffd;//加上这几句后 通过示波器观察 发现进入此函数时间间隔变成2.2us  但定时时间初值为1us

}
//定时器1硬件中断 定时1us检测高速AD值 
void timer1(void)
{


  
writed();//屏蔽这句通过仿真进入时间为1.16us

//SWI_post(&TIME_swi);
}
/*----------------------------------------------------------------------------*/
void main() {

  volatile Uint32 y;
  int success = 1;
  CSL_init();
  
  IRQ_globalEnable(); //IRQ global enable
  IRQ_nmiEnable(); //NMIE
  IRQ_enable(IRQ_EVT_RINT0); //McBSP0 interrupt enable
  IRQ_enable(IRQ_EVT_RINT1); //McBSP1 interrupt enable

  MCBSP_init();
      InitGPIO();
      
   //打开定时器0及GPIO口
     hTimer1 = TIMER_open(TIMER_DEV1, 0);


//获取定时器0的事件号
     TimerEventid = TIMER_getEventId(hTimer1);

//中断向量表的初始化

    IRQ_globalEnable();
//    IRQ_nmiEnable(); //NMIE
   IRQ_enable(TimerEventid);
    IRQ_enable(IRQ_EVT_RINT0); //McBSP0 interrupt enable
    IRQ_enable(IRQ_EVT_RINT1); //McBSP1 interrupt enable
//对定时器0及GPIO口进行配置
     TIMER_config(hTimer1, &MyConfig1);


//开始运行
     TIMER_start(hTimer1);
  

}

//AD0 interrupt
void SpiRcv0()
{
    x[i++] = DRR0;
    if(i>99) i=0;
}

//AD1 interrupt
void SpiRcv1()
{
    y[j++] = DRR1;
    if(j>99) j=0;
}

void MCBSP_init()
{
  MCBSP_enableSrgr(hMcbsp0);
  MCBSP_enableRcv(hMcbsp0);
  MCBSP_enableXmt(hMcbsp0);
  MCBSP_enableFsync(hMcbsp0);  
  MCBSP_start(hMcbsp0,MCBSP_RCV_START | MCBSP_XMIT_START | MCBSP_SRGR_START| MCBSP_SRGR_FRAMESYNC, 0);

  MCBSP_enableSrgr(hMcbsp1);
  MCBSP_enableRcv(hMcbsp1);
  MCBSP_enableXmt(hMcbsp1);
  MCBSP_enableFsync(hMcbsp1);  
  MCBSP_start(hMcbsp1,MCBSP_RCV_START | MCBSP_XMIT_START | MCBSP_SRGR_START| MCBSP_SRGR_FRAMESYNC, 0);
}

void InitGPIO()
{
    
    /* GPIO */
    GPIO_EN        = 0x0000ffff;
    GPIO_DIR       = 0x00002222;      
}

/*----------------------------------------------------------------------------*/

/******************************************************************************
* End of main.c
******************************************************************************/

相关帖子

沙发
thf2008| | 2009-7-2 22:26 | 只看该作者

帮顶

使用特权

评论回复
板凳
linhai2009| | 2009-7-4 12:10 | 只看该作者

飘过

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

17

帖子

0

粉丝