т.е. Вы вобще не верите что прерывания в любых устройствах могут задержать ответ по последовательному порту. Эта пауза ни как не связана с обработкой. Она нужна, как и написано, для того чтоб в сети была тишина и все кто хотел что то сказать (мастер или ведомые) вытолкали свой передающий буфер и не создали помех для очередного запроса/ответа
а по поводу всего остального, еще раз обозначу: по физической линии на одной и той же скорости запрос/ответ по времени проходит за одно и тоже значение плюс некоторая составляющая из-за какого нибудь прерывания, эта составляющая на столько мала, что на неё отводят 1,5 символа между фреймами. Появление результата запроса конечно же зависит от времени цикла, первое что приходит в голову это вывести опрос в отдельную задачу. Для меня есть одно но, во первых не попадался мне плк двух и более ядерный, чтоб была настоящая многозадачность, во вторых в таких системах нет понятий как volatile и synchronized, что будет происходить, если опросная задача захватила буфер,а в это время основная задача по прерыванию начала его читать. Остается держать в ОЗУ два дублирующих буфера (в случае одного опрашиваемого ведомого), а избыточная трата ресурсов может привести к нестабильности системы в целом, а не только обмена





Ответить с цитированием