打印
[DSP编程]

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

[复制链接]
2987|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
在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按键在右上角。
5509开发板原理图.pdf (61.26 KB)


相关帖子

沙发
yangmm11|  楼主 | 2014-11-10 18:04 | 只看该作者
有没有人给解答一下啊

使用特权

评论回复
板凳
zhangmangui| | 2014-11-11 16:41 | 只看该作者
yangmm11 发表于 2014-11-10 18:04
有没有人给解答一下啊

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

使用特权

评论回复
地板
yangmm11|  楼主 | 2014-11-13 08:50 | 只看该作者
zhangmangui 发表于 2014-11-11 16:41
记得这些外部中断和内部其他中断合起来有一个
INT0〜*的排序
这个INT0可能就对于外部中断0

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

使用特权

评论回复
5
yangmm11|  楼主 | 2014-11-13 10:39 | 只看该作者
zhangmangui 发表于 2014-11-11 16:41
记得这些外部中断和内部其他中断合起来有一个
INT0〜*的排序
这个INT0可能就对于外部中断0

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

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

使用特权

评论回复
6
zhangmangui| | 2014-11-13 11:55 | 只看该作者
yangmm11 发表于 2014-11-13 10:39
你所说的排序应该指的是图中的这个排序吧

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

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

使用特权

评论回复
7
yangmm11|  楼主 | 2014-11-13 17:32 | 只看该作者
zhangmangui 发表于 2014-11-13 11:55
你的原理图中就是接到外部中断的引脚上了
指的是外部中断的INT0。不是软件中断 ...

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

使用特权

评论回复
8
zhangmangui| | 2014-11-13 22:04 | 只看该作者
yangmm11 发表于 2014-11-13 17:32
谁接到了外部中断引脚上了?外部中断INT0?

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

使用特权

评论回复
9
yangmm11|  楼主 | 2014-11-18 17:36 | 只看该作者
zhangmangui 发表于 2014-11-13 22:04
理解错了啊     DSP的93引脚INT0是接到了CPLD上  
你没看CPLD里面的译码代码吗   
EXINT肯定通过译码作 ...

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

使用特权

评论回复
10
zhangmangui| | 2014-11-18 22:11 | 只看该作者
yangmm11 发表于 2014-11-18 17:36
这个外部中断实验和CPLD没有关系吧,它 就是一个外部EXINT按键产生了一个硬件中断INT0,我现在明白了这个 ...

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

使用特权

评论回复
11
yangmm11|  楼主 | 2014-11-19 09:09 | 只看该作者
zhangmangui 发表于 2014-11-18 22:11
还是因为CPLD做了译码啊    你看看CPLD的代码

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

使用特权

评论回复
12
zhangmangui| | 2014-11-19 09:47 | 只看该作者
yangmm11 发表于 2014-11-19 09:09
CPLD的代码?从哪看,程序中也没有啊。。。

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

使用特权

评论回复
13
yangmm11|  楼主 | 2014-11-19 14:12 | 只看该作者
zhangmangui 发表于 2014-11-19 09:47
板子肯定提供了 如果没有  说明他们不给提供
那就当作EXINT映射到了INT0上了 ...

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

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

使用特权

评论回复
14
zhangmangui| | 2014-11-19 18:26 | 只看该作者
yangmm11 发表于 2014-11-19 14:12
找到了这个文件DEC5509.map.eqn,里面有下面这几句程序:
--INT0 is INT0
--operation mode is output

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

使用特权

评论回复
15
yangmm11|  楼主 | 2014-11-20 08:59 | 只看该作者
zhangmangui 发表于 2014-11-19 18:26
详细看看整体的映射关系吧 int0相当于一根线连过去了

恩,我在找找,谢啦:)

使用特权

评论回复
16
shero_zhuzi| | 2016-9-10 08:12 | 只看该作者
补一张图,希望新手少走弯路

这是cpld将EXINT译为INT0的电路

AA捕获.PNG (11.82 KB )

AA捕获.PNG

使用特权

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

本版积分规则

10

主题

67

帖子

0

粉丝