打印

Atmega8外部终端问题

[复制链接]
1473|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
我用Atmega8与一个声波测距离模块相连接,通讯时序图如下:
程序如下:
void main(void)
{
    int i;
    int data;
    init_devices();  //器件初始化
    uart_init();     //串口初始化

    send(0x55);

    GICR  &= ~0x40;
    time.int0_flag = 0;
    time.time_count = 0;

    while(1)
    {
      WDR();
      
      
   ///*//这段是测试外部中断的程序
   TRIG_RESET;//一个10US以上的触发脉冲
   delay_us(20);
   TRIG_SET;
   //等待Echo引脚变高电平
   while(PIND&0X04 != 0x04)
      
   //打开定时器
   time.int0_flag = 0;
   //GIFR  &= ~0x40;
   GICR  |= 0x40;
   TCNT1 = 0;
   TCCR1B = 5;//打开定时器1,1024分频
   
   WDR();
   printf("start1\n");
   //sendstr("u\n");
   for(i=0;i<200;i++)//延时等待外部中断
   {
       WDR();
      delay_us(100);
   }
   printf("int0 %d\n",time.time_count);//打印计时器的计数值
   //调试时的延时
   for(i=0;i<10000;i++)
   {
       WDR();
       delay_us(200);
   }
   
    }
}


外部中断函数:
#pragma interrupt_handler int0_isr:2
void int0_isr(void)
{
//external interupt on INT0
time.time_count = TCNT1;
TCCR1B = 0;//关闭定时器,这里直接不给定时器1时钟,这种方法不知道是否可行
TCNT1 = 0;
time.int0_flag = 1;

GICR  &= ~0x40;//关闭外部终端
}

初始化程序如下:
void init_devices(void)
{
//stop errant interrupts until set up
CLI(); //disable all interrupts
//端口初始化
DDRD = 0x02;
//PORTD = 0xFB;
PORTD = 0xFF;
PORTB = 0xFF;
DDRB  = 0xFF;
PORTC = 0xFF;
DDRC  = 0x30;

    //串口初始化
    UBRRL=(F_CPU/BAUD_RATE/16 - 1)%256;   
    UBRRH=(F_CPU/BAUD_RATE/16 - 1)/256;   
    UCSRB =(1<<RXCIE)| (1<<RXEN) | (1<<TXEN);

    //定时器初始化
    TCNT1 = 0;
    //开定时器T1溢出中断  
    TIMSK |= (1 << TOIE1);  
    //开总中断  
    SEI();   
    //T1定时器普通模式、8分频,并开启定时器  256
    TCCR1B |= (1 << CS11);  

MCUCR = 0x02;
GICR  &= ~0x40;
GIFR  |= 0x40;
//GICR  = 0x40;
// GIFR  = 0x40;
TIMSK = 0x04; //timer interrupt sources
SEI(); //re-enable interrupts
}

现在出现的问题是打开外部中断后就立刻进入外部中断响应程序中,这是怎么回事啊,我试图打开定时器后延时一小段时间再打开外部终端的GICR  |= 0x40:还是会立刻今天外部中断函数程序,这是怎么回事啊,在单个调试外部中断的时候是可以的,配置为下降沿触发是可以的,不知道为什么这样就不行了,还有就是红字的地方有时可以有时候不行,郁闷!!!请各位大神给看下!小弟十分感谢!!!!!

相关帖子

沙发
w6850916|  楼主 | 2013-4-3 08:37 | 只看该作者
怎么没人回啊,自己顶一个!!!

使用特权

评论回复
板凳
dirtwillfly| | 2013-4-3 09:13 | 只看该作者
好长的程序,我帮你顶一个

使用特权

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

本版积分规则

13

主题

126

帖子

5

粉丝