首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

请高手指点关于模数向下计数器的问题

请高手指点关于模数向下计数器的问题

我用ms9s12dg128b的模数向下计数器来实现定时发生中断的功能,系统时钟和ECT模块时钟都保持默认值,产生中断时,让PT0口输出一个脉冲.程序中将MCCNT=200时,用示波器观察每25us产生一次中断,MCCNT=100时每12.5us产生一次中断,MCCNT=50时每6.2us产生一次中断.

可是当我把MCCNT的值设定到20、10、5等时,中断间隔的时间却始终都在2.9us~3.5us左右,我不知道为什么计数器MCCNT设定的值成比例的减小,而中断的时间却不变.如果我想获得1us多一点的定时中断时间,我该怎么设定呢??
这个问题困扰了我很久
请各位高手指教啊,谢谢!!!

下面是我的程序:
#include /* common defines and macros */
#include /* derivative information */


#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"


//unsigned int time_count=28;

void PIM_Init(void)
{

    DDRT|=0x01; //T口设置为输出
}


void main(void)
{
/* put your own code here */
PIM_Init();

PEAR_NECLK=1;

MCFLG_MCZF=1;
MCCTL|=0xC4;
MCCTL&=0xFC;

//COPCTL_RSBCK=0;
//PWMCTL_PSWAI=0;
//PWMCTL_PFRZ=0;

//TSCR1_TSWAI=0;
//TSCR1_TSFRZ=0;
ICSYS=0x00;

MCCNT=10;                 //MCCNT设置为10
MCCTL_FLMC=1;
INTCR_IRQEN = 0;

EnableInterrupts;
for(;;) {} /* wait forever */
}

///////////////////////////////////////////////////////////////////////////
/////中断函数///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
#pragma CODE_SEG NON_BANKED

void interrupt underflow(void)
{

MCFLG_MCZF=1; //清MCZF的中断

       PTT|=0x01; //PT0输出高电平
 PTT&=0xFE; //PT0输出低电平
}

#pragma CODE_SEG DEFAULT
要拥有必先懂失去总接受
为什么没有高手指点呢?我很急啊!
请哪位高手指点一下
谢谢了!!
要拥有必先懂失去总接受
因为单片机执行代码的速度没有那么快

响应中断的函数跳转和保存现场的指令基本上就要2,3us的时间

实际上中断发生的周期和你理论计算的相同,但中断响应的次数较少
那怎么办呢?我要采集CMOS的图象数据,中断周期如果长的话,就采不了那么多个点了啊.
怎么办呢??请指点啊
要拥有必先懂失去总接受
采图像是每行中断一次,然后不断查询

方法和原理图在智能车大赛的网站上有样例
对图像传感器的数据进行采集
只能采用超频了
不然是采不到足够的点的
可以看看关于dg128b单片机是如何进行超频的
不用逐行扫描,隔行采就行
责任源于梦想!!
采图像是每行中断一次,然后不断查询

方法和原理图在智能车大赛的网站上有样例
********************************************************
请问智能车网站是哪一个啊?
返回列表