这是一个比较简单的 1-wire 总线 C++ 模板库。这个库由 4 个部分组成: 1、1-wire 协议链路层接口类:ow_t 定义了 1-wire 协议的操作集合:reset, enum, touch。但这里没有具体实现这些操作。 2、1-wire 器件枚举类:ow_enum_t 实现了 enum 操作。 3、1-wire 协议链路层实现类:owou_t,owobb_t 在指定的数据链路层上实现了 reset 和 touch 操作。 owou = 1-wire over uart owobb = 1-wire over bit-banging 4、1-wire 协议物理层类 提供“链路层实现类”所需要的物理操作。 得益于 C++ 的模板编程,这个 1-wire 库是非常灵活而高效的:它可以选择枚举、数据链路、以及实现数据链路的物理方法。 例如示例中的定义: ds18b20_t<ow_enum_t<owou_t<owou_m48_t>>> ds18b20[8]; 表示了以 atmega48 的 uart 数据链路实现的 1-wire 总线,总线具有枚举功能,其上挂有多个 ds18b20 器件。 ds18b20_t<owou_t<owou_m48_t>> ds18b20; 表示了以 atmega48 的 uart 数据链路实现的 1-wire 总线,总线没有枚举功能,其上只有一个 ds18b20 器件。 ds18b20_t<owobb_t<owobb_m48_pd0_t>> ds18b20; 表示了用 atmega48 的 PORTD0 引脚,以 bit-banging 方法实现的 1-wire 总线,总线没有枚举功能,其上只有一个 ds18b20 器件。 定义好后,就可以很方便的操作 1-wire 器件了。 附件为 avrstudio 示例工程(需要 avr-gcc 4.3 以上)。
owexample.zip
(83.01 KB, 下载次数: 9)
|