#控制 #数字 #列车 #命令 #模型 #引脚 #中断

dcc-rs

NMRA数字命令控制实现,用于驱动模型火车

3个版本 (破坏性更新)

0.3.0 2022年6月15日
0.2.0 2022年6月13日
0.1.0 2022年6月12日

#29 in #列车

MPL-2.0许可证

46KB
900

dcc-rs

Crates.io docs.rs

NMRA数字命令控制的纯Rust实现

本crate实现了NMRA DCC协议,旨在用于嵌入式应用,例如用于计算机控制的定制基站。它是完全no_std-兼容的,没有分配,并使用embedded_hal特性来驱动输出引脚。

为了解决标准中断支持不足的问题,本crate提供了一个DccInterruptHandler结构,它可以由中断处理程序中的static拥有,并且DccInterruptHandler::tick方法执行所有必要的处理,返回再次调用之前应等待的微秒数。这个时间对于本crate的正确运行至关重要,因为它用于计时输出引脚的转换。

将新数据包放入DccInterruptHandler留给实现者作为练习。在提供的示例代码中,这是通过一个Mutex来完成的,该Mutex持有一个RefCell<Option<_>>,它允许外部代码将新的序列化数据包推入,供中断处理程序在方便时检索。

状态

本crate目前仅实现了基站(发射器)端,并且仅实现了“基线”和“服务模式”数据包。“扩展格式”DCC数据包正在开发中。

DCC接收正在开发中,一旦实现了主要数据包类型。

示例实现

贡献

欢迎贡献,形式包括代码改进、测试报告、更多示例实现、更多平台实现等。我对在Rust的AVR支持整理完毕后让这个crate在Arduino uno/nano上运行特别感兴趣。一个即插即用的DCC++兼容固件也会很棒。

许可证

本crate可在Mozilla公共许可证第2.0版下使用。

依赖关系

~1MB
~27K SLoC