arduino RTOS

https://github.com/feilipu/Arduino_FreeRTOS_Library


这是Richard Berry的freertos 的分支,优化了Arduino AVR器件。

它已经建立了提供访问FreeRTOS的能力,与Arduino环境完全兼容。 使用它更方便,让你接触最少的硬件。

进一步的阅读

信息的标准源的FreeRTOS的网站 在这个网站。入门指南网页是非常有用的。 值得从具有用户,manicbug有一些有趣的例子。 我avrfreertos库有很多这样的例子, 测距眨眼通过对一个合成器。

综合

FreeRTOS有许多配置选项,可以指定在freertosconfig .h文件。 公共所有的Arduino硬件保存选项,一些明智的默认值已。

AVR单片机的看门狗定时器用于产生15ms时间片,但任务完成之前分配的时间将进行回调度。 这不影响任何正常的定时器功能。

时间片可以选择从15ms到500ms。慢的时间切片可以让Arduino单片机睡更长的时间,没有一个空闲的复杂机制。

看门狗时间选项:

  • wdto_15ms
  • wdto_30ms
  • wdto_60ms
  • wdto_120ms
  • wdto_250ms
  • wdto_500ms

注意:定时器分辨率受整除和选择的时间切片的影响。例如要测量100ms,而使用60ms时间片,不会正常工作。

为loop()函数堆栈已被定为192字节。这可以通过调整configidle_stack_size参数配置。 应不小于MINIMAL_STACK_SIZE。如果你有堆栈溢出的问题,就增加它。 用户应该先使用pvPortMalloc()分配较大的结构,数组,或缓冲区,然后在本地堆栈定义他们。

堆的内存是由正常的malloc()功能分配,用pvportmalloc()。 这个选项已被选中,是因为它的自动调节能力各使用设备。 其他堆分配方案是支持FreeRTOS的,他们可以用。

错误

  • 堆栈溢出:如果任何堆栈(为loop()或)任何任务的溢出,将有一个缓慢的LED闪烁,4秒的周期。
  • 堆溢出:如果任何任务试图分配内存,分配失败,会有一个快速的LED闪烁,100毫秒周期。

勘误表

随着软件串口库测试表明在低波特率一些不兼容(9600),由于时间的延长,这个库禁用全局中断。

兼容性

    • ATmega328 @ 16MHz : Arduino UNO, Arduino Duemilanove, Arduino Diecimila, etc.
    • ATmega328 @ 16MHz : Adafruit Pro Trinket 5V, Adafruit Metro 328, Adafruit Metro Mini
    • ATmega328 @ 16MHz : Seeed Studio Stalker
    • ATmega328 @ 16MHz : Freetronics Eleven
    • ATmega328 @ 12MHz : Adafruit Pro Trinket 3V
    • ATmega32u4 @ 16MHz : Arduino Leonardo, Arduino Micro, Arduino Yun, Teensy 2.0
    • ATmega32u4 @ 8MHz : Adafruit Flora, Bluefruit Micro
    • ATmega1284p @ 24.576MHz : Seeed Studio Goldilocks, Seeed Studio Goldilocks Analogue
    • ATmega2560 @ 16MHz : Arduino Mega, Arduino ADK
    • ATmega2560 @ 16MHz : Seeed Studio ADK
    • ATmegaXXXX @ XXMHz : Anything with an ATmega MCU, really.

文件&配置

  • arduino_freertos.h:必须先include。它引用的其他配置文件,并在必要时设置默认。
  • freertosconfig.h:包含多种API和环境配置。
  • freertosvariant.h:包含此端口FreeRTOS AVR的具体配置。
  • heap_3.c:包含基于malloc()堆分配方案。其他方案可供选择,而是取决于用户配置为特定的单片机的选择。
  • 使用创建静态任务,详情见pull request# 19。

你可能感兴趣的:(rtos,arduino)