硬件中断定时库 MsTimer2 的使用

硬件中断定时库 MsTimer2 的使用

很多时候需要精准定时的执行任务,

可以使用硬件中断定时库 MsTimer2

http://playground.arduino.cc/Main/MsTimer2
(注意此库精准度只有以 milli second 为单位)

MsTimer2 库简单好用, 只有三个 function:
(1)设定时间间与要执行的 function
MsTimer2::set( ms, your_function);
(2)启动中断
MsTimer2::start();
(3)必要时可停止中断
MsTimer2::stop();

先來看一个例子: 
#include  <mstimer2.h>
  
const int INTERVAL = 500;   // 0.5 秒 = 500ms
void onTimer( ) {
   static int val = 0;
   val = 1- val;  // toggle 0, 1
   digitalWrite(13, val);  // pin 13 LED
}
void setup( ) {
  pinMode(13, OUTPUT);
  MsTimer2::set(INTERVAL, onTimer); // INTERVAL ms 
  MsTimer2::start( );
}
void loop( ) {
  delay(6000); 
  MsTimer2::stop( );
  delay(3000);
  MsTimer2::start( );
}

这个例子让 pin13 的 LED 灯闪烁大约6秒, 然后停止大约3秒,                   
之后又闪烁大约6秒, 然后停大约3秒, ... 
 
用 MsTimer2 只能设定一件要定时做的事 !
查看 MsTimer2 库的 source code 会发现,
重复使用 MsTimer2::set( ) 只有最后一次有效,
每次使用 MsTimer2::set( ) 会覆盖掉前一次的设定 !!

注意事项:
如果使用了 MsTimer2 库, 
则 pin11 和 pin3 就不能再用做 PWM 输出了! 因为该 pin3 和 pin11 的 PWM 是靠 timer2 帮忙的! (tone( ) 也是**)
注意 Servo.h 库于 TimerOne 都是使用内部订时器 timer1 会影响 pin9, pin10 的 PWM
若用两个 Tone 变量则 timer1 也会被用掉, 用三个 Tone 则连控制 millis( )的 timer0 也会被用掉 !!! 
別忘了, timer0 负责控制 pin5 和 pin6 的 PWM 輸出 !!! 
只要不去改变 timer 的 Prescaler就不會影响其控制的 PWM pin, 但MsTimer2 库于 tone( )都会改变 Prescaler !!

用 MsTimer2 库是在中断时做事, 越快做完越好, 最好只是读取或设置一些 volatile 变量,然后在loop()内根据这些变量做相应处理,
还有, 这时中断在被禁止状态(interrupt is disable), 所以, 不要做会用到中断的事, 例如要避免做类似 Serial.print 的事 !
   

- 本文由用户 发布,文中观点仅代表作者本人,不代表本站立场。
- 如需转载,请联系作者;如有侵权,请联系本站处理。

2022-06   阅读(1889)   评论(0)
 标签: maker Arduino 定时器

涨知识
寄存器

寄存器的功能是存储二进制代码,它是由具有存储功能的触发器组合起来构成的。一个触发器可以存储1位二进制代码,故存放n位二进制代码的寄存器,需用n个触发器来构成。

评论:
相关文章

ESP32 使用DAC模拟输出完成两路呼吸灯

ESP32的DAC函数可以实现真正的模拟输出。


在 ESP32 上使用 LEDC (PWM)

ESP32 没有Arduino输出 PWM 的 analogWrite(pin, value) 方法,取而代之的 ESP32 有一个 LEDC 来实现PWM功能。


Arduino UNO R4 WiFi 官方介绍文档

本文档作为UNO R4 WiFi的技术概览,您将找到一系列资源和指南链接,帮助您开始下一个项目。


OneButton: 用于使用单个按钮进行多用途输入的Arduino库

Arduino OneButton库是一个用于简化按钮操作的库,它可以轻松地处理按钮的单击、双击和长按等操作。适用于Arduino开发板以及ESP32等其他基于Arduino的开发板。

搜索
小鹏STEM教研服务

专属教研服务系统,助您构建STEM课程体系,打造一站式教学环境。