极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 77981|回复: 13

ARDUINO 怎么使用定时器中断

[复制链接]
发表于 2012-12-30 18:01:03 | 显示全部楼层 |阅读模式
5
ARDUINO 怎么使用定时器中断  想用arduino做个计数器 可惜arduino里面没有定时器函数 要用avr的  能力有限 确实不会   还望大神指点迷津  

回复

使用道具 举报

发表于 2012-12-30 21:04:01 | 显示全部楼层
你要做一个怎样的计数器?  其实用arduino后很多完全不用考虑定时器 寄存器的  
回复

使用道具 举报

发表于 2012-12-30 23:53:29 | 显示全部楼层
回复

使用道具 举报

发表于 2012-12-31 12:41:48 | 显示全部楼层
外部中断+555Timer?最近刚学的555计时器
回复

使用道具 举报

 楼主| 发表于 2012-12-31 19:55:38 | 显示全部楼层
其实就是计外部脉冲个数  比如计数1s时间 就可以得到输入脉冲的频率 但是这就必须用到内部定时器中断 可是arduino内部定时器中断没有函数 所以就无从下手
回复

使用道具 举报

 楼主| 发表于 2012-12-31 23:10:21 | 显示全部楼层
哪个大神指点下迷津啊
回复

使用道具 举报

发表于 2013-9-20 22:44:03 | 显示全部楼层
还是不明白你说的啥意思。。。不过定时器中断是有的,从网上下一个库叫TimerOne,先在void setup()里写初始化函数Timer1.initialize(1000000); 然后在loop里写Timer1.attachInterrupt(function);
这样就会每隔一秒进入一次中断,中断函数是function
回复

使用道具 举报

发表于 2013-10-3 22:11:07 | 显示全部楼层
还是不太了解需求。
可能可采用如下:
1。http://www.geek-workshop.com/forum.php?mod=viewthread&tid=595 进行脉冲计数
2。 m2timer   库 设置 m2time ( 1秒 ),每一秒读一次计数器,然后将计数器清 0 。
回复

使用道具 举报

发表于 2013-10-11 00:14:07 | 显示全部楼层
其实用avr的也不复杂。。。。我现在就会用c写avr。。。没试过arduino
回复

使用道具 举报

发表于 2013-10-11 09:25:26 | 显示全部楼层
回复

使用道具 举报

发表于 2014-6-21 09:54:41 | 显示全部楼层
阡陌剑影 发表于 2013-10-11 09:25
http://www.geek-workshop.com/forum.php?mod=viewthread&tid=610&page=1#pid3486

这有个定时器库

thank you!
回复

使用道具 举报

发表于 2014-8-28 23:49:40 | 显示全部楼层
本帖最后由 clumsybird 于 2014-8-28 23:50 编辑

// matrixclock0828.ino
int pbIn = 0;                  // 定义中断引脚为0,也就是D2引脚
int ledOut = 13;                // 定义输出指示灯引脚
volatile int state = LOW;      // 定义默认输入状态

void setup()
{               
  // 置ledOut引脚为输出状态
  pinMode(ledOut, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  // 监视中断输入引脚的变化
  attachInterrupt(pbIn, stateChange, LOW);
  Serial.begin(9600);
}
byte counter=0;
void loop()                     
{

  switch (counter) {
          case 1:
          digitalWrite(8, HIGH);
          break;
          case 2:
          digitalWrite(9, HIGH);
          break;
          case 3:
          digitalWrite(13, HIGH);
          break;
          default:
          counter=0;
          digitalWrite(8, LOW);
          digitalWrite(9, LOW);
          digitalWrite(13, LOW);
  }
    /*digitalWrite(ledOut, HIGH);
    delay(counter*1000);
    digitalWrite(ledOut, LOW);
    delay(counter*1000); */
}

void stateChange()
{
        pinMode(2, INPUT);
        if(digitalRead(2)==LOW){
                counter++;
                while(digitalRead(2)==LOW);
        }
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2015-5-13 22:14:19 | 显示全部楼层
sherlockholme 发表于 2013-9-20 22:44
**** 作者被禁止或删除 内容自动屏蔽 ****

請問中斷函數該怎麼打 ..?
回复

使用道具 举报

发表于 2015-11-4 14:53:13 | 显示全部楼层
我要5铜板。。。。。。。。
回复

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-20 02:46 , Processed in 0.043221 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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