Посмотрел бибку дисплея - оригинально, но.
Нахрена переинициализация вообще в законченном устройстве?
Дисплей заполняется по немногу - борьба с delay ? Где Вы нашли, в каком разделе? Где они при выводе текста?
Вы просто написали бибку для себя. И всё, теперь её пропагандируете детям и нам.
О диспетчере. Просто как альтернатива, без millis().
Создаём переменную takt, например байтовую, в каждом цикле инкрементируем. Это плата 1.
Плата 2 - пусть выполняется всегда - условия нет.
Плата 3 - пусть каждый 5 цикл, Условие при takt_5 = 1, при этом на первой плате takt_5=takt % 5;
Плата 4 - пусть каждый 15 цикл, Условие при takt_15 = 1, при этом на первой плате takt_15=takt %15;
И т.д.
Какая разница, если Вы знаете примерное время выполнения платы???
Блоки для дисплея все заинтересованные коллеги наверняка сделали себе под конкретные нужды в том функционале, который реализуете Вы, уже давно. Я сразу-же,
после оценки времени работы. И перевёл на 400 по I2C.
Посему мне кажется, сугубо мой непрофессиональный взгляд, что это вообще непонятная затея, вернее её конечная цель. Тем более тенденция увеличения производительности применяемых нами мк в свете появления 32, и stm, и esp. Речь о сообществе FLProg.
Вот увидеть именно Вашу реализацию ModBus на стм - было-бы очень любопытно!
И сравнить с "заначками".