dspic33fj128gp708怎么不能进入中断

[复制链接]
4739|10
 楼主| 你我的PIC 发表于 2010-7-25 10:04 | 显示全部楼层 |阅读模式
外部中断是RA3/INT4,我打算通过按键来产生中断,并在每次中断中实现D端口的低三位实现自加,不过通过示波器监测,端口输出都是高电平,没有任何变化,希望指点一下!!
急!!!!!!!
#include <p33fxxxx.h>
   char INTType  ;
int main(void)
{   
    _PLLPRE = 0 ;   //N1 = 2
    _PLLDIV = 38 ;  //M = 38+2 = 40
    _PLLPOST = 0 ;  //N2 = 2
                    //FOSC = (8/2) * 40 / 2 = 80M
    while(OSCCONbits.LOCK == 0) ;   //等待PLL稳定   
    _DISI = 1 ;     //使能DISI指令,部分内建函数需要
    //设置portD为输出端口
    TRISD=0xf8;
    LATD=0;
    //设置INT4/RA3
    _TRISA3 = 1 ;              //IO置输入
    _INT4EP = 0 ;               //INT4为上升沿中断,注意,级性定义与PIC32是相反的
    _INT4IF = 0 ;               //
    _INT4IP = 7 ;               //中断优先级别为7
    _INT4IE = 1 ;               //中断使能
    INTType = 1 ;               //初使化类型必须与INT4EP相反
    void __attribute__((__interrupt__,no_auto_psv)) _INT4Interrupt(void)
{
    _INT4IF = 0 ;
    if(_INT4EP == 0)                            //如本次为上升沿中断
    {
      LATD++;
    }              
}
}
 楼主| 你我的PIC 发表于 2010-7-25 10:05 | 显示全部楼层
这是我仿别人的程序写的,肯定有很多错,不过看不出来哈
先自己顶下
XIEYUANBIN 发表于 2010-7-25 10:16 | 显示全部楼层
你没有ICD2或其他在线仿真器吗?仿真一下看看能不能进入中断
 楼主| 你我的PIC 发表于 2010-7-25 10:22 | 显示全部楼层
3# XIEYUANBIN
没有,我都是下载到开发板里面,通过示波器监测的
gghhz 发表于 2010-7-25 14:43 | 显示全部楼层
同病相连啊,我的也是这个问题,现在还没解决
gghhz 发表于 2010-7-25 14:46 | 显示全部楼层
你用的开发板是谁家的啊,还有下载器是什么下载器啊
 楼主| 你我的PIC 发表于 2010-7-25 15:09 | 显示全部楼层
6# gghhz
我用的芯片是dspicfj128gp708
我的qq号是247293017
麻烦你加我一下
XIEYUANBIN 发表于 2010-7-25 16:15 | 显示全部楼层
你用什么下载么?奇怪了。
一般来说,设置相应的中断允许位IE即可,中断优先级默认最低,不设也能进入。
XIEYUANBIN 发表于 2010-7-25 16:15 | 显示全部楼层
你可在中断内开关某个LED来判断你有没有进入中断。
headwolf_83 发表于 2010-7-25 19:00 | 显示全部楼层
程序在什么都没有的时候,应该有一些基本的步骤要实验下。
1,先看看按键到底有没有连上,有没有上拉电阻。
2,你可以先看看RA3到底有没有读到0和1,不要由于某些原因按了半天,都是0或者都是1,那肯定不会中断了。
3,还是建议你搞个调试器,设置一个断点,一目了然。
headwolf_83 发表于 2010-7-25 19:11 | 显示全部楼层
感觉很多新手缺乏解决问题的一些基本途径。其实象单片机类的,一般先检查基本的外围连接。尤其是如果用的是外购的DEMO板,板上有跳线的,一定仔细看说明书,实在不行拿个万用表看看连通与否总可以的。确认基本的通断后,可以确认最基本的功能能否实现,比如中断,可以先测引脚能否读到0和1,具体可以结合LED,不停读引脚显示到LED,也可以利用调试器,到IDE的窗口去查。如果是串口,则可以先拼命发个55,AA,用示波器看看波形,看下波特率是否对。都排除完了,进入软件检查,软件也查过没问题了,看看硬件有没有什么比较隐藏的BUG。有些方法虽然看起来很笨,可当出问题的时候,就是这样慢慢定位。

单片机不象上位机,很多时候尽管是用C/C++语言,但还是自己操作寄存器,不存在因为库函数使用问题造成的问题。而且由于单片机五花八门,也不能指望向上位那样,什么简单的问题都能找到答案,更多时候自己摸索和调试更重要。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

10

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部