06:07
Быстрый и мёртвый
После получения запроса микроконтроллеру нужно сделать две вещи:
1. Ответить на запрос
2. Заняться сложными математическими расчётами
В каком порядке делать эти два действия?
Можно поставить целью наибольшую скорость ответа. Тогда мы отвечаем сразу, а потом начинаем считать. Однако это приводит к неожиданным последствиям.
Я сижу на другом микроконтроллере и направляю первому запрос. Получаю ответ. Отлично, можно слать следующий запрос. Но не тут-то было. Если слать запросы слишком часто, начала пакетов будут пропадать, потому что когда я шлю очередной запрос -- первый .микроконтроллер всё ещё выполняет вычисления [по некоторым причинам они непрерываемы даже при помощи прерываний].
Поэтому надо наоборот -- сначала доделать вычисления, а потом уже отправлять ответ.
1. Ответить на запрос
2. Заняться сложными математическими расчётами
В каком порядке делать эти два действия?
Можно поставить целью наибольшую скорость ответа. Тогда мы отвечаем сразу, а потом начинаем считать. Однако это приводит к неожиданным последствиям.
Я сижу на другом микроконтроллере и направляю первому запрос. Получаю ответ. Отлично, можно слать следующий запрос. Но не тут-то было. Если слать запросы слишком часто, начала пакетов будут пропадать, потому что когда я шлю очередной запрос -- первый .микроконтроллер всё ещё выполняет вычисления [по некоторым причинам они непрерываемы даже при помощи прерываний].
Поэтому надо наоборот -- сначала доделать вычисления, а потом уже отправлять ответ.
26.03.2022 в 06:38
Если вычисления в приоритете, то пусть второй контроллер периодически опрашивает первый, пока не получит ответы. Можно например сделать динамические таймауты запросов.
26.03.2022 в 23:38