智能车制作

标题: 是不是ad转换与rti中断有矛盾啊。 [打印本页]

作者: qingmu168    时间: 2011-7-7 15:10
标题: 是不是ad转换与rti中断有矛盾啊。
麻烦大家看下我的程序。遇到的问题是引入中断后,小车就只进行中断程序,不会在执行for里面的程序了。我想是在ad初始化的时候和中断发生了冲突,但是就是找不出
问题在哪边。xs128的ad模块和dg128差别挺大的。急求大家帮助。
void ad_init() {
  
  ATD0CTL0=0x07;//第七通道后返回
  ATD0CTL1=0x00;//允许指定AD口做外部触发输入口,8位结果,采样前采样电容不放电 1
  ATD0CTL2=0x42;//停止模式下继续运行,允许中断
   ATD0CTL3=0xB0;//10110000  右对齐,转换序列为6
  ATD0CTL4=0x1F;//00011111 Ad时钟频率 ATDclock=busclock/(prs)*0.5=1MHZ,prs=32,
  ATD0CTL5=0x30;//00110000 特殊通道转换禁止,连续转换,多通道,起始为0
  ATD0DIEN=0x00;//输入使能寄存器,禁止引脚的数字缓冲
}

void rti_int()
{
  CRGINT_RTIE=1;//允许每个周期结束产生中断
  RTICTL=0xCA;//11001010,周期大约为1s,实时中断的溢出时钟周期=(RTR[3:0]+1) x (2的(RTR[6:4] + 9)次方)/OSCCLK。
}
void main(void)
{
  DisableInterrupts;
  pll_init();
  ad_init();
  rti_int();
  EnableInterrupts;
for(;;) {PORTB=0X00;}
#pragma CODE_SEG __NEAR_SEG NON_BANKED       //实时中断RTI 中断函数

void interrupt 7 RTI(void)
{
  DisableInterrupts;
  PORTB=0XFF;
  CRGFLG_RTIF=1; //向CRGFLG_RTIF 写1 清除标志位
}
#pragma CODE_SEG DEFAULT
作者: qingmu168    时间: 2011-7-7 18:07
是不是中断时间太短了,mcu无法完成一次操作就有进入中断了?




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