首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Arduino测量频率

用Arduino测量频率
EN

Stack Overflow用户
提问于 2016-01-13 20:34:14
回答 1查看 1.1K关注 0票数 2

我正在进行一个使用Arduino测量输入方波频率的小项目,我使用定时器和硬件中断完成了这个项目,下面是我的代码:

代码语言:javascript
复制
#include <TimerOne.h>
long count1=0,freq1=0;

void setup(){
    attachInterrupt(5,count,RISING);
    Timer1.initialize(1000000); //increments count for 1 sec and prints out count
    Timer1.attachInterrupt( freq ); // attach the service routine here

    Serial.begin(9600);
}

void loop(){
    while(freq1)
        Serial.println(freq1);
}

void count()
{
    count1++; 
}

void freq(){
    freq1 =  count1;
    count1=0;
}

问题是,产值几乎是输入频率的两倍,我不知道它有什么问题。在Google搜索之后,我了解到了中断的情况。好像没起作用。

EN

回答 1

Stack Overflow用户

发布于 2017-01-20 17:27:48

有一个工作示例这里。它使用本机ISR函数(更快)而不是arduino中断处理程序。使用Timer1来获得最佳的分辨率和精度。

代码很大,但你感兴趣的部分是:

void () ISR(TIMER1_OVF_vect) -> for Timer1溢出计数器ISR(INT0_vect) //外部中断引脚2 D2 voidPulseCaptureScheduler_callback() //启动捕获并标记超时隙PrintInfoScheduler_callback() //处理结果

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34776524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档