找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1563|回复: 0
打印 上一主题 下一主题
收起左侧

求救,AVR单片机捕捉测速不能清零

[复制链接]
跳转到指定楼层
楼主
ID:278017 发表于 2018-1-20 14:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1黑币
外部时钟8M,捕捉中断T1采用8分频,这样每个时钟周期为8us,一个65535记录的最长时间为524280us,定时器0和定时器2用于显示
现在高转速还有低转速都能正常显示,但当转速没有的时候,不能清零,我也是初学者,弄了好几天了,求教各位大神,帮帮忙。
//ICPC1捕捉中断的时候,T1的初始化
void tc1_init()
{
                 TCCR1B=0X43;//64分频,
                 TIMSK1=0X21;
                 SREG|=0X80;
               
}

#pragma interrupt_handler TC1_yichu:10  //T/C1溢出中断   
void TC1_yichu()
{
          ov_counter++;
         
}
#pragma interrupt_handler TC1_buzhuo:7  //T/C1捕捉中断    发动机转速  
void TC1_buzhuo()
{
          if(icp_n==1)  //测量一个信号的时间
          {        
                        falling_edge=ICR1L;
                        temp=ICR1H;
                        falling_edge|=temp<<8;
                        
                        TCNT1H=0;
                        TCNT1L=0;
                        buhuobiaozhiwei=1;
                        
               
                        TIMSK1=0X00;           //这个必须要,不是时间就是乱的               
          }
          else if(icp_n==0)
      {
                        rising_edge=ICR1L;
                        temp=ICR1H;
                        rising_edge|=temp<<8;   //上升沿的时间
          }
          icp_n++;
        
}

void T2_init()
{
                 TCCR2A=0X0C;  //外部时钟 ,64分频,CTC模式  8M/64=125khz
                 TCNT2=0X00;
                 //OCR2A=0X63;    //OCR2A=0X63(99),(99+1)/1000=0.1MS
                OCR2A=0XF9;    //2MS
                 TIMSK2|=0X02;
}

#pragma interrupt_handler t2:5     
void t2()
{                           
         T2_yichu=1;
         SEI();// 开中断,允许中断嵌套,T/C0中断可打断该中断服务        
        display();                                          
}

/////////////主函数////////////////////
void main()
{

                 DDRD &=~(1<<PD0);  //方向输?
                 PORTD|=BIT(0);  //方向输?
                 tc1_init();
                 T2_init();
                 IO_init();         
                 uart_init(9600);
                 SREG|=BIT(7);                        //全局中断开放

                 while(1)
                 {               
                          if(buhuobiaozhiwei)   //完成一次测量
                          {
                                       
                                        if(falling_edge >=rising_edge)
                                        {
                                             pulse_clocks = (ulong)falling_edge -(ulong)rising_edge;
                                             
                                        }
                                        else
                                        {
                                             pulse_clocks = (ulong)falling_edge -(ulong)rising_edge+(ulong)ov_counter*65535*8;

                                        }
                                       
                                        pulse_clocks=pulse_clocks*8;
                                        fadongjizhuansu=60000000/pulse_clocks;                                       
                                fadongjizhuansu_TXB=fadongjizhuansu;
                                       
        
                                        icp_n=0;        
                                        TIFR1=0X21;
                                        TIMSK1=0X21;        
                                        ov_counter=0;        
                                    buhuobiaozhiwei=0;
                                    if(T2_yichu)//显示
                                    {
                                         freq_to_disbuff();
                                             T2_yichu=0;
                                          
                                    }
                          }
                        
                        
                        
                        
                          caiji_data();
                          uart_TXB();
                                
                          delay_MS(100);
        
                 }
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表