智能车制作
标题:
PIT模块,求教,一个问题
[打印本页]
作者:
taotao7636
时间:
2011-8-7 13:47
标题:
PIT模块,求教,一个问题
今天写了个用PIT的OC功能实现1ms进一次中断的程序,如下:
PLL定义时总线率为16M
void PIT_Init(void){
TIOS_IOS0=1;
TC0=1000; //........1ms
TCTL2=0x01; //翻转
TSCR2=0x04;
//16分频 16M/16=1M.....1us
TSCR1=0x80;
TIE=0x01;
}
问题是:不论我怎么改TC0的值,都是65ms进一次中断,也就是都是在计数器溢出时进中断,怎解?是哪个寄存器设值错了吗?
作者:
977987060
时间:
2011-11-16 18:42
这个属于ECT模块,而不是PIT模块。
作者:
awesss
时间:
2011-12-4 19:08
//现象
B灯闪动,周期是INTVERAL*(0.01)ms,可用来记时.
//demo by whut_wj
#include <hidef.h> /* common defines and macros */
#include <MC9S12XS128.h> /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12xs128"
#define INTVERAL 100
void SetBusClock(void)
{
CLKSEL=0X00; //disengage PLL to system
PLLCTL_PLLON=1; //turn on PLL
SYNR=2;
REFDV=1; //pllclock=2*osc*(1+SYNR)/(1+REFDV)=48MHz;
_asm(nop); //BUS CLOCK=24M
_asm(nop);
while(!(CRGFLG_LOCK==1)); //when pll is steady ,then use it;
CLKSEL_PLLSEL =1; //engage PLL to system;
}
void PitInit(void)
{
PITCFLMT_PITE=0; //disable PIT
PITCE_PCE0=1; //enable timer channel 0
PITMTLD0=240-1; //time base 240 clock cycles ,it's 0.1M Hz
PITMUX=0X00; // ch0 connected to micro timer 0
PITLD0=INTVERAL-1; //INTVERAL micro time bases
PITINTE_PINTE0=1; //enable interupt channel 0
PITCFLMT_PITE=1; //enable PIT
//PITCNT0,类似于自由记数器,只不过一直是递减,TCNT是一直递增
}
void main(void)
{
EnableInterrupts;
SetBusClock();
PitInit();
DDRB=0xff;
for(;;)
{
}
}
#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 66 PIT0Interrupt(void)
{
PORTB^=0xff;
PITTF_PTF0=1;
}
作者:
drting
时间:
2011-12-24 17:56
作者:
小杨木叶
时间:
2013-8-17 08:51
大神,有没有PIT模块的中文资料啊,望共享之。。。在此感谢了。。。。
欢迎光临 智能车制作 (http://111.231.132.190/)
Powered by Discuz! X3.2