Параллельность задач на дисплее Nextion серии "К"

День добрый, завсегдатаи форума!
Вот приобрёл Nextion 5" из серии К. Привлёк он меня своими GPIO выводами. Хотя эти дисплеи и позиционируются производителем как устройство ввода/вывода инфы на/с ардуинку, но всё же серия “К” может работать самостоятельно… И работает. Но, в “медленных”, не требовательных к скорости задачах, типа , нажал кнопочку - реле на PIO1 включилось через секунду… через час выключилось. А в течении часа поморгал светодиод несколько раз, подключённый к PIO2… Датчик температуры, подключённый к PIO0, передаёт раз в 5 минут показания, а дисплей их отображает. Замечательно! Дискретизация по времени у дисплея (время минимального срабатывания таймера) 50 миллисекунд, что конечно, большой интервал… Но меня бы и он устроил.
Почему я это описываю, казалось бы и так известные вещи? А потому, что я наткнулся на следующую большую неприятность: срабатывает таймер, по которому запускается некий процесс №1, длящийся, скажем, 5 секунд. Так вот в течение этих пяти секунд, пока выполняется процесс №1, экран не реагирует ни на какие другие сигналы. Вернее, он реагирует, но только по истечении этих 5-и секунд. Т. е. никакой параллельности не получается.
В связи с этим, у меня как у начинающего пользователя Nextion-ов, корневой вопрос: на Nextion в принципе можно сделать параллельность, как на ардуинке с использованием таймеров на millis() или это не предусмотренно самим железом? Вопрос 2-й: если можно сделать таки параалельность выполнения задач, плиз, ткните меня носом в нужное направление; куда мне рыть?

Покажи, как ты пользуешься таймером

Извините, не понял вашего вопроса… Таймер как таймер: создаю на странице 2 штуки. Один с интервалом 50 миллисек, второй - 100 милисек. Внутри таймера прописываю код: если PIO1=0, то то; иначе - другое… Во втором аналогично.
Не совсем понимаю, что именно показать?

Программу, что ещё то?

1-ый таймер; en = 50 (я дошёл до того, что когда наткнулся на проблемы с GPIO просто сделал кнопки на странице - результат тот же):

while(millis.val<=2147483600)
{
  millis.val=millis.val+50
  // Выводим показания millis
  milliscnt.val=millis.val
}else
{
  millis.val=0
}

2-ой таймер; en = 100:

vis q0,0
vis q1,0

при нажатии на кнопку запускается 2-ой таймер. А первый работает непрерывно, обновляя показания счётчик в числовом поле.
Так вот, при нажатии кнопки видно, как останавливается обновление счётчика. И возникают, когда “захотят” артефакты на изображении, типа, кнопка остаётся нажатой (она простая) или вообще пропадает на фоне… Но нажимая на её место, она опять появляется. Словом, я диагностирую, что происходит какой то конфликт событий…

Я не прошу вас за меня мой код исправлять. Я прошу сообщество: 1) ответить, в принципе на Nextion возможна параллельность выполнения задач (как на ардуино) и 2) дайте ссылку где можно почитать/посмотреть образец… Дальше я сам попытаюсь…

Nextion тут не при чём, у Вас блокирующий код
Вам нужен пример без delay()

Ну если нужен неблокирующий код, зачем тогда использовать while ?

Да и таймер в nextion , насколько я помню, как то по другому работает.

Благодарю. Я это понимаю. Я это и сказал: идёт конфликт. Один процесс не даёт запуститься другому.
Тогда поставим вопрос по другому: 1) millis() на Nextion есть и как он называется? 2) пример со ссылкой на ардуино без делея в теме про Nextion - это замечательно. А где посмотреть аналогичный пример работы без делея для Nextion? Где поучиться?

Именно. Таймер работает не так как в ардуино. Но вот как??? Где узнать?

https://youtu.be/pKigWrW9n84

Замечательно. На один рабочий таймер никто и не жалуется. Отрабатывает на ура. Проблема появляется тогда, когда во время выполнения событий, прописанных в одном таймере, запускаются события, прописанные в другом таймере… И тогда: либо все события надо вставлять в один таймер (но как быть, если нужно срабатывание событий с разными интервалами), либо… даже и не знаю что… Так всё таки, пока ответа нет: ни на первый вопрос, ни на 2-ой…

О! Именно по этому виде и учился… Но в нём нет моей ситуации.

дело в том, что в этом видео при нажатии кнопки и затем после включения таймера срабатывает моментальное одноразовое событие: переключение страницы. А вот если после нажатия кнопки нужен цикл с задержкой - тут то мы и получает то самое “зависание”.

При разборе ситуации я наткнулся вот на это видео: Работа с GPIO входами на панеле Nextion. - YouTube На 11-ой минуте как раз тот случай, на который я и попал. И увидев это видео я и пришёл на форум с моими вопросами, т.к. я, не зная про это видео, попал в ту же ситуацию, что и мужчина в нём. А ответа ни в инете, ни где-либо ещё я не нашёл.

Ну а что ты хотел то ?
Он там точно так же использует while и удивляется.

И я про то же: только я сначала сделал, поимел проблему, начал искать решение и нашёл его видео… И встал. Т.е. либо сделать не получится параллельность (ну раз другие люди другими путями, но пришли к такому же результату), либо я (и мужчина в видео) чего то не знаем. И в таком случае нужна подсказка гуру в данном вопросе .
Начнём снова: 1) можно ли сделать параллельность на Nextion? 2) millis() на Nextion - есть ли он, или как его организовать? 3) пример кода именно для Nextion (а не для ардуино) где посмотреть? (тут, как я понимаю, если таки параллельность возможна, то важен именно синтаксис с программе разработки Nextion; а для данной ситуации никто его и не приводит, а догадаться самому - это чисто тыкаться в надежде на случай)

#131 Nextion Timers -N- Depth, ways to use Nextion timers for control and logic - YouTube - о таймерах тут. Но есть ли мой случай - щас будем изучать.