智能车制作
标题: 定时器定时不准确 这是为什么啊 急求 [打印本页]
作者: 过去了的 时间: 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 |