智能车制作

标题: 定时器定时不准确 这是为什么啊 急求 [打印本页]

作者: 过去了的    时间: 2013-9-19 10:58
标题: 定时器定时不准确 这是为什么啊 急求
#include <hidef.h>            /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */
void PLL_init(void)
{
PLLCTL=0X01;
CLKSEL=0X03;
SYNR=0X02;                                 外部晶振为8M
REFDV=0X01;        //设置总线频率为24M
PLLCTL_PLLON=1;   //开启锁相环
//asm NOP;
//asm NOP;
while(!CRGFLG_LOCK);    //锁定PLL
CLKSEL_PLLSEL=1;      
}
unsigned int counter=0;
void ECT(void)
{
       TIOS_IOS0=1;          //设置通道0为输出比较
       TC0=0X00EE;          //输出比较寄存器0设置初值
       TCTL2=0X02;           //定时器控制寄存器OC0输出低电平
       TIE_C0I=1;               //允许通道0对应产生中断
       TSCR2=0X06;          //设置预分频因子为64   (记一个数用2.56us)
       TSCR1=0X80;          //定时器使能
}
#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt   8 OC0(void)  //8为定时器通道0的中断标号
{
        TFLG1_C0F=1;         //中断发生在0通道对0通道清除标志位      
       TC0=TCNT+3906;     //进入中断的周期为10毫秒
       counter++;
       DDRA=0XFE;            //用灯检测是否进入中断
       if(counter==100)
       {
                counter=0;
                PORTA=~PORTA;
       }  
}
#pragma CODE_SEG DEFAULT
voidmain(void)
{  
       PLL_init();                  //锁相环初始化
       ECT();                        //时钟模块初始化
       DDRA=0X0E;            //设置PORTA  1--3  为输出
       PORTA=0X00;           //开灯
      
       for(;;)
       {
       EnableInterrupts;
       }
}
我用的是MC9S12D64芯片    我上面程序弄的 是 1S  为什么我在试验箱上的现象就感觉好几秒   为什么  
求大神解答

作者: mirsfzrx520    时间: 2013-9-19 23:11
主线频率 还有看看是不是本身设置就错了~

作者: 过去了的    时间: 2013-9-20 20:55
mirsfzrx520 发表于 2013-9-19 23:11
主线频率 还有看看是不是本身设置就错了~

我感觉没错呀,It‘s  why??
作者: 追风style    时间: 2013-9-21 12:54
将3906改成1875试试!
作者: mirsfzrx520    时间: 2013-9-21 13:33
过去了的 发表于 2013-9-20 20:55
我感觉没错呀,It‘s  why??

用示波器监控 片段的长度~





欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2