AVR 微量级和毫级
AVR Micros and Millis
我正在做一个项目,我试图阻止使用任何 Arduino 库,因为它们中的大部分都带有额外的 "Junk" 并且没有核心 AVR 库那么快。
我的问题是是否有一个 AVR 库包含 Arduino 的 millis() 和 micros() 函数的等价物,或者我是否需要编写自己的库?
我意识到我可以使用计时器和 ISR 来增加一个值以跟踪滴答声,但如果没有必要,为什么要重新发明轮子。
您可以使用 avr gcc 安装附带的 util/delays.h,它将为您提供与 millis 和 micros 相同的功能
唯一要记住的是将参数 F_CPU 设置为正确的 CPU 频率。
My question is if there is a AVR library that includes the equivalent of Arduino's millis() and micros() functions or if I need to write my own library?
由于从启动开始计算时间需要在定时器 ISR 中配置和使用带有自定义代码的定时器(如您所指出的),因此您在 AVR 库中找不到这样的函数。
这些库的设计目的不是为了占用像定时器这样的通用资源来处理特定的事情。这是一个很好的例子,其中 Arduino 库可以提供一个简单的开始,但一旦您需要更多地控制库内部使用的资源(比如使用 timer0 进行自定义),就会崩溃。
看看我的 alibvr 库。
系统时钟部分差不多完成了。
它使用 C++ 功能(主要是模板)在编译期间计算值。所以你需要使用avr-g++。
有关详细信息,请参阅 clock Readme。
即使您不打算使用该库,clock.h 文件也会帮助您编写自己的系统时钟。
我正在做一个项目,我试图阻止使用任何 Arduino 库,因为它们中的大部分都带有额外的 "Junk" 并且没有核心 AVR 库那么快。
我的问题是是否有一个 AVR 库包含 Arduino 的 millis() 和 micros() 函数的等价物,或者我是否需要编写自己的库?
我意识到我可以使用计时器和 ISR 来增加一个值以跟踪滴答声,但如果没有必要,为什么要重新发明轮子。
您可以使用 avr gcc 安装附带的 util/delays.h,它将为您提供与 millis 和 micros 相同的功能 唯一要记住的是将参数 F_CPU 设置为正确的 CPU 频率。
My question is if there is a AVR library that includes the equivalent of Arduino's millis() and micros() functions or if I need to write my own library?
由于从启动开始计算时间需要在定时器 ISR 中配置和使用带有自定义代码的定时器(如您所指出的),因此您在 AVR 库中找不到这样的函数。
这些库的设计目的不是为了占用像定时器这样的通用资源来处理特定的事情。这是一个很好的例子,其中 Arduino 库可以提供一个简单的开始,但一旦您需要更多地控制库内部使用的资源(比如使用 timer0 进行自定义),就会崩溃。
看看我的 alibvr 库。
系统时钟部分差不多完成了。
它使用 C++ 功能(主要是模板)在编译期间计算值。所以你需要使用avr-g++。
有关详细信息,请参阅 clock Readme。
即使您不打算使用该库,clock.h 文件也会帮助您编写自己的系统时钟。