打印
[AVR单片机]

关于mega128外部中断的问题。

[复制链接]
2861|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
aifei7320|  楼主 | 2012-12-26 21:03 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
      我在使用mega128写一个ps/2的键盘程序,但是发现点问题,当我把外部中断一的初始化程序写在主函数中后,发现程序不能进入主循环当中的while循环了!不晓得是什么原因。如果把初始化函数屏蔽掉,程序就能够继续往下执行。

这是我写的初始化程序

这个是主程序!能够从现象判断出来确实不能进while,而且系统重新上电,也不能正常工作!不知道有没有人也碰到过,或者我哪错了请指导一下!

相关帖子

沙发
yklstudent| | 2012-12-26 22:09 | 只看该作者
估计单片机一直在复位

使用特权

评论回复
板凳
aifei7320|  楼主 | 2012-12-26 22:13 | 只看该作者
yklstudent 发表于 2012-12-26 22:09
估计单片机一直在复位

不会啊!我在外部中断一里面对键盘进行操作还是有反应的!不过就是不能进入while

使用特权

评论回复
地板
huangxz| | 2012-12-26 23:26 | 只看该作者
先设置触发方式,再使能外部中断试一下。

使用特权

评论回复
5
aifei7320|  楼主 | 2012-12-27 09:36 | 只看该作者
huangxz 发表于 2012-12-26 23:26
先设置触发方式,再使能外部中断试一下。

试了,没有效果!:'(

使用特权

评论回复
6
huangxz| | 2012-12-27 09:42 | 只看该作者
呵呵,看样子是中断没退出来,这可能有两种原因,一种是确实有那么多的中断,你根本没时间退回到主循环(用示波器看看中断脚信号有没有问题)。另外一种就是你makefile里面是不是芯片类型选错了,而这个中断是其他中断向量的地址。

使用特权

评论回复
7
aifei7320|  楼主 | 2012-12-27 12:01 | 只看该作者
huangxz 发表于 2012-12-27 09:42
呵呵,看样子是中断没退出来,这可能有两种原因,一种是确实有那么多的中断,你根本没时间退回到主循环(用 ...

当前用到了两个中断,一个是定时计数器0的溢出中断,再就是外部中断1.也拿示波器看了看那中断引脚!在没有外部信号的时候都是高电平,而且中断触发方式设置的是下降沿触发。我用的是avr studio头文件里面的把所有的型号的都包含进来了!没有具体指定是那个型号的。

使用特权

评论回复
8
huangxz| | 2012-12-27 13:37 | 只看该作者
看楼主使用的好像是gcc编译器啊,实在不行就仿真一下了,不过芯片类型是一定要设置的,在avrstudio里面可以设置的。

使用特权

评论回复
9
wushaorong88| | 2012-12-27 19:28 | 只看该作者
同意6#

使用特权

评论回复
10
282045368| | 2015-1-7 11:45 | 只看该作者
最后问题出在哪的?
是不是进入别的中断了??别的中断有被你使能了?

使用特权

评论回复
11
liushabanliuyun| | 2017-6-8 15:01 | 只看该作者
我也在弄这个问题

使用特权

评论回复
12
Lbsonggz| | 2017-6-8 17:47 | 只看该作者
很多AVR 系列的芯片外部中断有个毛病,与寄存器顺序有关系,并且,一设置结束先产生一个蛋疼的中断。如果系统电源不稳定,再加上不先禁止全局中断,就容易死在外部中断里头了,使用很多AVR芯片之后的教训。尤其是数字小的,后面还带A的芯片,更要当心了。

使用特权

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

本版积分规则

8

主题

48

帖子

1

粉丝