AVR Micros和Millis

时间:2016-11-06 16:37:01

标签: arduino avr

我正在研究一个项目,我正试图阻止使用任何Arduino库,因为它们分配了额外的" Junk"并没有核心AVR库那么快。

我的问题是,是否有一个AVR库包含相当于Arduino的millis()和micros()函数,或者我是否需要编写自己的库?

我意识到我可以使用计时器和ISR来增加一个值以跟踪刻度,但是如果没有必要,还可以重新发明轮子。

3 个答案:

答案 0 :(得分:2)

  

我的问题是,是否有一个AVR库包含相当于Arduino的millis()和micros()函数,或者我是否需要编写自己的库?

由于计算启动时间需要在定时器ISR中配置和使用带有自定义代码的定时器(如你所指出的),因此在AVR库中找不到这样的功能。
这些库的设计目的不是将资源占用为特定事物的定时器。这是一个很好的例子,A​​rduino库可以提供一个简单的启动,但是一旦你需要对libs内部使用的资源进行更多控制就会崩溃(比如使用timer0进行自定义)。

答案 1 :(得分:1)

看看我的alibvr库。

系统时钟部分或多或少完成。

它使用C ++功能(主要是模板)在编译期间计算值。所以你需要使用avr-g ++。

有关详细信息,请参阅clock Readme

即使您不打算使用该库,clock.h文件也可以帮助您编写自己的系统时钟。

答案 2 :(得分:-2)

您可以使用avr gcc安装附带的util / delays.h,它将为您提供与millis和micros相同的功能 唯一要记住的是将参数F_CPU设置为正确的CPU频率。