打印
[其它应用]

频率偏差很大

[复制链接]
419|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
songqian17|  楼主 | 2019-10-27 09:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
中颖SH79F1615定时器0用内部27MRC定时频率偏差很大

使用特权

评论回复
沙发
huwr| | 2019-10-27 09:38 | 只看该作者
楼主详细说说怎么回事啊,这么说太笼统了

使用特权

评论回复
板凳
songqian17|  楼主 | 2019-10-27 09:42 | 只看该作者
现在想用sh79f1615的time0实现10mS定时中断,定时器甚至为工作方式1,系统时钟为内部27Mrc。硬件电路,没有接外部晶振,XTAL1和XTAL2悬空用JET51仿真器,通过ISP51软件对整个flash区域编程下载程序,代码选项“OP_OSC”设置为oscillator1 is internal 27M RC,oscillator2 is disabled. 但是测得的中断频率几乎是10mS的四倍。请指出问题出在哪?

使用特权

评论回复
地板
happy_10| | 2019-10-27 09:46 | 只看该作者

楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因

使用特权

评论回复
5
songqian17|  楼主 | 2019-10-27 09:50 | 只看该作者


//====时钟分频=====   
#define     CLK_DIV1    0X00  
#define     CLK_DIV2    0X01  
#define     CLK_DIV4    0X02  
#define     CLK_DIV12   0X03

#define Bank0 INSCON &= 0xbf
#define Bank1 INSCON |= 0x40

//时钟通道2  
  
void Init_Clk2(unsigned char Pscr)  
{  
        unsigned int i;
    Bank0;  
        
    CLKCON = 0X00 ;  
    CLKCON |= (Pscr<<5) ;//分频设置  
         
    CLKCON |= (1<<3) ;    //打开OSCXCLK   
    for(i=60900;i>0;i--) ;
    CLKCON |= (1<<2) ;    // 把它作为振荡(OSCSCLK)时钟  
   
}  


unsigned int uiSysTime = 0;
void time0_Initial(void)
{
        
        IEN0 = 0xc2;                        //打开定时器0中断和总中断

        TMOD = 0x01;                        //设置Timer0工作方式为方式1
        TCON1 = 0x04;                        //将系统时钟作为定时器0的时钟源         
        TL0 = 0x1b;                        //设置Timer0定时器初值为0xa81b,10mS溢出中断一次
        TH0 = 0xa8;        TR0 = 1;                                //打开Timer0
}
void        Timer0_ISP(void) interrupt 1
{
        EA        =        0;               
        TF0  = 0;                                                        
        //-------------------
        uiSysTime++;
        if((uiSysTime%100==0)&&(uiSysTime != 0))
        {
           P0=P0^(1<<5);
        }

        //-------------------
        EA        =        1;
}
void main(void)
{         

        Init_Clk2(CLK_DIV2);        
        time0_Initial();

        
        while(1)  
        {
                 
        
        }
  
}

使用特权

评论回复
6
bqyj| | 2019-10-27 09:52 | 只看该作者
差四倍,那就是你的取值错了。你可以再取个5ms试试,说不定还是正好差四倍。

使用特权

评论回复
7
songqian17|  楼主 | 2019-10-27 09:55 | 只看该作者
请问内部的高频27M RC是如何配置的;若系统时钟为27M Hz;定时器分频系数也是1/1,计数器0是每秒计数27M次吧

使用特权

评论回复
8
peripheral| | 2019-11-2 17:02 | 只看该作者
4倍这个夸张了,应该是哪里没有配置好

使用特权

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

本版积分规则

463

主题

5749

帖子

1

粉丝