Pull to refresh

Comments 2

В момент запуска микроконтроллера в первом отображаемом кадре вся информация верна, при отображении последующих кадров, arduino куда-то съедает несколько каналов.

Самое очевидное — вывод на дисплей занимает слишком много времени и начинаются потери фреймов.
В первый раз собирается полный фрейм и успешно выводится, а потом идут потери.

Для проверки можно попробовать в основном цикле дважды вызывать
printLevel (outAr); // Вывод значений на дисплей

Если и тут начнутся потери, то получаем явный конфликт по таймингу библиотеки DMX_Slave и функции вывода данных.
Уж не знаю как именно работает DMX_Slave (использует ли она прерывания или отрабатывает по завершении каждого цикла void loop()), но можно попробовать начать с вывода за один цикл не более 16 значений (т.е. на 40 строчный дисплей данные будут выводиться за 3 цикла loop()).
Да, действительно. Посмотрел логическим анализатором — при ширине выводимой строки 40 символов, вывод на дисплей занимает 30,21мс, а на получение одного пакета данных — 26,43. Получается без изменений кода, удается вывести строку около 30 символов…
Sign up to leave a comment.

Articles