打印

dspic33fj128gp708怎么不能进入中断

[复制链接]
3295|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
没有,我都是下载到开发板里面,通过示波器监测的

使用特权

评论回复
5
gghhz| | 2010-7-25 14:43 | 只看该作者
同病相连啊,我的也是这个问题,现在还没解决

使用特权

评论回复
6
gghhz| | 2010-7-25 14:46 | 只看该作者
你用的开发板是谁家的啊,还有下载器是什么下载器啊

使用特权

评论回复
7
你我的PIC|  楼主 | 2010-7-25 15:09 | 只看该作者
6# gghhz
我用的芯片是dspicfj128gp708
我的qq号是247293017
麻烦你加我一下

使用特权

评论回复
8
XIEYUANBIN| | 2010-7-25 16:15 | 只看该作者
你用什么下载么?奇怪了。
一般来说,设置相应的中断允许位IE即可,中断优先级默认最低,不设也能进入。

使用特权

评论回复
9
XIEYUANBIN| | 2010-7-25 16:15 | 只看该作者
你可在中断内开关某个LED来判断你有没有进入中断。

使用特权

评论回复
10
headwolf_83| | 2010-7-25 19:00 | 只看该作者
程序在什么都没有的时候,应该有一些基本的步骤要实验下。
1,先看看按键到底有没有连上,有没有上拉电阻。
2,你可以先看看RA3到底有没有读到0和1,不要由于某些原因按了半天,都是0或者都是1,那肯定不会中断了。
3,还是建议你搞个调试器,设置一个断点,一目了然。

使用特权

评论回复
11
headwolf_83| | 2010-7-25 19:11 | 只看该作者
感觉很多新手缺乏解决问题的一些基本途径。其实象单片机类的,一般先检查基本的外围连接。尤其是如果用的是外购的DEMO板,板上有跳线的,一定仔细看说明书,实在不行拿个万用表看看连通与否总可以的。确认基本的通断后,可以确认最基本的功能能否实现,比如中断,可以先测引脚能否读到0和1,具体可以结合LED,不停读引脚显示到LED,也可以利用调试器,到IDE的窗口去查。如果是串口,则可以先拼命发个55,AA,用示波器看看波形,看下波特率是否对。都排除完了,进入软件检查,软件也查过没问题了,看看硬件有没有什么比较隐藏的BUG。有些方法虽然看起来很笨,可当出问题的时候,就是这样慢慢定位。

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

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

10

帖子

1

粉丝