Происходит что-то из ряда вон невероятное...
В проекте ESP32, работает как Modbus master RTU. Читает со слейва input reg. - 12 шт., holding reg - 10 шт., адреса подряд, начиная с нулевого.
Запись в holding reg - по команде.
Значения регистров получаю в Телеграм, т.е. я отправляю команду из телеграм и в ответ получаю значения всех holding reg., отправляю другую команду - значения всех input reg, по третьей команде в holding reg записываются константы.
Фокус в том, что всё это нормально работает пока в проекте есть дисплей HD44780 (на него я вывожу любые регистры). Но стоит из проекта убрать дисплей, как часть регистров отваливается - они постоянно равны 0. И не просто часть, а вполне конкретные номера регистров.
А именно, адреса регистров,
которые всё время равны нулю:
Holding reg.: 5,6,7,8,9
Input reg: 0,1,2,3,4,11
При этом по остальным регистрам обмен идёт правильно! Я пробовал от слейва различные значения передавать: двух, трёхзначные числа, отрицательные значения... Всегда всё одинаково - именно эти адреса регистров в нуле, остальные работают.
И стоит добавить в проект дисплей, вывести на него часть регистров, как всё налаживается и все регистры работают!
Прошу участия, по возможности, так как сам я просто в ступоре от таких чудес...
Прикладываю проект с дисплеем, в котором все работает, и проект без дисплея (с пометкой error), в котором часть регистров не работает.
https://drive.google.com/drive/folders/ ... sp=sharing