2.2主程序
控制器在没收到主机发送的控制命令时,会一直运行于主程序之中。主程序主要完成对系统的初始化;定时向看门狗电路发送电压翻转信号;对主机的控制命令发送回传信息。
在初始化时,先从存储器中读取信息,判断读出的数据是否超出了矩阵的输入输出范围。若数据无误,则按此信息(一般是上次关机时控制器的状态)初始化矩阵。若发现某一数据有误,则按预先的约定初始化矩阵。控制器在向主机返回命令之前要判断回响标志,若标志为“1”,则调用回响主机的子程序,否则会跳过这一步,继续向看门狗电路发送电压翻转信号,以示其工作正常。
2.3 串口中断服务子程序

一旦控制器检测到串口有数据到来,就会发出中断请求信号。单片机在执行完当前的指令后,会转向服务子程序(流程如图7)。在子程序内要完成对主控命令的判断、分析、处理,完成对矩阵的更改及信息的保存等任务。中断服务子程序也是软件设计的核心部分与难点之处。在接收完主机发送的命令之后,要处理的事务有:
(1)判断命令是否正确。这包括判断命令是否正确;检查命令是第一类还是第二类。若是第一类命令,要检查其起始、结束字节和校验字节是否正确;输入输出是否在规定的范围之内。若是第二类命令,要保存分组信息,开启记时器。若检查有一点不对,将放弃该命令,恢复现场,退出服务子程序。
(2)在确认命令正确无误后,要检查对应的输出是否被锁定。若锁定标志为“0”,则直接更改矩阵;若输出被某一主控命令锁定,那么就要比较新接收到命令的优先级与锁定的优先级的高低,高于锁定的优先级则可以更改矩阵,否则更改失败。
(3)在更改矩阵之后,要及时地将更新信息写入存储器。并且将回响主机的标志置为“1”。
退出中断服务子程序后,对主机命令的回响有两种情况。若更改成功,则将主控命令按相反的顺序返回主机;若因优先级低而更改失败,则将锁定的高优先级返回主机,防止主机继续发送此控制命令。
2.4 记时器中断子程序
记时器中断子程序是用来实现分组功能的。控制器接收到主机的第二类命令时,记时器开始记时,然后每隔3分钟该组中的输出通道就会轮流接通所选中的输入,直到主机发出取消本次分组的命令。
3 可靠性分析
为了提高整个系统的可靠性,设计时主要采取了以下措施:
· I2C总线连接的E2PROM使得象在突然掉电这样的异常情况下,能保存住现场信息。
·看门狗电路具有自动复位的功能。
·通过光电耦合与主机的通讯,增强了抗干扰能力。
·应答式的数据通讯,再加上校验字节保证了通讯的可靠性。
·软件设计时对控制命令一系列的判断检查,能够确保对矩阵的正确更新,防止误操作。
该控制器设计思路巧妙,充分利用了所选器材的资源,成本低廉。实际应用表明,该控制器工作稳定,容错能力强,具有很高的实用价值。
顶一下 0
踩一下
相关文章
用户评论
已有0位网友发表了看法



发表评论