你好!
我将继续描述我对shDRO的开发。 在这一部分中,我将描述设备轮询算法和控制台命令的格式。
第一部分。韧体由于读取器可以连接的通道/端口数为12,并且理论上每个通道都可以配置为中断,因此使用了两个PCINT中断处理程序(用于端口D和C)。 这意味着对连接的一个限制:配置为输入的设备的所有输出必须连接到一组通道。 如果将通道配置为输出,那么对于当前设备,它属于哪个组都没有关系。 组:group1(通道0-5),group2(通道6-11)。
两个环形缓冲区(每个256字节)用于中断处理程序。
中断处理程序代码为:
buf[pos] = DATA_N; pos++;
其中DATA_N是端口之一:PIND,PINC。
数据处理如下:
- 发生中断,将新的端口值写入缓冲区;
- 定期轮询该缓冲区,并从中读取最后一次轮询后出现的数据(最后一次轮询的缓冲区位置存储在设备结构中);
- 在读取新数据的过程中,将为通道设置的中断级别与当前端口数据进行比较。 如果中断级别不匹配,那么将忽略数据。
- 它检查所有用于处理的数据是否已被接受(例如,对于BIN6协议必须接收24位);
- 数据以“可读”形式处理,处理后的数据显示在屏幕上;
- 然后重复该过程;
为了实现上述逻辑,固件中实现了以下逻辑模块:
- 设备:模块包含有关一个已连接设备的所有信息。 对于每个连接的设备,都会创建一个模块。
- 协议:该模块包含有关协议以及如何根据此交换协议处理到达端口的信号的信息;
- 功能:该模块包含有关如何转换从协议模块接收的数据的信息。 例如,有一个协议模块支持正交信号,但是发出正交信号的设备可能有所不同:它可以是光学尺或速度传感器。 即 在一种情况下,数据需要转换为毫米或英寸,而在另一种情况下,则需要以rpm为单位。 这个模块就是这样做的。
- LED:一个显示指标信息的模块。 shDRO包含4个指示器,并且为每个设备设置了所需的显示指示器。
因此,要在控制台中连接设备,您需要:
- 配置所需的频道;
- 添加设备;
- 用于设备设置协议,功能和指示灯;
- 添加/绑定必要的通道到设备;
主控台目前,我在ArduinoIDE端口监视器和终端v.1.9b中检查了控制台的操作。 对于Putty类型的终端,您需要实现回波模式(未实现)。
命令格式:
<> </1> <_1> </N> <_N>
每行最大参数为5。
大小写无关紧要;将字符串转换为小写之后,将进行命令解析(例外:引号中的参数值)。
仅在发出Setup命令后才执行所有命令(Help命令除外,该命令显示所有可用命令的列表)。
所有命令均在随附的归档文件中以及十六进制格式的固件的第一版中进行了介绍。
shDRO.zip(.hex +命令说明)ShDRO来源待续。
谢谢你
聚苯乙烯
与配置设备和通道有关的命令可以发送到裸机,而无需打捆。
PS1
要求住在喀山的人。
如果您有:
- 根据以下协议工作的数字卡尺:24BIT,BCD7;
- iGaging数字标尺(21BIT协议);
那你能给他们几天的时间为他们编写和调试协议吗?
我保证让他们安全无虞!
但这是在下午。 预先感谢。
PS2
我忘了在命令描述文件中添加两个命令:
-保存:将通道和设备的设置保存在EEPROM中;
-加载:从EEPROM卸载通道和设备的设置(在初始化期间自动执行加载);
请记住,我不会重新上传文件。 但是“帮助”显示这些命令。