[其它应用] 频率偏差很大

[复制链接]
2462|17
 楼主| songqian17 发表于 2022-8-3 22:26 | 显示全部楼层 |阅读模式
中颖SH79F1615定时器0用内部27MRC定时频率偏差很大
heweibig 发表于 2022-8-3 22:27 | 显示全部楼层
楼主详细说说怎么回事啊,这么说太笼统了
 楼主| songqian17 发表于 2022-8-3 22:29 | 显示全部楼层
现在想用sh79f1615的time0实现10mS定时中断,定时器甚至为工作方式1,系统时钟为内部27Mrc。硬件电路,没有接外部晶振,XTAL1和XTAL2悬空用JET51仿真器,通过ISP51软件对整个flash区域编程下载程序,代码选项“OP_OSC”设置为oscillator1 is internal 27M RC,oscillator2 is disabled. 但是测得的中断频率几乎是10mS的四倍。请指出问题出在哪?
zhaoxqi 发表于 2022-8-3 22:31 | 显示全部楼层
楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因
 楼主| songqian17 发表于 2022-8-3 22:35 | 显示全部楼层

//====时钟分频=====   
#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)  
        {
                 
        
        }
  
}
daichaodai 发表于 2022-8-4 08:16 来自手机 | 显示全部楼层
内部RC精度和稳定性无法保证
jlyuan 发表于 2022-8-4 21:13 | 显示全部楼层
差四倍,那就是你的取值错了。你可以再取个5ms试试,说不定还是正好差四倍。
 楼主| songqian17 发表于 2022-8-4 21:15 | 显示全部楼层
请问内部的高频27M RC是如何配置的;若系统时钟为27M Hz;定时器分频系数也是1/1,计数器0是每秒计数27M次吧
wyjie 发表于 2022-8-4 21:17 | 显示全部楼层
4倍这个夸张了,应该是哪里没有配置好
zwll 发表于 2022-8-4 21:19 | 显示全部楼层
定时器不要重装载吗
dingy 发表于 2022-8-4 21:21 | 显示全部楼层
如果在不精准的环境,是可以使用的,不然使用外部晶振靠谱点。
 楼主| songqian17 发表于 2022-8-4 21:23 | 显示全部楼层
好的,我明天去单位试一下,多谢各位大侠了哈        
chenqianqian 发表于 2022-8-5 08:03 来自手机 | 显示全部楼层
还是使用外部时钟源吧
GGLOAM 发表于 2022-8-5 11:53 | 显示全部楼层
好像没有重载初始计数值。
两只袜子 发表于 2024-3-17 08:00 | 显示全部楼层
建议使用外部晶振作为时钟源
jcky001 发表于 2024-3-17 09:09 | 显示全部楼层
查阅中颖SH79F1615的数据手册或参考手册,查看是否有相关的校准或补偿步骤。
通过校准或补偿,你可以调整RC振荡器的频率,使其更接近标称值。
cr315 发表于 2024-3-17 10:00 | 显示全部楼层
电源电压是否稳定
CarterERO 发表于 2024-3-18 11:05 来自手机 | 显示全部楼层
可能是晶振不够稳吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

463

主题

5749

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部