智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2032|回复: 1
打印 上一主题 下一主题

[软件类] 是不是ad转换与rti中断有矛盾啊。

[复制链接]

4

主题

7

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
248
威望
181
贡献
25
兑换币
0
注册时间
2010-9-4
在线时间
21 小时
跳转到指定楼层
1#
发表于 2011-7-7 15:10:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
麻烦大家看下我的程序。遇到的问题是引入中断后,小车就只进行中断程序,不会在执行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

4

主题

7

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
248
威望
181
贡献
25
兑换币
0
注册时间
2010-9-4
在线时间
21 小时
2#
 楼主| 发表于 2011-7-7 18:07:49 | 只看该作者
是不是中断时间太短了,mcu无法完成一次操作就有进入中断了?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|亿加合和智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-5-27 23:21 , Processed in 0.047678 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表