|
/*
в любой линии передачи возможны ошибки, но они не должны приводить к зависанию всей сети. Ваша задача - корректно обработать возможные ошибки.
*/
да, я проверил, что не слейв не может нигде виснуть (просто нет бесконечных циклов, предусмотрены таймауты). Кроме того, я проверил, что таймеры, работающие с фифо uart-ов, продолжать работать по прежнему (т.е. это проверено 100%). Стек не переполняется, все переменные, относящиеся к фифо, после зависания в нормальном состоянии. Фифо также не переполняется.
/*
Не совсем понятно, почему Ваш слейв так себя ведет. Ведь после приема пакета от мастера слейв должен включить передатчик и отправить ответный пакет мастеру, после чего выключить передатчик.
*/
Совершенно верно. Так и делается, я выключаю передатчик в прерывании transmit complete. Видимо, происходит несанкционированное включение, либо не происходит выключение. Но он же не может пропустить прерывание по transmit complete, насколько я понимаю...
/*
На этото процесс никакие события на линии, в том числе и ошибки, влиять не должны. Может, у Вас слейв просто виснет в результате, скажем, помех по питанию?
*/
Нет, к сожалению, слейв нигде не виснет, тогда бы я быстро разобрался. Происходит ошибка в управлении сигналом прием-передача.
Но из-за чего, не понимаю, хоть убей. Самое плохое, не знаю как искать. Вроде все перепробовал.
E-mail: info@telesys.ru