与总体产品联调时,需要各个单机系统严格按照总体要求,进行数据输出,时间的偏差将出现系统异常,控制失败等不稳定情况产生,甚至影响到产品安全。
因此必须确保某些关键任务的优先执行。单片机任务优先级一般有两种方式实现,基于单片机中断服务的中断函数进行实现和基于实时操作系统的任务调度实现。
基于中断服务函数实现的任务优先级对单片机硬件资源有要求,而对于实时操作系统的任务调度方式,仅需一个定时器就可完成多任务多优先级的管理。
参与某产品联调时,总体要求每间隔5ms向总控发
送一次关键数据。
当系统联调运行时,总控会产生超时报警,报警内容是通信超时。
经过排查排除了硬件问题、电磁干扰问题、程序逻辑错误未正常发送数据等问题。
通过报警时间比对,发现该报警出现时间没有规律性。通过示波器查看发现,其发送数据周期没有严格按照5ms 间隔时间发送,发送时间落在 5ms 区间段内,任意时间点都可能会进行关键数据的传递,无法预测下次一次发送数据的准确时间,当系统在规定时间内未接收到数据时,产生系统报警。
经过对程序进行逻辑分析,出现问题原因是单片机运
行任务是顺序执行,只有轮到发送数据任务执行时,才能发送数据,如果其他任务占用执行时间过长,将会导致发送任务不能在5m