DigInv会一直进入中断

[复制链接]
 楼主| gongche 发表于 2013-11-3 11:03 | 显示全部楼层 |阅读模式
只是在项目中添加DigInv用户模块,不对它进行任何输入、输出设置,在主程序中开启中断和开始运行该模块(全局中断已开启),结果DigInv会一直进入中断。
huwr 发表于 2013-11-3 11:06 | 显示全部楼层
啊?不是只有在DigInv输出为下降沿时才会产生中断吗?
 楼主| gongche 发表于 2013-11-3 11:07 | 显示全部楼层
是啊,在配置DigInv中断有什么特别需要注意的地方吗?
huanghuac 发表于 2013-11-3 11:09 | 显示全部楼层
输入的下降沿才会触发DigInv 模块的中断。
冰清玉洁 发表于 2013-11-3 11:10 | 显示全部楼层
输入不设置输入然后使能中断,这种状态我没用过。请问你为什么不设置输入?
 楼主| gongche 发表于 2013-11-3 11:11 | 显示全部楼层
不是不设置输入,是因为设置输入后,不是按照“输入为下降沿时触发中断”,老是出现错误中断,所以尝试不设置输入,看看会不会是自身控件问题,结果就是不输入也一直产生中断
happy_10 发表于 2013-11-3 11:13 | 显示全部楼层
你尝试一下把 DigInv 的输入引脚设置为Pull-up 状态,看会不会出错误中断。
 楼主| gongche 发表于 2013-11-3 11:15 | 显示全部楼层
还是会出现错误中断
wenfen 发表于 2013-11-3 11:17 | 显示全部楼层
在输入端接入高电平呢
 楼主| gongche 发表于 2013-11-3 11:19 | 显示全部楼层
结果一样,会不断进入中断程序。
zhuhuis 发表于 2013-11-3 11:20 | 显示全部楼层
可否上传你的代码
 楼主| gongche 发表于 2013-11-3 11:22 | 显示全部楼层
#include <m8c.h>        // part specific constants and macros
#include "PSoCAPI.h"    // PSoC API definitions for all User Modules

void main(void)
{
         // M8C_EnableGInt ; // Uncomment this line to enable Global Interrupts
         // Insert your main routine code here.

        M8C_EnableGInt;                     // Eable the globle interrupt

        PRT2DM0 |=0x80;
         PRT2DM1 &=~0x80;
         PRT2DM2 &=~0x80;
         PRT2DR &= ~0x80;

                DigInv_1_EnableInt();
         DigInv_1_Start();

        
        while(1);                           // Loop forever

}
#pragma interrupt_handler DigInv_1_ISR
void DigInv_1_ISR()
{
         DigInv_1_Stop();
         PRT2DR |= 0x80;

        Timer16_1_WritePeriod(365);  
         Timer16_1_EnableInt();
         Timer16_1_Start();
}

#pragma interrupt_handler Timer16_1_ISR
void Timer16_1_ISR()
{
     BYTE Mask = 0;
         Mask = PRT2DR & 0x80;
         if (Mask!=0)
         {
                 PRT2DR &= ~0x80;
         }
         else
         {
                                 Timer16_1_Stop();
                                 DigInv_1_Start();

        }
}

P2_7连接一个LED灯,Timer16为500ms计时
zhuhuis 发表于 2013-11-3 11:23 | 显示全部楼层
我用CY3210验证了一下你的程序,应该没问题。3210有一个连接VCC的button,我用button作为输入信号,输入端接下拉电阻接地,结果没有发现你所说的中断错误。
wenfen 发表于 2013-11-3 11:25 | 显示全部楼层
对,用示波器看一下你板子上的输入信号是否有干扰,程序是没问题的
tian111 发表于 2013-11-3 11:27 | 显示全部楼层
嗯,重新检查下,应该是输入端有干扰造成的。
 楼主| gongche 发表于 2013-11-3 11:29 | 显示全部楼层
嗯,关于PRS24中PRS24_1_INPUT_REG_LSB高四位表示什么,是指输入值还是指与输入端相连接的总线?
宋倩2010 发表于 2013-11-3 11:30 | 显示全部楼层
我从PRS24_1.h中找到了定义:
#pragma ioport  PRS24_1_INPUT_REG_LSB:  0x121              //Input register LSB
BYTE            PRS24_1_INPUT_REG_LSB;
#pragma ioport  PRS24_1_INPUT_REG_ISB:  0x125              //Input register ISB
BYTE            PRS24_1_INPUT_REG_ISB;
#pragma ioport  PRS24_1_INPUT_REG_MSB:  0x129              //Input register MSB
既然是输入寄存器,应该是只输入值吧。我也不是很确定。
 楼主| gongche 发表于 2013-11-3 11:32 | 显示全部楼层
这个定义我也看过,只是不知道这个输入值的相关操作方法
 楼主| gongche 发表于 2013-11-3 11:34 | 显示全部楼层
例如:该输入值与多项式寄存器、移位寄存器的相互关系是什么?
chenho 发表于 2013-11-3 11:35 | 显示全部楼层
这个你就得多练练手了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

768

主题

9410

帖子

2

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