yangmm11 发表于 2014-11-7 17:13

EXINT硬件中断与EXINT键及INT0脚的联系

在TMS320VC5509A的EXINT中断实验例程中,采用的是硬件中断其程序为/* This is an example for EMIF of C5509 */
/*----------------------------------------------------------------------------*/
#include <csl.h>
#include <csl_irq.h>
#include <csl_pll.h>
#include <csl_emif.h>
#include <csl_chip.h>
#include <stdio.h>CSLBool b;Uint16 eventId0;
int old_intm;
interrupt void int1(void);//---------Function prototypes---------
/* Reference start of interrupt vector table */
/* This symbol is defined in file, vectors_IP.s55 */
extern void VECSTART(void);/*锁相环的设置*/
PLL_Config myConfig = {
0, //IAI: the PLL locks using the same process that was underway
//before the idle mode was entered
1, //IOB: If the PLL indicates a break in the phase lock,
//it switches to its bypass mode and restarts the PLL phase-locking
//sequence
12, //PLL multiply value; multiply 12 times
1 //Divide by 2 PLL divide value; it can be either PLL divide value
//(when PLL is enabled), or Bypass-mode divide value
//(PLL in bypass mode, if PLL multiply value is set to 1)
};
/***************5509A中断设置,使能INT1中断***********************/
/*参考资料: TMS320C55x Chip Support Library API Reference Guide (Rev. J)
TMS320VC5509A Data Sheet */
void INTconfig()
{
/* Temporarily disable all maskable interrupts */
IRQ_setVecs((Uint32)(&VECSTART));/* Temporarily disable all maskable interrupts */
old_intm = IRQ_globalDisable();/* Get Event Id associated with External INT0(8019), for use with */
eventId0 = IRQ_EVT_INT0;/* Clear any pending INT0 interrupts */
IRQ_clear(eventId0);/* Place interrupt service routine address at */
/* associated vector location */
IRQ_plug(eventId0,&int1);/* Enable INT0(8019) interrupt */
IRQ_enable(eventId0);/* Enable all maskable interrupts */
IRQ_globalEnable();
}main()
{
/*初始化CSL库*/
CSL_init();

/*EMIF为全EMIF接口*/
CHIP_RSET(XBSR,0x0a01);

/*设置系统的运行速度为144MHz*/
PLL_config(&myConfig);//设置并使能5509A芯片的INT0中断(EXINT中断)
INTconfig();while(1);
}//External INT0(EXINT)中断处理函数
interrupt void int1()
{
printf("EXINT ouccers\n");
}/******************************************************************************\
* End of pll2.c
\******************************************************************************/
在开发板上,按下EXINT键,表明有一个硬件中断发生,但是程序中采用的是INT0中断,它与EXINT中断有何关系,电路图中INT0引脚与EXINT也没联系到一起啊。。。原理图如下,INT0为DSP的93引脚,EXINT按键在右上角。



yangmm11 发表于 2014-11-10 18:04

有没有人给解答一下啊

zhangmangui 发表于 2014-11-11 16:41

yangmm11 发表于 2014-11-10 18:04 static/image/common/back.gif
有没有人给解答一下啊

记得这些外部中断和内部其他中断合起来有一个
INT0〜*的排序
这个INT0可能就对于外部中断0

yangmm11 发表于 2014-11-13 08:50

zhangmangui 发表于 2014-11-11 16:41 static/image/common/back.gif
记得这些外部中断和内部其他中断合起来有一个
INT0〜*的排序
这个INT0可能就对于外部中断0


这个在哪里有介绍呢?自己没有找到。。。

yangmm11 发表于 2014-11-13 10:39

zhangmangui 发表于 2014-11-11 16:41 static/image/common/back.gif
记得这些外部中断和内部其他中断合起来有一个
INT0〜*的排序
这个INT0可能就对于外部中断0


你所说的排序应该指的是图中的这个排序吧

INT0对应是外部中断#0吧,但是我不明白的是,为什么电路图中的EXINT这个按键就是外部中断#0呢?

