智能车制作

标题: 关于ECT捕捉的问题 [打印本页]

作者: chenrunshe_007    时间: 2009-4-28 12:57
标题: 关于ECT捕捉的问题
/*程序的目的是利用输入捕捉0通道对外来的方波信号进行捕捉,采用中断的形式。中断发生后读取捕捉后的计数值,并用B口的LED指示中断成功,接线方面我采取的是PA6与PT0连接。编译可以通过可是连接的时候有错误“Fixup overflow in _Vector_8, to ic0_int type 1, at offset 0x0”,本人不知道什么原因,望高手赐教,能在我迷茫中给及希望感谢啊!*/


#include <hidef.h>      /* common defines and macros */
#include <mc9s12dg128.h>
#pragma LINK_INFO DERIVATIVE "mc9s12dg128"

unsigned int ic_first,ic_second,dic;/*声明变量*/

void Set_Pll(void);
void Ic_Init(void);

void main(void)
{  
  unsigned int i;
   /* put your own code here */
  Set_Pll();     /*设置锁相环*/
  Ic_Init();     /*IC初始化*/
EnableInterrupts;
  DDRA=0XFF;  /*设置A为输出*/
  PORTA=0X00; /*初始化为低电平*/
  DDRB=0XFF; /*设置B为输出*/
  PORTB=0XFF; /*初始化为高电平*/
  
  for(;;)
  
  {
    for(i=0;i<6000;i++)
   
    {
         PORTA_BIT6=1; /*循环中设置为高电平*/
    }
    for(i=0;i<6000;i++)
      
    {
         PORTA_BIT6=0; /*循环中设置为低电平,产生一个方波*/
    }
      
    _FEED_COP(); /* feeds the dog,看门狗,不用理它 */
  } /* loop forever */
  /* please make sure that you never leave main */
}

/*设置锁相环,总线频率为24MHz*/
void Set_Pll(void)
{
  CLKSEL=0X00;
  PLLCTL=0XE1;
  SYNR=2;
  REFDV=1;
  PLLCTL=0X60;
  asm NOP;
  asm NOP;
  asm NOP;
  while(!(CRGFLG&0X08));
  CLKSEL=0X80;
  }

/*IC初始化*/  
void Ic_Init(void)
{
  TSCR1=0X90; /*主定时器使能*/
  TSCR2=0X07; /*Prescaler Factor=128*/
  ICSYS=0X02; /*IC缓冲使能*/
  TIOS=0;     /*通道设置为输入捕捉*/
  TCTL4=0XFF; /*采用上升、下降沿触发*/
  TIE=0X00000001;/*通道0开中断*/
}

#pragma CODE_SEG NON_BANDKED

void interrupt 8 ic0_int (void)
{
  TFLG1_C0F=1;/*中断标志清除*/
  ic_second=TC0; /*通过读TC0寄存器来响应中断*/
  dic=ic_second-ic_first; /*得到脉冲宽度*/
  ic_first=ic_second;
  PORTB++;/*用LED来指示已经进入中断*/
}
作者: chenrunshe_007    时间: 2009-4-28 15:46
大家不用看了,我把#pragma CODE_SEG NON_BANKED写成了#pragma CODE_SEG NON_BANDKED,真sick,害的我一个中午都在反复写了几遍程序都不对,大家要引以为鉴啊,一个小小的马掌丁跟一个国家灭亡的故事你们小时候没少看吧
作者: whut_wj    时间: 2009-4-28 16:49
呵呵
作者: 敏2009    时间: 2009-4-28 17:22
正常,呵呵,不灰心努力!
作者: 敏2009    时间: 2009-4-28 19:13
正常,呵呵,不灰心努力!
作者: xbsf-写轮眼    时间: 2009-4-28 21:28

作者: wokao    时间: 2010-1-15 19:58
想问一下,为什么要PA6口与PT0连接?
作者: chenrunshe_007    时间: 2010-1-15 23:50
回复 7# wokao
PA6我是用于产生脉冲信号用的,PT0是用来捕捉信号用的,PA6当然要联PT0。
作者: muyicangren    时间: 2010-1-18 18:07
呵呵
作者: he251125    时间: 2010-3-9 11:13
很好啊
作者: kenuo1991    时间: 2010-3-23 20:13
有点儿意思……学习啦
作者: 山孩子    时间: 2010-3-24 15:02
本帖最后由 山孩子 于 2010-3-24 15:04 编辑

回复 1# chenrunshe_007


    PORTA_BIT6在XS128中不识别
修给为 PORTA_PA6 就好了
不好意思   很菜
那个在DG中可以识别的
作者: jiao19880804    时间: 2010-3-24 19:22
tonggan
作者: cnpcshangbo    时间: 2010-3-25 16:42
很好
作者: qnbs1    时间: 2010-3-28 09:41
呵呵 。不错。学习了
作者: luqingyun    时间: 2010-7-29 22:56
这个程序在那个地方进入中断啊?
作者: 逐梦者    时间: 2010-10-5 22:10
不错
作者: 1347519017    时间: 2013-4-17 12:16
chenrunshe_007 发表于 2010-1-15 23:50
回复 7# wokao
PA6我是用于产生脉冲信号用的,PT0是用来捕捉信号用的,PA6当然要联PT0。

我请教一下,pt0 捕捉的不是系统时钟的上升沿吗?






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