- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于μC/OS-II的Modbus协议测试系统
为了记录RTU 帧中一个字符结束时间和另一个字符的起始时间,系统分别使用串口中 断Uart_ISR 和IO 中断PE24_ISR 分别对这两个时刻进行捕捉。这需要将HMS30C7202 的串 口中断时机设置为接收完一个字符后,将通用I/O 端口线PE24 设为允许中断、下降沿触发。
为了缩短关中断时间和中断处理时间,可将中断的处理放在任务中进行。在主任务中调 用OSTaskCreate函数分别建立串口接收处理任务Uart_Task和IO口处理任务PE24_Task。在 μC/OS-II中,有一个全局的系统时钟,维护着一个全局时间变量。在Uart_Task和PE24_Task这两个任务中分别通过读取当前全局时间变量来实现对字符起始时间和结束时间的连续测 量。系统利用μC/OS-II中信号量机制实现中断与任务之间的同步[3][4],信号量必须在系统启 动的时候初始化,利用信号量实现任务与中断同步的过程如图3所示。
图 3 利用信号量实现任务与中断同步
串口处理任务Uart_Task、IO 口处理任务PE24_Task、串口中断程序Uart_ISR 和IO 口中断程序PE24_ISR 的部分代码如下所示:
由于μC/OS-II是一种可剥夺型实时内核,因此当中断程序结束后要重新进行任务的调 度。任务的调度工作是由调度器完成的,μC/OS-II任务调度所花的时间是常数,与应用程序 中建立的任务数无关,因此串中中断和IO口中断后的中断恢复时间是相同的,如果将通过 优化编程使两个中断的响应时间相等,则时间间隔Δt的测量结果将更加精确。
4 结语
做为一种源码开放的实时操作系统,μC/OS-II在计算机检测与控制等领域得到了广泛应 用。本文提出并实现了基于ARM嵌入式处理器和μC/OS-II的Modbus协议测试系统。实验结 果表明,测试系统实时性好、可靠性高,能很好地满足Modbus设备的开发调试以及Modbus 设备运行过程中的在线检测需求。
来源:维库电子
上一篇:基于ARM920T核的电磁流量仪表的开发
下一篇:无线传感器网络数据融合技术