zhangmangui 发表于 2014-11-13 11:55

yangmm11 发表于 2014-11-13 10:39 static/image/common/back.gif
你所说的排序应该指的是图中的这个排序吧

INT0对应是外部中断#0吧,但是我不明白的是,为什么电路图中的 ...

你的原理图中就是接到外部中断的引脚上了
指的是外部中断的INT0。不是软件中断

yangmm11 发表于 2014-11-13 17:32

zhangmangui 发表于 2014-11-13 11:55 static/image/common/back.gif
你的原理图中就是接到外部中断的引脚上了
指的是外部中断的INT0。不是软件中断 ...

谁接到了外部中断引脚上了?外部中断INT0?

zhangmangui 发表于 2014-11-13 22:04

yangmm11 发表于 2014-11-13 17:32 static/image/common/back.gif
谁接到了外部中断引脚上了?外部中断INT0?

理解错了啊   DSP的93引脚INT0是接到了CPLD上
你没看CPLD里面的译码代码吗   
EXINT肯定通过译码作用到了INT0脚上

yangmm11 发表于 2014-11-18 17:36

zhangmangui 发表于 2014-11-13 22:04 static/image/common/back.gif
理解错了啊   DSP的93引脚INT0是接到了CPLD上
你没看CPLD里面的译码代码吗   
EXINT肯定通过译码作 ...

这个外部中断实验和CPLD没有关系吧,它 就是一个外部EXINT按键产生了一个硬件中断INT0,我现在明白了这个INT0指的是外部中断,和DSP引脚上的INT0引脚不是一个概念。
现在就是EXINT对应的是外部中断INT0,但是具体在电路图中或者是程序中,为什么INT0代表的外部中断就是EXINT中断呢,怎么能体现出来呢?

zhangmangui 发表于 2014-11-18 22:11

yangmm11 发表于 2014-11-18 17:36 static/image/common/back.gif
这个外部中断实验和CPLD没有关系吧,它 就是一个外部EXINT按键产生了一个硬件中断INT0,我现在明白了这个 ...

还是因为CPLD做了译码啊    你看看CPLD的代码

yangmm11 发表于 2014-11-19 09:09

zhangmangui 发表于 2014-11-18 22:11 static/image/common/back.gif
还是因为CPLD做了译码啊    你看看CPLD的代码

CPLD的代码?从哪看,程序中也没有啊。。。

zhangmangui 发表于 2014-11-19 09:47

yangmm11 发表于 2014-11-19 09:09 static/image/common/back.gif
CPLD的代码?从哪看,程序中也没有啊。。。

板子肯定提供了 如果没有说明他们不给提供
那就当作EXINT映射到了INT0上了

yangmm11 发表于 2014-11-19 14:12

zhangmangui 发表于 2014-11-19 09:47 static/image/common/back.gif
板子肯定提供了 如果没有说明他们不给提供
那就当作EXINT映射到了INT0上了 ...

找到了这个文件DEC5509.map.eqn,里面有下面这几句程序:
--INT0 is INT0
--operation mode is output

INT0 = OUTPUT(EXINT);
这个的意思就是EXINT映射到了INT0上了吧。。

zhangmangui 发表于 2014-11-19 18:26

yangmm11 发表于 2014-11-19 14:12 static/image/common/back.gif
找到了这个文件DEC5509.map.eqn,里面有下面这几句程序:
--INT0 is INT0
--operation mode is output


详细看看整体的映射关系吧 int0相当于一根线连过去了

yangmm11 发表于 2014-11-20 08:59

zhangmangui 发表于 2014-11-19 18:26 static/image/common/back.gif
详细看看整体的映射关系吧 int0相当于一根线连过去了

恩,我在找找,谢啦:)

shero_zhuzi 发表于 2016-9-10 08:12

补一张图,希望新手少走弯路

这是cpld将EXINT译为INT0的电路
页: [1]
查看完整版本: EXINT硬件中断与EXINT键及INT0脚的联系