打印
[AVR单片机]

关于AVR中断处理的问题

[复制链接]
1888|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhangsk|  楼主 | 2007-5-5 10:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
//编译器:WINAVR20050214

#include <avr/io.h>
#include <avr/iom64.h>
#include <avr/delay.h>
#include <avr/signal.h>
#include <avr/interrupt.h>
#include <math.h>
#include <ctype.h>
volatile unsigned char clk_num;

SIGNAL(SIG_INTERRUPT3) //INT0中断服务程序
{
    cli();
    clk_num++;
    *hp=clk_num;
    if(clk_num>250)
    {clk_num=0;}
    sei();

}
int main(void)
{
      MCUCR=0X00;
    EIMSK=0X00;
    EICRA=0Xff;//上升沿触发中断
    EIMSK=0X08;//只打开外部中断3
         clk_num=0;
         while(1)
         {
              应用处理程序
         }
}
我现在的问题是,
1:虽然我把外部中断3设置成上升沿触发模式了,可是调试中发现外部中断3还是低电平触发。
2:clk_num :这个变量在我的应用处理程序中没有做修改,只是读取该参数,可是我发现每次进了外部中断服务程序对这个变量做了处理后,在主程序中读取该变量,这个变量没有变化。还是0
3:我的外部中断程序可以进去,每次进去后对clk_num的操作是正常的,该变量是可以变化的,就是每次退出外部中断处理程序后,该变量还是0

相关帖子

沙发
zhiwei| | 2007-5-5 15:19 | 只看该作者

仿真器有问题

我上次仿真也是的,用m8,设置双斜坡PWM,上限用ICR1设置成250,但是仿真出来就是不对,单步执行,发现成了9为PWM,上限到512。当时检查程序也是没有问题的,硬件出来的波形也是正确的。应该算是avrsutdio的bug吧。

使用特权

评论回复
板凳
avrvi| | 2007-5-5 17:30 | 只看该作者

用的128吧

是不是有m103的问题

使用特权

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

本版积分规则

25

主题

51

帖子

0

粉丝