|
本帖最后由 TilaMaker 于 2015-9-6 16:22 编辑
Timer1
这个库是用来配置ATmega168/328中的16位硬件计时器。在芯片上有三个硬件计时器可用,通过不同方式的配置可以实现不同的功能。这个库的开发初衷是用来寻找一种方式快速并且简单地设置PWM周期或者频率,但是现在已经拥有了计时器溢出中断和一些其他的功能。它可以简单地与其他的计时器共同工作。
这个计时器的精度取决于你的芯片速度和频率。计时器1的时钟速度通过分频器或者因子来进行设定。这个分频率可以设定的值:1,8,64,256或者1024。
对于16MHz:
分频 | 每一次计数的时间 | 最大周期 | 1 | 0.0625uS | 8.192mS | 8 | 0.5uS | 65.536mS | 64 | 4uS | 524.288mS | 256 | 16uS | 2097.152mS | 1024 | 64uS | 8388.608mS |
通常情况下:
最大周期=(分频)*(1/频率)*(217)
每次计数的时间=(分频)*(1/频率)
安装方法:
直接将TimerOne.h库文件解压缩到Arduino/libraries/
库下载地址:
自己独立开发和更新的TimerOne库也是可以使用的,可以用来支持更多硬件和更加高效的代码。
Timer3
特别注意:Timer1可以用在Mega上,但是无法支持OCR1A,OCR1B&OCR1C这三路输出引脚,它只支持A&B。OCR1A连接在Mega的11引脚,OCR1B连接在Mega的12引脚上。为了能够使用这三个引脚中的一个,我们需要通过一个指定引脚匹配。1引脚将匹配到11引脚上,2引脚将匹配到12引脚上(这些都是对于Mega)。目前Timer3仅仅用来在Mega上进行测试。
安装方法:
直接将TimerThree.h库文件解压缩到Arduino/libraies/
库下载地址:
代码详解:
结构函数: - Timer1.initialize(microseconds);
复制代码
必须先调用这个函数,因为我们需要先指定计时器的频率(微妙),默认情况下是设定为1秒。
特别注意:在Arduino官网上写得是Note that this breaks analogWrite() for digital pins 9 and 10 on Arduino. 哪位大神能翻译一下(请给我们发邮件[email protected]或者到我们的论坛留言www.tilamaker.com)。
- Timer1.setPeriod(microseconds);
复制代码
在库被初始化后设定一个新的周期。这个库的最小周期(最高频率)支持1microsecond(1Mhz),最大周期为8388480微妙(8.3秒)。
特别注意:这个周期的设定将会改变中断和两个PWM输出的平率与duty cycles simultaneously(应该怎么翻译?)。
运行控制函数:
打开计时器(中断),从一个新的周期开始。
关闭计时器(中断)。
重启计时器(中断),从一个新的周期开始。
恢复运行被停止的计时器(中断),不会开始一个新的周期。
PWM信号输出函数:
- Timer1.pwm(pin,duty,period);
复制代码
在指定的pin口产生一个PWM波形。对于Timer1的输出pin口分别为PROTB pins 1和2,我们只能用这两个口,如果我们用其他的口将会被忽视。在Arduino上,他们分别是数字输出引脚9和10,所以用这两个参数也是可以正常运行的。对于Timer3的输出引脚是PORTE和对应Arduino Mega的2,3&5。占空比是指定为一个相当于10位的值(1024),也就是0到1023之间。
特别注意:
period是一个可选择的参数,如果我们输入了这个参数,那么函数将会以我们给出的参数(微妙)作为周期。
- Timer1.setPwmDuty(pin,duty);
复制代码
设定一个新的PWM,但是不会重新配置这个引脚。这个函数相对于pwm()要快一些,但是必须在pwm()被调用后才能使用。
停止使用引脚的PWM功能。之后这个引脚将会被释放,可以通过digitalWrite()进行控制。
中断函数:
- Timer1.attachInterrupt(function);
复制代码
打开中断,每当计时器的周期停止时调用括号中的中断函数。
特别注意:
当你在一个高频率中使用一个复杂的中断函数时,CPU有可能不在进入主循环,此时你的程序将会“死机”,在设定中断周期时,要进行优化处理。
- Timer1.detachInterrrupt();
复制代码
关闭中断函数。
我们自己做了一个wiki,希望对大家有帮助http://wiki.tilamaker.com/ |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|