OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4582|回复: 2

ATEMGA169捕捉测转速,低转速不能正确测试

[复制链接]

5

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2014-3-11
在线时间
14 小时
发表于 2018-1-19 17:31:05 | 显示全部楼层 |阅读模式
//T1初始化
void tc1_init()
{
                 TCCR1B=0X42;//8·ÖÆμ
                 TIMSK1=0X21;
                 SREG|=0X80;
               
}

#pragma interrupt_handler TC1_yichu:10  //T1溢出中断
void TC1_yichu()
{
          ov_counter++;
          
}

#pragma interrupt_handler TC1_buzhuo:7  //T1捕捉中断
void TC1_buzhuo()
{
       
          if(icp_n==1)   
          {        
                        falling_edge=ICR1L;
                        temp=ICR1H;
                        falling_edge|=temp<<8;
                        buhuobiaozhiwei=1;
                       
                        TIMSK1=0X00;                          
          }
          else if(icp_n==0)
      {
                        rising_edge=ICR1L;
                        temp=ICR1H;
                        rising_edge|=temp<<8;   
          }
          icp_n++;
}

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;

                                        fadongjizhuansu=60000000/pulse_clocks;
                                    buhuobiaozhiwei=0;
                                        ov_counter=0;
                                        icp_n=0;
                                        TIFR1=0X21;
                                        TIMSK1=0X21;                                       
                          }
                       
                         
       
                 }
}

现在测试效果,900多以下就不能正常了,大于这个就可以。因为转速低于900多,就会溢出,也就超过了65535,不知道怎么弄了,求助各位大神。
8M外部晶振。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2014-3-11
在线时间
14 小时
 楼主| 发表于 2018-1-19 17:32:31 | 显示全部楼层
对啦,这里还有其他的没有写出来,有显示函数还有串口函数,但不影响,现在1000以上,都能正常显示。
回复 支持 反对

使用道具 举报

3

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2017-6-29
在线时间
9 小时
发表于 2018-3-1 13:57:10 | 显示全部楼层
很可以很可以很可以
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-8 17:56

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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