А зачем надо рассчитывать время, если можно проверять флаг завершения передачи?
Научить нельзя, можно научиться. Пифагор.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
Скорость обмена BOUND=10402 бит/сек
Фрейм : FRAME=10 бит (1 старт бит, 8 данных бит, 1 стоп бит)
Межбайтовый интервал MINT =10 мкC.
(рекомендовано мах 10 микросекунд)
Количество байт в нашем запросе N=10 байт
Как расчиталь время необходимое для передачи сообщения
при условии ,что мы используем обработчик прерывания UART?
10байт * 10 бит_на_байт / 10402(битовая скорость)
в компорте присутствуют стоповые и стартовые биты для того чтоб можно было непрерывно передавать байты не нарушая кадровой синхронизации в том числе.
сроду никто не ведет прием по тайсмеру ожидания! по таймеру ведут сброс уже принятого, если время ожидания превышает разумные пределы, но никак не наоборот!!! представьте себе, что передающая сторона какими-то проблемами задержится и передаст пакет с межкадровым промежутком 20 мс? что обработает ваш приемник?! пургу.
есть классические алгоритмы, не изобретайте велосипед с тремя педалями!
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
ARV писал(а):сроду никто не ведет прием по тайсмеру ожидания! по таймеру ведут сброс уже принятого, если время ожидания превышает разумные пределы, но никак не наоборот!!! представьте себе, что передающая сторона какими-то проблемами задержится и передаст пакет с межкадровым промежутком 20 мс? что обработает ваш приемник?! пургу.
есть классические алгоритмы, не изобретайте велосипед с тремя педалями!
++++.........----------***
+ -время нашей передачи
. - обработка нашего запроса
- - передача ответа
* - защитный интервал
** - тут я читаю ответное сообщение
Если мы спросили у сервера временные параметры обмена то никак он не может выйти за пределы "окна" там будут отвечать другие МК
вы умудряетесь так задать вопрос, что лично я не понимаю, чего вы хотите.
на всякий случай повторю свою мысль: никогда нельзя рассчитывать, что спустя некоторое время в вашем приемном буфере окажется полностью принятый пакет данных. наоборот, нужно обязательно вводить определенный интервал ожидания приема пакета, и, если за это время пакет целиком не принят, сбрасывать все, что принято к этому моменту (тайм-аут). конец пакета надо определять не по времени, а как-то иначе, например, по завершающему коду пакета, по количеству принятых байт и т.д. - но не по времени ожидания!!!
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...