- 杂志
 搜 索: 
 论坛 » MCU应用 » 高手指导下 中断问题
广告招商
版主: renesasstk , QQMCU , renesaschina , l0p0c
 发表新贴 
 发表回复 
 高手指导下 中断问题  发表于 2008-09-13 10:58:11 [您是本帖的第282位阅读者]     [1楼] 
呢称:lin627
加我为好友
 
p1_7------p1_7/CNTR00/INT10


//INT1 初始化
 cntrsel=0;  //int10位INT1的输入脚
 r0edg=1;    //下降沿   RXDHW
 int1ic=0x06;     //6级中断

 p1=0x97;
 pd1=0x7b;

void _int1(void)
{
   //ir_int1ic=0;            /*清中断请求*/
   //tc=416;                 //set count
  // tm0=833-1;
   tm0=416;
   rxd_bit=ONEBIT;
   Int1_stop();
   TimerC_cmp0_start();
}


怎么中断没触发直接就进去了   不知道什么问题 
I/O对应的就是上面对应的脚

 


 
 RE: 高手指导下 中断问题  发表于 2008-09-13 12:18:19 [2楼] 
呢称:lin627
加我为好友
版主不在吗

帮帮忙
 
 RE: 高手指导下 中断问题  发表于 2008-09-16 17:32:18 [3楼] 
呢称:bona
加我为好友
楼主可以试试以下几种方法,从而确定问题所在。

1)将中断关掉(asm("FCLR I")),看是否会进入中断。
2)观察一下p1_7端口上的电压,看是什么信号触发了中断。

谢谢您的提问。
 
 RE: 高手指导下 中断问题  发表于 2008-09-17 09:02:59 [4楼] 
呢称:lin627
加我为好友

//INT0 初始化

 int0pl=0;  //单边沿
 int0f=0X03; //有滤波器 F32采样
 inostg=0;   //禁止单次触发模式
 pol_int0ic=1; //上升沿触发 
 int0en=1;  //允许INT0输入
 int0ic=0x17;     //7级中断
 
 //INT1 初始化
 cntrsel=0;  //int10位INT1的输入脚
 r0edg=1;    //下降沿   RXDHW
 int1ic=0x06;     //6级中断
 
 //INT3 初始化
 tcc06=1;  //在INT3输入时序产生
 tcc07=0;   //选取INT3中断
 tcc10=1;   //有滤波F32
 tcc11=1;
 tcc03=1;  //下降沿
 tcc04=0;
 int3ic=1;     //1级中断
 
我的是R8CR5R0C002单片机 
帮忙看下 我的外部中断初始化正确不  谢谢


 
 RE: 高手指导下 中断问题  发表于 2008-09-17 11:59:39 [5楼] 
呢称:ammiezhang
加我为好友

我觉得你的INT初始化好像没有什么问题,倒是上面的端口设定很奇怪
 p1=0x97;
 pd1=0x7b;

如果把p1_7设为输入的话,就不用设定p1的初值了吧,如三楼所说,你的p1_7管脚上的初始电平是什么呢?
此外,中断处理程序是按照这种格式设定的吗?

#pragma INTERRUPT _int1
void _int1(void);


 
 RE: 高手指导下 中断问题  发表于 2008-09-17 14:52:54 [6楼] 
呢称:lin627
加我为好友


我的目的是想用P1_7--外中断1,红外接收
                           P1_6---红外输出  P1_3-----38K
做一个I/O口模拟红外。

我现在中断能进去了  是我有地方设置重复了  

我用的是定时器C来控制波特率1200 
要实现错半位读P1_7的电平输入  

我现在定时器设置有疑问  
定时器初值是 tm0=6666;

在外中断中触发定时器C cmp0比较接收
#pragma interrupt _int1(vect=25)
void _int1(void);                                     
void _int1(void)

   tm0=3333;   //请问这个值怎么设置?
   rxd_bit=ONEBIT;
   Int1_stop();
   TimerC_cmp0_start();
}

请高手指点。。。。。


 
 RE: 高手指导下 中断问题  发表于 2008-09-17 17:15:32 [7楼] 
呢称:lin627
加我为好友

还有我的比较中断好像进不去。。。。。

 tcc00=0;      //定时器C停止计数   频率=F/(TM0+1)
 tcc01=1;      //定时器C F8分频      1M/1200=833
 tcc02=0;
 tcc12=1;      //匹配自动置0 
 tcc13=1;      //比较器0输出
 tcc14=0;      //比较器0 比较器1匹配时,CMP输出不发生变化
 tcc15=0;   
 tcc16=0;
 tcc17=0;
 tcout0=0x00;  //CMP不输出
 tm0=833-1;
 tm1=833-1;

外中断1.。。。。。。。
#pragma interrupt _int1(vect=25)
void _int1(void);                                     
void _int1(void)
{
         /*清中断请求*/     //set count
   tm0=417; 
   rxd_bit=ONEBIT;
   Int1_stop();
   TimerC_cmp0_start();
}

比较0
void _compare0(void)
{
   ir_cmp0ic=0;  /*清中断请求*/
   tm0+=833;
  if(rxhw_allow_sign==1)     //如果红外允许接收标志=1 则接收 否则不接
  { ....这里应该没问题 我是从我的mega16上移植过来的....}
}


红外接收不到。。。。。。好像比较0进不去


请版主帮我看看  不胜感激
  


 
共7条 1/1 1   
   快速回复主题
  用户名 : 匿名不能发帖!请先 [ 登陆 ]
  标 题:
  内 容 :
 
EEPW元器件搜索  强力提供
关于我们 | 广告服务 | 企业会员服务 | 新手上路 | 联系我们 | 友情链接
《电子产品世界》杂志社 版权所有 北京东晓国际技术信息咨询有限公司
Copyright ©2002 ELECTRONIC ENGINEERING & PRODUCT WORLD. All rights reserved.
京ICP备060382号