Кстати проблема появилась, когда стал передавать данные с двух датчиков. С одним датчиком проблем не было. Частота запроса данных - 1 кГц, всегда. Данные от датчика поступают раз в 2,25 мс. То есть получалось, что данные мне отправлялись примерно через раз. Два датчика соответственно передают данные в 2 раза чаще, но все равно реже чем раз за 1 мс. У меня получалось (смотрел пакеты на верхнем уровне), что как раз данные приходят через один - сначала от первого датчика, потом пакет от второго и т.д.
Тогда, чтобы убрать влияние датчиков, я стал передавать просто фиксированный массив из 19 байт.
BuffUART[2] показывает, от какого датчика пришли данные, поэтому я периодически меняю ее значение, чтобы один и тот же пакет данных на верхнем уровне интерпретировался как данные от первого или второго датчика.
Вот тут и получается непонятный фокус...
если делать такое условие, то все работает
Код
if (ToggleFlag ==1)
{
BuffUART[2] = 1;
ToggleFlag =0;
}
else
{
BuffUART[2] = 1;//если тут 2, то происходят сбои! если 1, то сбоев нет
ToggleFlag++;
}
а если написать там 2, то через какое то время происходит сбой - теряется BuffUART[1]...
Цитата(wangan @ Oct 27 2015, 18:20)

А ты не рассматривал вариант что когда когда ты переключаешь 74HC126D на уарт пролазит байт нулевой, попробуй после каждого переключения очищать аппаратный буфер уарта.
чтобы отсечь такие ошибки, я не трогаю то, что приходит от датчиков, а передаю фиксированный массив. датчики расположены на USART1, а я по запросу я передаю по UART5