Всем доброго дня.
Прошу помочь разобраться в чем ошибка.
Передача по UART NXT>>DUE состояние кнопки 2-4 секунд.
Все сделано по инструкции закрепленного в первом сообщении.
Блоки Ecoins, библиотеки обновленные.
Работа кнопок происходит из 2х страниц. С одной станице включается, с другой выключается.
[bbvideo]
https://youtu.be/K0my7b-guM8?si=MAgdugvTXNnGlIs-[/bbvideo]
На каждой странице по таймеру . Пробовал их включать по команде, делать их глобальными
Может код таймера для отправки состояние кнопки не правильно составлен.
Прошу ознакомьтесь и укажите на ошибки
[scroll]//=================================================================================================
// ОБРАБОТКА И ОТПРАВКА ПАРАМЕТРОВ В MCU
// 1.Функция вызывается периодически с периодом 100ms;
// 2.Во временных переменных(outxx) сохраняются выводимые параметры;
// 3.Проверяется изменение переменных outxx (с использованием переменных agoxx).
// Если есть изменение, устанавливается значение cmdPack=2;
// 4.Проверяется счетчик cntPack>10 для контроля достижения 1сек.
// Если cntPack>10, устанавливается значение cmdPack=1;
//=================================================================================================
//=================================================================================================
// 1.СОХРАНЕНИЕ ВЫВОДИМЫХ ПАРАМЕТРОВ В ПОЛЬЗОВАТЕЛЬСКИХ ПЕРЕМЕННЫХ outxx
//=================================================================================================
//out00=bt0.val
//Допустим, надо передать число n0.val=12345
//В nxt в каком-либо периодическом таймере (или во вкладке событий страницы) пишем:
//var1=n0.val/100 //получаем число 123
//var2=n0.val%100 // получаем число 45
//----------------------------------------Кнопки---------------------------------------------------------
//out30=B.n13.val //Кнопка<<<<
//=================================================================================================
// 2.ПРОВЕРКА НА ИЗМЕНЕНИЕ ПЕРЕМЕННЫХ outxx
//=================================================================================================
//----------------------------------------------Адрес 26
if(ago30!=out30)
{
cmdPack=2
ago30=out30
}
//=================================================================================================
// 3.ПРОВЕРКА НА ДОСТИЖЕНИЕ ВРЕМЕНИ 1 СЕК ПРИ ОТСУТСТВИИ ИЗМЕНЕНИЯ outxx
//=================================================================================================
cntPack++
if(cntPack>=10)
{
cmdPack=1
}
//=================================================================================================
// 4.ОТПРАВКА ПЕРЕМЕННЫХ В MCU
//=================================================================================================
//-----------------------------------------------------------------------Отправка страницы1 , адрес 1---------------------------------------------
if(cmdPack>0) //--Проверка команды отправки (по изменению или 1 раз в сек)
{
cmdPack=0 //--Очистка команды управления;
cntPack=0 //--Очистка счетчика времени;
head=0x3A //--Заголовок
func=0x06 //--Отправка нескольких регистров байтовых регистровтип передаваемых данных. 0x06 - byte (v8), 0x16 - word (v16), 0x32 - double word (v32)
adr=24 //--Адрес первого отправляемого регистра
qntReg=1 //--Кол-во отправляемых регистров изменили с 2 на 4
qntByte=1 //--Кол-во отправляемых байт изменили с 2 на
crc=head //--Код заголовка (':') в КС
crc+=func //--Параметр func
crc+=adr //--Параметра adr
crc+=qntReg //-- Параметр qntReg
crc+=qntByte //-- Параметр qntByte
//----Добавление в crc передаваемых регистров----------------------------------------------------
crc+=out30
//------------------------
crc=crc&0xFF //--Нормализация crc до байта:
//-----Вычисление crc с двумя дополнениями------------------------------------------------------
crc=0xFF-crc
crc+=1
crc&=0xFF
//-----Отправка посылки в UART-------------------------------------------------------------------
prints head,1 //--Отправка заголовка;
prints func,1 //--Отправка кода функции;
prints adr,1 //--Адрес записи
prints qntReg,1 //--Кол-во записываемых регистров;
prints qntByte,1 //--Кол-во отправляемых байт;
//----------------------------------------------------------------------------------------
prints out30,1 //--Отправка байта регистра 1;
//----------------------------------------------------------------------------------------
prints crc,1 //--Отправка байта crc;
printh FF FF FF //--Отправка кодов завершения посылки
}
[/scroll]
Также команда на кнопка
out30|=0x01-вкл
out30|=0xFE-выкл
Прошу помочь с решением и подсказать как ускорить общение по уарт
Спасибо за помощь