пин.pwm
пин.DO
pin
db632b94-8b1d-4aa8-ad1a-252b619f7546
06d08da3-4c1a-41ae-b2e6-7cf5861d152a
val
b442a841-a29f-48bb-86a5-b9cea468a79e
b42d5582-79ce-4fe1-a1a8-0377f4b0e2e9
4bfc4f95-2743-41f4-93fe-3277d8e64156
1.пин.DO
pinDigitalWrite(RT_HW_PIN_DIR_ID &id, uint8_t v)
48
РЕЖИМ_РАБОТЫ_ПИНА
'O' - открытый выход; любой другой символ - обычный выход;
37479155-58ef-495f-bcbd-2b41338adc56
N
e85ee1dd-fde2-4ee9-95ce-048db23e1cf3
//--Быстрый вывод на пин дискретного вывода-------------------------------
if(id.dir==0) {RT_HW_Base.setPinID(id, pin, RT_HW_PGM_PIN_DOT_ID, РЕЖИМ_РАБОТЫ_ПИНА);}
RT_HW_Base.pinDigitalWrite(id, v);
196
id.dir=0;
10
#include
"RT_HW_BASE.h"
id
;
RT_HW_PIN_DIR_ID
dev
dcfb0110-df92-49b5-b2a1-a6dd4c902380
c698381e-952e-4b21-b395-86cb2fa1bb9c
762f233a-8c7f-4fbe-a621-b5b390954e48
4.пин.pwm:Быстрая запись дискретного вывода
//--Быстрый вывод на пин дискретного вывода-------------------------------
if(id.dir==0) {RT_HW_Base.setPinID(id, pin, RT_HW_PGM_PIN_PWM_ID, РЕЖИМ_РАБОТЫ_ПИНА);}
dev=RT_HW_Base.pinWritePWM(id, val);
198
1351e4e4-49ca-41e6-8221-bbe70c4a5cc6
РЕЖИМ_РАБОТЫ_ПИНА
'O' - открытый выход; любой другой символ - обычный выход;
37479155-58ef-495f-bcbd-2b41338adc56
N
//--Быстрый вывод на пин дискретного вывода-------------------------------
if(id.dir==0) {RT_HW_Base.setPinID(id, pin, RT_HW_PGM_PIN_PWM_ID, РЕЖИМ_РАБОТЫ_ПИНА);}
dev=RT_HW_Base.pinWritePWM(id, val,1000, РЕЖИМ_РАБОТЫ_ПИНА);
222
пин.DI
пин.DO
pin
db632b94-8b1d-4aa8-ad1a-252b619f7546
06d08da3-4c1a-41ae-b2e6-7cf5861d152a
val
b442a841-a29f-48bb-86a5-b9cea468a79e
b42d5582-79ce-4fe1-a1a8-0377f4b0e2e9
4bfc4f95-2743-41f4-93fe-3277d8e64156
1.пин.DO
pinDigitalWrite(RT_HW_PIN_DIR_ID &id, uint8_t v)
РЕЖИМ_РАБОТЫ_ПИНА
'O' - открытый выход; любой другой символ - обычный выход;
37479155-58ef-495f-bcbd-2b41338adc56
N
e85ee1dd-fde2-4ee9-95ce-048db23e1cf3
//--Быстрый вывод на пин дискретного вывода-------------------------------
if(id.dir==0) {RT_HW_Base.setPinID(id, pin, RT_HW_PGM_PIN_DOT_ID, РЕЖИМ_РАБОТЫ_ПИНА);}
RT_HW_Base.pinDigitalWrite(id, v);
id.dir=0;
#include
"RT_HW_BASE.h"
id
;
RT_HW_PIN_DIR_ID
пин.DI
v
c4799bba-c682-4d40-b0d1-1a42bb93abda
0e5fd939-4100-4265-804f-e16cadd4052f
1de876f9-be08-48f8-b8fa-4ea8c7906e3a
2.пин.DI:Быстрое чтение дискретного входа
//--Быстрый вывод на пин дискретного вывода-------------------------------
if(id.dir==0) {RT_HW_Base.setPinID(id, pin, RT_HW_PGM_PIN_DOT_ID, РЕЖИМ_РАБОТЫ_ПИНА);}
RT_HW_Base.pinDigitalWrite(id, val);
val
7286ea68-a2e6-4144-aac4-9d2a387081d5
2.пин.DI:Чтение дискретного входа
РЕЖИМ_РАБОТЫ_ПИНА
'U' - подтяжка входа к Vcc; 'D'-подтяжка входа к GND; 'I','F',любой другой символ - дискретный вход обычный;
37479155-58ef-495f-bcbd-2b41338adc56
U
//--Быстрый вывод на пин дискретного вывода-------------------------------
if(id.dir==0) {RT_HW_Base.setPinID(id, pin, RT_HW_PGM_PIN_DIN_ID, РЕЖИМ_РАБОТЫ_ПИНА);}
val=RT_HW_Base.pinDigitalRead(id);
пин.AI
пин.DO
pin
db632b94-8b1d-4aa8-ad1a-252b619f7546
06d08da3-4c1a-41ae-b2e6-7cf5861d152a
val
b442a841-a29f-48bb-86a5-b9cea468a79e
b42d5582-79ce-4fe1-a1a8-0377f4b0e2e9
4bfc4f95-2743-41f4-93fe-3277d8e64156
1.пин.DO
pinDigitalWrite(RT_HW_PIN_DIR_ID &id, uint8_t v)
РЕЖИМ_РАБОТЫ_ПИНА
'O' - открытый выход; любой другой символ - обычный выход;
37479155-58ef-495f-bcbd-2b41338adc56
N
e85ee1dd-fde2-4ee9-95ce-048db23e1cf3
//--Быстрый вывод на пин дискретного вывода-------------------------------
if(id.dir==0) {RT_HW_Base.setPinID(id, pin, RT_HW_PGM_PIN_DOT_ID, РЕЖИМ_РАБОТЫ_ПИНА);}
RT_HW_Base.pinDigitalWrite(id, v);
id.dir=0;
#include
"RT_HW_BASE.h"
id
;
RT_HW_PIN_DIR_ID
пин.DI
v
c4799bba-c682-4d40-b0d1-1a42bb93abda
0e5fd939-4100-4265-804f-e16cadd4052f
1de876f9-be08-48f8-b8fa-4ea8c7906e3a
2.пин.DI:Быстрое чтение дискретного входа
//--Быстрый вывод на пин дискретного вывода-------------------------------
if(id.dir==0) {RT_HW_Base.setPinID(id, pin, RT_HW_PGM_PIN_DOT_ID, РЕЖИМ_РАБОТЫ_ПИНА);}
RT_HW_Base.pinDigitalWrite(id, val);
val
3e0a3302-e8b3-4203-9ad5-4607050d244e
3.пин.AI:Чтение аналового входа
РЕЖИМ_РАБОТЫ_ПИНА
'D' - значение ADC; 'N'-- значение ADC нормализованное до системной разрядности ; 'F' - к режиму 'N' добавлена фильтрация;
37479155-58ef-495f-bcbd-2b41338adc56
F
//--Быстрый вывод на пин дискретного вывода-------------------------------
if(id.dir==0) {RT_HW_Base.setPinID(id, pin, RT_HW_PGM_PIN_ADC_ID, РЕЖИМ_РАБОТЫ_ПИНА);} val=RT_HW_Base.pinAnalogRead(id, ago, РЕЖИМ_РАБОТЫ_ПИНА );
220
#include
"RT_HW_BASE.h"
ago
;
uint16_t
id
;
RT_HW_PIN_DIR_ID
пин.DO
pin
db632b94-8b1d-4aa8-ad1a-252b619f7546
06d08da3-4c1a-41ae-b2e6-7cf5861d152a
val
b442a841-a29f-48bb-86a5-b9cea468a79e
b42d5582-79ce-4fe1-a1a8-0377f4b0e2e9
4bfc4f95-2743-41f4-93fe-3277d8e64156
1.пин.DO
pinDigitalWrite(RT_HW_PIN_DIR_ID &id, uint8_t v)
РЕЖИМ_РАБОТЫ_ПИНА
'O' - открытый выход; любой другой символ - обычный выход;
37479155-58ef-495f-bcbd-2b41338adc56
N
e85ee1dd-fde2-4ee9-95ce-048db23e1cf3
//--Быстрый вывод на пин дискретного вывода-------------------------------
if(id.dir==0) {RT_HW_Base.setPinID(id, pin, RT_HW_PGM_PIN_DOT_ID, РЕЖИМ_РАБОТЫ_ПИНА);}
RT_HW_Base.pinDigitalWrite(id, v);
id.dir=0;
#include
"RT_HW_BASE.h"
id
;
RT_HW_PIN_DIR_ID
e5effaff-4357-4bc9-8e26-7363b3d027f6
1.пин.DO:Быстрая запись дискретного вывода
//--Быстрый вывод на пин дискретного вывода-------------------------------
if(id.dir==0) {RT_HW_Base.setPinID(id, pin, RT_HW_PGM_PIN_DOT_ID, РЕЖИМ_РАБОТЫ_ПИНА);}
RT_HW_Base.pinDigitalWrite(id, val);
03.РАБОТА С ПИНАМИ
15371e5f-d8e3-4f3d-99c5-c5cb654d7bc9
Делитель EN
div_EN
EN
8d38c4ab-710d-4f8c-a34f-be2d4a7a2bcf
76c58ae7-75f0-4708-a70b-b521c4f9ea85
qnt
bf2ec592-f77a-4af6-9a00-e139a1e25301
24743353-5efa-46e4-bd82-51345f4ca16a
57b63d80-cd09-4a6f-af65-bb838a636b4c
10.div_EN:делитель входного события EN
up=RT_HW_Boards.trigger_Update(cnt, ago, qnt, En); //--делитель входного события EN
85
#include
"RT_HW_BOARDS.h"
cnt
=0;
uint8_t
ago
=-1;
int8_t
num
div.EN
blink
90ea7048-1424-466f-8510-de117aa69342
7ced4c68-8548-41f5-a3b7-ea1fd05913d9
up
33f374f7-30f5-4d2d-a0c7-ae2bc7b285a0
7f7beb2c-34cc-4637-a1ee-10a7cdf85fdd
02cc58c8-cff2-406b-bf50-42311b8105c7
EV
a63499e5-3b64-4164-a568-cbfebe692fc0
0.div.EN:делитель входного уровня
Делитель входного события EN
---------------------------------------------------------------
ecoins@mail.ru 15.04.2020
118
EV=0; if(EN) {if(++cnt>num) {blink=!blink; cnt=1; EV=1;}};
61
cnt=blink=0;
12
cnt
;
uint8_t
MN
9f5bc3d0-c126-4788-af9a-01733becda98
2.Делитель EN: Делитель входного значения EN=1
Делитель входного значения EN=1
Выходы:
MN - меандр;
EV - событие;
При первом включении MN и EV =1
---------------------------------------------------------------
ecoins@mail.ru 02.11.2020
191
if(!init){init=1; cnt=num; MN=0;}
EV=0; if(EN) {if(++cnt>num) {MN=!MN; cnt=1; EV=1;}}; //--Делитель входного значения EN=1;
125
cnt
;
uint8_t
init
=0;
uint8_t
RT.Диспетчер
RT.Диспетчер
uart
c6dc98fc-9703-43cc-8c4a-2487a1d84a78
df33d449-e44d-4240-ad80-08ba9b33fda3
control
c7300995-ce24-481b-9c8c-5536c400fd4e
168bedd0-e985-41ce-aa37-b180bcdbcf4f
quick
9422d83d-8171-44e2-bff3-b55c42d94719
8a884944-e63a-40bc-a567-3777f259315c
fast
dd571a9c-c671-4753-83c1-a872487de4fe
627d2840-166b-4fd4-b2fa-d0cc67864d16
slow
0fe2fcd6-bff9-4527-8594-c7dada842a34
fd05407b-d461-4768-9f4f-e54d0e0f9787
back
089ca824-182a-47a9-b732-2fb613fea029
27b2c581-9a95-41b7-b5b1-f4fe49ca3104
frdm
cd8f08f8-92ef-4c5c-b182-93380642f799
4fd2d748-be54-4c9b-ad44-61c59fa06a68
71e4be07-8ef9-4c4c-9e19-f3ee7c695727
RT.Диспетчер
head
68fd8407-4102-4a11-b295-2ccc29d06708
ffbbae92-335a-4455-bde2-cae2cbd10788
813be28b-8d1c-443f-8c39-892d8f48824a
7b1ffb11-7fd4-4f52-a5a3-ec1513229dcd
1.RT.Диспетчер: Планирование вызова задач
Блок диспетчера задач.
1. Запускает планировщик событий и задач (диспетчер).
1.1.Блок имеет выходы номеров задач, номера задач сменяются с заданной периодичностью:
quick – номера оперативных задач (по умолчанию 5 задач, период смены задачи 10 мс);
fast – номера быстрых задач (по умолчанию 4 задач, период смены задачи 25 мс);
slow – номера медленных задач (по умолчанию 4 задачи, период смены задачи 250 мс);
back – номера фоновых задач (по умолчанию 5 задач, период смены задачи 100 мс);
frdm - номера свободных задач (без периода) (по умолчанию 25 задач) номера последовательно изменяются
в циклах, когда номера предыдущих задач равны 0);
1.2.Кол-во задач могут быть изменены внешним блоком, который должен запускаться 1 раз перед первым вызовом диспетчера:
RT_HW_Base.shed.quick.qnt, RT_HW_Base.shed.fast.qnt, RT_HW_Base.shed.slow.qnt, RT_HW_Base.shed.back.qntж
1.3.Номера задач изменяются циклически. Например для quick ->1,2,3,4,5,1,2,3,4,5 и т.д.)
1.4.В каждом цикле только одна задача может быть отлична от нуля.
1.5.При одновременной готовности к вызову нескольких типов (quick, fast и т.д.) задач, они вызываетсяпо приоритету quick,fast,slow,back,frdm.
1.6.Номера задач quick,fast,slow,back устанавливаются на один цикл, затем они сбрасывается в 0 до установки по времени
следующего номера задач.
2.Блок запускает инициализацию консоли, на которую могут выдаваться отладочные сообщения.
3.В каждом цикле на выходе control изменяется значение (0/1). Это выход предусмотрен для наблюдения логическим анализатором.
1554
//-----Управление задачами-------------------------------------------------------------
RT_HW_Base.sheduler(); //--Вызов диспетчера задач;
control=bitRead(RT_HW_Base.shed.blink,0);
quick=RT_HW_Base.shed.quick.num;
fast =RT_HW_Base.shed.fast.num;
slow =RT_HW_Base.shed.slow.num;
back=RT_HW_Base.shed.back.num;
frdm= RT_HW_Base.shed.frdm.num;
//--------------------------------------------------------------------------------------------------------
460
#include
"RT_HW_BASE.h"
02.ПЛАНИРОВАНИЕ ЗАДАЧ
bf13a53b-b27a-40a3-8cdd-1e236462d58b
cns.Запуск
RT.console
EN
d0ce6d67-b0c3-4893-818d-a3c3e8706b4e
1a631c43-c24c-4e08-9f85-0b2078b7be20
Console
head
8e94822e-70e4-4455-9b31-793002c34789
mess
90abc7f3-9c72-40ec-8da7-25f0c9bd2a30
feacbbf9-e19c-4e94-a0af-c830f94d5ffe
01.Console:состояние консоли
head =RT_HW_Boards.Console.head;
mess =RT_HW_Boards.Console.mess;
66
#include
"RT_HW_BOARDS.h"
Разрешение вывода на консоль заголовков (выводятся один раз)
mess
39d1074e-af5c-42f9-9d8d-bdb7dc52d47b
Разрешение вывода на консоль текущих сообщений
d928927d-f174-4857-bb25-0cb2047c898c
2bac8543-2df2-42a7-bc28-8729698ede85
32d082ed-8daa-4238-a4f1-3ef28dfc4795
01.RT.console:состояние консоли
//--Управление выводом на консоль
RT_HW_Boards.Console.permit=EN;
RT_HW_Boards.consoleBegin(); //--Вызов диспетчера консоли;
head =RT_HW_Boards.Console.head;
mess =RT_HW_Boards.Console.mess;
204
uart
d3b25872-7327-4806-8142-1c6469e6a86e
b57a43ee-e0eb-4d34-9f8b-2fb17aa19821
ready
b6e7e96b-2ed1-447c-8a78-49d6fd86f84c
c89c5f93-a2cc-4e3f-9a28-5a9e97d05654
mess
1295be92-71bc-4a24-923a-61b8554a8c22
49eea20e-e5f5-485d-b57d-093ef6fc1a96
367dcb3c-e5b0-4e7b-a8b3-b7cce431ea9c
01.cns.Запуск:Инициализация консоли
/**************************************************************************************************
Инициализация консоли.
1.Инициализируется порт UART на скорость 115200.
2.После готовности порта (важно для контроллеров DUE,STM32 без аппаратного чипа UART-USB.),
взводятся флаги ready,head;
3. Флаг head сбрасывается через программную установку флага reset, или самостоятельно через 10 циклов loop().
4. Флаг mess - устанавливается после установки и сброса флага head.
-----------------------------------------------------------------------------------------
Использовании перечисленных флагов ready,head,mess,reset
(RT_HW_Base.device.console.ready, RT_HW_Base.device.console.head,
RT_HW_Base.device.console.mess, RT_HW_Base.device.console.reset)
позволяет в проектах осуществлять требуемую последовательность вывода данных на консоль.
---------------------------------------------------------------------------------------------------
ecoins@mail.ru 19.11.2020
***************************************************************************************************/
1078
ВЫВОД_СООБЩЕНИЙ_ВМЕСТЕ_С_ЗАГОЛОВКАМИ
06effe08-a4a8-46f4-a731-290fd308490e
Y
3ce134df-3e72-4bfa-b9cc-494909dee830
//-----Управление выводом на консоль------------
RT_HW_Base.printBegin(115200, EN); //--Инициализация консоли;
ready =RT_HW_Base.console.ready; //--Флаг готовности консоли;
head =RT_HW_Base.console.head; //--Флаг вывода заголовков;
mess =RT_HW_Base.console.mess; //--Флаг вывода сообщений;
296
#include
"RT_HW_BASE.h"
dfe20a0d-7fe4-4afe-a111-081c006f8f8e
ВЫВОД_СООБЩЕНИЙ_ВМЕСТЕ_С_ЗАГОЛОВКАМИ
06effe08-a4a8-46f4-a731-290fd308490e
Y
04.КОНСОЛЬ
9cbe5866-b783-4bd1-b133-22ff31f17dd1
RT.do
pin
8aca6394-0855-4adf-b710-3a3abef9551a
a45101de-cf43-4178-bd13-d025ae83bb7d
val
05e11135-eccb-4aba-9f7b-21b7f2de48f3
5e39000b-a445-4339-9a37-07310ea9409b
0f6c1de0-0859-42a8-8e84-5a0036cfb916
RT.do
//----Вывод на дискретный пин средствами Wirinng
if(vINIT==0) {if(int8_t(pin)>=0) {pinMode(pin,OUTPUT); vINIT=1;}};
if(vINIT==1) {digitalWrite(pin,val);};
154
#include
"RT_HW_BASE.h"
vINIT
=0;
uint8_t
adb1cd47-aa36-47e2-b8b4-4f4fbdbd6d46
01.RT.do:Вывод на пин средствами Wiring
//----Вывод на дискретный пин средствами Wiring
if(vINIT==0) {if(int8_t(pin)>=0) {pinMode(pin,OUTPUT); vINIT=1;}}; if(vINIT==1) {digitalWrite(pin,val);};
//--------------------------------------------------------------------------
230
vINIT
=0;
uint8_t
RT.di
RT.do
pin
8aca6394-0855-4adf-b710-3a3abef9551a
a45101de-cf43-4178-bd13-d025ae83bb7d
val
05e11135-eccb-4aba-9f7b-21b7f2de48f3
5e39000b-a445-4339-9a37-07310ea9409b
0f6c1de0-0859-42a8-8e84-5a0036cfb916
RT.do
//----Вывод на дискретный пин средствами Wirinng
if(vINIT==0) {if(int8_t(pin)>=0) {pinMode(pin,OUTPUT); vINIT=1;}};
if(vINIT==1) {digitalWrite(pin,val);};
#include
"RT_HW_BASE.h"
vINIT
=0;
uint8_t
v
257bb08a-40b2-47ed-916a-5755d0b3de97
b5f852e3-bd99-4822-b8cc-12e66e3ce561
33ceb48a-c2ba-4ebc-afb8-dfa3da1af607
02.RT.do:Ввод c пина средствами Wiring
//----Вывод на дискретный пин средствами Wirinng
if(vINIT==0) {if(int8_t(pin)>=0) {pinMode(pin,INPUT); vINIT=1;}};
if(vINIT==1) {val=digitalRead(pin);};
152
val=0;
6
val
4273bf42-b081-4ddc-880b-4b17585c9107
02.RT.di:Ввод c пина средствами Wiring
ПОДТЯЖКА К VCС
Y,N
c56b903c-4db6-4402-84f0-af7fd90ca705
Y
199d8b79-b4f5-4030-a6e3-f6b29dffe7ba
ИНВЕРСИЯ ВЫХОДА
Y,N
b03851ec-6287-458e-b7bb-19e9b066c0f9
Y
5698c0c9-8e93-415f-9524-30c0d171e0af
//----Вывод на дискретный пин средствами Wirinng
readPin();
60
vINIT
=0;
uint8_t
//----Вывод на дискретный пин средствами Wirinng
if(vINIT==0) {if(int8_t(pin)<0) {vINIT=7; val=0; return;}
if( ПОДТЯЖКА К VCС == 'Y') { pinMode(pin,INPUT_PULLUP);} else {pinMode(pin,INPUT);}
if( ИНВЕРСИЯ ВЫХОДА =='Y' ) {vINIT=2;} else {vINIT=1;}}
if(vINIT==1) {val=digitalRead(pin);};
if(vINIT==2) {val=!digitalRead(pin);};
362
void
readPin
06.Работа с пинами средствами Wiring
a9964ed2-3042-4342-a978-527d7df7914b
cns.Контроллер
hd.name
EN
5b614dbe-f45e-4597-8367-2be790b1313f
a1b6158d-ea16-4d89-b6fd-eaa9daae2738
run
0775ce4d-214c-44f0-9841-79ae9f78b724
c9a0b14d-6a2b-4c25-a6ca-e36192892164
5ec55c7d-967e-4c8e-8ee2-09bfbf9e7e51
03.Head.name
RT_HW_Base.printArchBoard(); run=EN; //--Вывод наименований и кодов платформы и контроллера;
99
#include
"RT_HW_BASE.h"
code
13de2dae-74c1-425f-8586-1e58053b0b72
a89aab37-ff7c-43b6-a64d-0a246e0f7874
4b5409f9-a8cf-45f3-b524-aafe5ddce41b
04.cns.Контроллер:Вывод основных параметров контроллера
Вывод основных параметров контроллера.
Количество выводимых параметров зависит от параметра "КОД УПРАВЛЕНИЯ ВЫВОДОМ"
=0 - ничего не выводится;
=1 - вывод наименования контроллера, его архитектуры, номе версии библиотеки RT_HW_BASE.h;
=2 - дополнительно выводятся:
F_CPU - частота процессора в мГц;
Vcc - напряжение питания;
control - номер контрольного пина;
led - номер светодиода на плате LED_BUILTIN);
ROM,RAM,EEPROM(если есть),RTC(память RTC если есть),EXT_RAM(внешняя память если есть)
- размер памяти в кБ. Для RTC размер памяти в байтах.
=3 - SYS(системная разрядность),ADC,PWM,DAC,TCH(только для ESP32) -разрядность устройств;
ADC->drift,null - допустимый дрейф показаний и нуля в ед.АЦП;
SYS->max - максимальное значение для выбранной системной разрядности;
=4 - Параметры интерфейсов i2c,SPI,UART,CAN;
----------------------------------------------------------------------------------------
ecoins@mail.ru 05.12.20г.
953
if(EN) {
if(bitRead(code,0)) {RT_HW_Base.printNameBoard(); RT_HW_Base.printBlank(80,'-','Y');}
if(bitRead(code,1)) {RT_HW_Base.printParamBoard(); RT_HW_Base.printBlank(80,'-','Y');}
if(bitRead(code,2)) {RT_HW_Base.printDepthBoard(); RT_HW_Base.printBlank(80,'-','Y');}
if(bitRead(code,3)) {RT_HW_Base.printParamWire(); RT_HW_Base.printBlank(80,'-','Y');}
if(bitRead(code,4)) {RT_HW_Base.printParamSPI(); RT_HW_Base.printBlank(80,'-','Y');}
if(bitRead(code,5)) {RT_HW_Base.printParamUART(); RT_HW_Base.printBlank(80,'-','Y');}
if(bitRead(code,6)) {RT_HW_Base.printParamCAN(); RT_HW_Base.printBlank(80,'-','Y');}
if(bitRead(code,7)) {RT_HW_Base.printParamBTH(); RT_HW_Base.printBlank(80,'-','Y');}
if(bitRead(code,8)) {RT_HW_Base.printParamETH(); RT_HW_Base.printBlank(80,'-','Y');}
if(bitRead(code,9)) {RT_HW_Base.printParamWFI(); RT_HW_Base.printBlank(80,'-','Y');}
} run=EN; //--Вывод параметров контроллера;
948
#include
"RT_HW_BASE.h"
56f2822f-b92e-468a-a209-9f449fb49cfa
Вывод основных параметров контроллера.
Вывод параметров определется битами входного параметра code:
bit0 - вывод наименования контроллера, его архитектуры, номе версии библиотеки RT_HW_BASE.h;
bit1 - дополнительно выводятся: F_CPU - частота процессора в мГц; Vcc - напряжение питания;
control - номер контрольного пина; led - номер пина светодиода на плате LED_BUILTIN);
ROM,RAM,EEPROM(если есть),RTC(память RTC если есть),EXT_RAM(внешняя память если есть)
- размер памяти в кБ. Для RTC размер памяти в байтах.
bit2 - SYS(системная разрядность),ADC,PWM,DAC,TCH(только для ESP32) -разрядность устройств;
ADC->drift,null - допустимый дрейф показаний и нуля в ед.АЦП;
SYS->max - максимальное значение для выбранной системной разрядности;
bit3 - Наименования пинов (ESP8266,ESP32);
bit4 - Параметры интерфейсов i2c;
bit5 - Параметры интерфейсов SPI;
bit6 - Параметры интерфейсов UART;
bit7 - Параметры интерфейса CAN;
bit8 - Параметры интерфейса BlueTooth(ESP32);
bit9 - Параметры интерфейса Ethernet;
bit10 - Параметры интерфейса Wi-Fi (ESP8266,ESP32);
----------------------------------------------------------------------------------------
ecoins@mail.ru 05.12.20г.
1195
if(EN) {
if(bitRead(code,0)) {RT_HW_Base.printNameBoard(); }
if(bitRead(code,1)) {RT_HW_Base.printParamBoard(); }
if(bitRead(code,2)) {RT_HW_Base.printDepthBoard(); }
if(bitRead(code,3)) {RT_HW_Base.printNamePins(); } //--Вывод наименования пинов (ESP8266,ESP32);
//-----------------------------------------------------------------------------------
if(bitRead(code,4)) {RT_HW_Base.printParamWire(); }
if(bitRead(code,5)) {RT_HW_Base.printParamSPI(); }
if(bitRead(code,6)) {RT_HW_Base.printParamUART(); }
if(bitRead(code,7)) {RT_HW_Base.printParamCAN(); }
//-----------------------------------------------------------------------------------
if(bitRead(code,8)) {RT_HW_Base.printParamBTH(); }
if(bitRead(code,9)) {RT_HW_Base.printParamETH(); }
if(bitRead(code,10)) {RT_HW_Base.printParamWFI(); }
//-----------------------------------------------------------------------------------
} run=EN; //--Вывод параметров контроллера;
965
cns.Текст
hd.line
EN
8eb7ebf4-335c-4056-9a11-f73165b6925e
feda4f05-ce46-48fd-aad4-5594bf0bdbf9
run
033da39f-c717-4bf3-95a2-50acce3d6568
89f12b63-c530-41cb-a62f-010c7171acf6
fb010e7c-03f5-43f6-a244-f75b3f91ef8e
10.hd.line
ЗАГОЛОВОК
~
79172951-2204-43c1-9e00-33b205444db9
6cd4fab6-46b2-4078-8535-a30d6bc56c29
ДЛИНА
80
51188aa1-c06f-4eb1-9377-327d868106e9
6efdde9d-c07e-4e0f-8dae-1320b9c7e8fe
ЗАПОЛНИТЕЛЬ
f3fae683-145d-47c7-ae9d-b3a66475d1d5
=
e4231f03-e15b-4e86-87b0-34fcdd45f77a
if(EN) {RT_HW_Base.printTextPGM(text_PGM, ДЛИНА ,'C', ЗАПОЛНИТЕЛЬ , 'Y');} run=EN;
84
#include
"RT_HW_BASE.h"
= ЗАГОЛОВОК ;
RT_HW_PGM_STR(text_PGM)
8bf39c8b-646d-461f-b964-c83410ae8961
02.cns.Текст
Вывод линии с заголовком из PROGMEM
35
ЗАГОЛОВОК
~
79172951-2204-43c1-9e00-33b205444db9
Test board
ДЛИНА
51188aa1-c06f-4eb1-9377-327d868106e9
ЗАПОЛНИТЕЛЬ
f3fae683-145d-47c7-ae9d-b3a66475d1d5
=
=
//---Вывод линии с заголовком из PROGMEM--------------------------------
if(EN) {RT_HW_Base.printTextPGM(text0, ДЛИНА ,'C', ЗАПОЛНИТЕЛЬ ,'Y');} run=EN;
#include
"RT_HW_BASE.h"
text0
[] PROGMEM= ЗАГОЛОВОК ;
const char
const char* textN=text0;
cns.Пины
print.val
cns.int16x4
EN
7394222c-c033-4a52-9579-4282aa8ac84a
85940b6d-c0ba-4a79-bda7-f81f4edc4d3b
v1
a1e0e543-de38-4f3f-a0d2-bab62687c1ac
9a9a3195-2fd0-43bf-8174-6e24c88da70a
v2
eed7ff97-186d-4394-981d-b80ba074df54
81f0c9ec-c8e8-49d2-afdd-289b2022d14b
v3
204bb36a-cae8-476c-8c31-725093bf0fd7
b979f0d8-828e-4faa-abbf-017c0e38b525
v4
05653371-d941-4ed3-b579-52c3fd470d36
2aa82d26-75f4-40aa-ac11-7e4da2baff04
qnt
6134320b-4256-4c82-ac24-1039a07f2adb
20ab99ce-0348-4c90-9636-a83085bd25c7
5b922921-70d4-4e0f-be26-95afe695ff02
1.cns.int16x4
ЗАГОЛОВОК
~
После символа ~ ЗАГОЛОВОК не выводится
df56d2bf-c936-45de-9ad6-d57811cd4a86
N
362a8359-c923-4d95-90e7-9647e90125c4
if(EN){RT_HW_Base.PrintInt16x4(id, text, qnt, v1, v2, v3, v4);}
63
id.dir=0;
9
#include
"RT_HW_BASE.h"
id
;
RT_HW_PRINT_PARAM_INT16x4_ID
text
[] PROGMEM= ЗАГОЛОВОК ;
const char
val
c529d13f-a663-4eea-97b5-6fbc947cd802
5b1058b5-ad07-4dce-9aca-dcc2da088437
mess.intx4
run
b3ee6c08-b4c4-4df5-bd69-3ecdc4b9b1d0
63b9f7bc-43be-4654-b966-62e5335b5049
3ae9fefa-0687-4826-81cd-3794b23ed0ee
5.mess.intx4
//---Вывод на консоль по изменению до 4-х integer значений в форматах:
D - десятичное, с добавлением впереди пробела, если длина выводимого поля меньше 2;
T - время всегда из двух знаков;
I - int16_t;
U -uint16_t;
H -int16_t в формате 4-х значного HEX-числа;
h -int8_t в формате w-х значного HEX-числа;
C -int8_t в формате char;
1 -как float с 1-им десятичным знаком;
2 -как float с 2-мя десятичными знаками;
--------------------------------------------------------------------------------------------------------------------------------------------
ecoins@mail.ru 4.10.2020
585
КОЛ_ВО_ВЫВОДИМЫХ_ЗНАЧЕНИЙ
4
44859a9e-44e1-4b09-8571-fe872c279669
7a9177b9-677f-4c0c-88cb-f67b4e5a2285
ВЫВОД_В_КАЖДОМ_ЦИКЛЕ
=0 - вывод только по изменениям; =1 - вывод в каждом цикле;
7b811760-8142-496a-b97c-52056681c023
087ba2b6-028e-4422-8080-b32ad8dd20ff
ТИП_ВЫВОДА
D,T,I,U,H,h,C,1,2
a9e8d541-6edd-42d8-bde8-df309b66adef
I
9b47178b-0ea5-4f79-923d-1c243711df30
//---Вывод на консоль по изменению 4-х integer значений
if(EN){if( ВЫВОД_В_КАЖДОМ_ЦИКЛЕ ) {run=1;} else {checkVal();}
if (run) {run=0; Serial.print(F( ЗАГОЛОВОК )); RT_HW_Base.printChar(':',' '); RT_HW_Base.printValx4( КОЛ_ВО_ВЫВОДИМЫХ_ЗНАЧЕНИЙ ,v1, v2, v3, v4);}}; run=EN;
284
#include
"RT_HW_BASE.h"
run
=1;
uint8_t
buff
[4];
uint16_t
if(v1!=buff[0]) {buff[0]=v1; run=1;}
if(v2!=buff[1]) {buff[1]=v2; run=1;}
if(v3!=buff[2]) {buff[2]=v3; run=1;}
if(v4!=buff[3]) {buff[3]=v4; run=1;}
151
void
checkVal
76956727-48be-477d-aeee-ae058a2676af
12.print.val
D,C,S,T,I,U,H,B,1,2,3,4
РАЗМЕР_ПОЛЯ_ПЕРЕМЕННОЙ
0
960b0e3f-2c87-4103-bbfd-7687d1c1c4f7
634ec5f3-2ef1-4151-89fb-f72f49ab3cb7
СУФФИКС
~ - нет суффикса; s -пробел; Y-перевод строки; любой другой символ - выводится этот символ;
63d343af-c1e0-476d-96c4-cccc467775fa
Y
403bd6f8-c4c4-4746-9f6b-8da5dfc00433
//---Форматированный вывод на консоль переменной (D,C,S,T,I,U,H,B,1,2,3,4);
if(EN){if( ВЫВОД_В_КАЖДОМ_ЦИКЛЕ ) {ok=1;} else {if(ago!=val) {ago=val; ok=1;}}
if (ok) {ok=0; if( ЗАГОЛОВОК !="~") {Serial.print(F( ЗАГОЛОВОК ));}
RT_HW_Base.printVal( ТИП_ВЫВОДА , РАЗМЕР_ПОЛЯ_ПЕРЕМЕННОЙ , СУФФИКС , val);}}; run=EN;
335
#include
"RT_HW_BASE.h"
ok
=1;
uint8_t
ago
;
int32_t
if(val!=buff[0]) {buff[0]=v1; ok=1;}
if(v2!=buff[1]) {buff[1]=v2; ok=1;}
if(v3!=buff[2]) {buff[2]=v3; ok=1;}
if(v4!=buff[3]) {buff[3]=v4; ok=1;}
148
v1
print.v8x4
v2
d593eb55-c71f-43a5-a48a-a8545244cca7
d35e41a5-7ded-431d-990a-2d50489bb14f
v3
6c4466dd-bdab-4ee2-a053-437ba9939608
6cbd67d0-e7f8-487f-a0d1-8af7e5a369e3
v4
efd063bd-ab6a-455f-a58f-77caead0208d
707eb7b3-97c6-46c9-b4d5-a1d6cdb6377e
7de61bd1-126e-4ea0-92ea-709c47b72f3b
5.print.v8x4
/**************************************************************************************************
Форматированный вывода int16_t c форматированным заголовком.(
1.Перед переменной выводится заголовок с форматом, определяемые параметрами пользователя:
1.1.ЗАГОЛОВОК - текст UTF-8(в т.ч.русский шрифт), который размещается в памяти PROGMEM.
Если первый символ текста `~', то вывод заголовка не осуществляется.
1.2.ДЛИНА_ЗАГОЛОВКА - длина выводимого поля вместе текстом ЗАГОЛОВОК.
Выводимый текст обрезается сзади, или дополняется сзади пробелами до этой длины.
Если ДЛИНА_ЗАГОЛОВКА=0, текст ЗАГОЛОВКА выводится как есть.
1.3.СУФФИКС_ЗАГОЛОВКА - действие после вывода поля с ЗАГОЛОВКОМа:
'~'-ничего не выводится; 's'-выводится пробел; 'Y'-выполняется перевод строки;
'любой другой символ'-выводится этот символ.
2.После заголовка выводится переменная форматом, определяемые параметрами пользователя:
2.1.ФОРМАТ_ПЕРЕМЕННОЙ - (D,C,S,T,I,U,H,B,1,2,3,4):
'D' - добавление впереди пробела, если число <9;
'C' - преобразование числа в символ;
'S' - вывод числа как есть (Serial.print(val);
'T' - вывод числа с добавлением нулей до размера поля sz;
'I' - вывод числа со знаком с добавлением пробелов до размера поля sz;
'U' - вывод числа без знака с добавлением пробелов до размера поля sz;
'H' - вывод HEX числа с префиксом 0x и добав.нулей до размера поля sz;
'B' - вывод BIN числа с префиксом b и добав.нулей до размера поля sz;
'1' - вывод числа/10 в формате float c 1-м знаком после запятой;
'2' - вывод числа/100 в формате float c 2-мя знаками после запятой;
'3' - вывод числа/1000 в формате float c 3-мя знаком после запятой;
'4' - вывод числа/10000 в формате float c 4-мя знаками после запятой;
2.2.РАЗМЕР_ПОЛЯ_ПЕРЕМЕННОЙ - размер выводимого поля вместе с переменной.
Применяется в форматах T,I,U,H,B. Если РАЗМЕР_ПОЛЯ_ПЕРЕМЕННОЙ =0,
то устанавливаются следующие значения: 'T'->2, 'I'->6, 'U'->5, 'H'->4, 'B'->8.
2.3.СУФФИКС_ПЕРЕМЕННОЙ - суффикс в конце вывода переменной.
'~'-ничего не выводится; 's'-выводится пробел; 'Y'-выполняется перевод строки;
'любой другой символ' - выводится этот символ.
2.4. val - переменная формата int32.
При форматах вывода 'U','T','H','B' выполняется
внутреннее преобразование входной переменной в uint32_t.
3.Разрешение вывода регулируется флагами консоли, параметром пользователя, внешним разрешением EN.
3.1.флаг head - устанавливается консолью после инициализации UART.
Это особенно важно для контроллеров DUE,STM32 без аппаратного чипа UART-USB.
Флаг head сбрасывается через программную установку фланга reset,
или самостоятельно через 10 циклов loop().
3.2.флаг mess - уставливается после установки и сброса флага head.
3.3.параметр пользователя УСЛОВИЕ ВЫВОДА:
'C'-вывод осуществляется по флагу mess при первом вхождении в блок,
далее по изменению значения переменной.
'P'-вывод осуществляется по флагу mess при каждом вхождении в блок.
'H'-вывод осуществляется по флагу head.
3.4.вывод осуществляется только при разрешение EN=1.
Вход EN можно использовать для циклического вывода при УСЛОВИЕ ВЫВОДА='P', для чего
на вход EN периодически подается "Событие" (HIGH в течении одного цикла loop()).
---------------------------------------------------------------------------------------------------
ecoins@mail.ru 19.11.2020
***************************************************************************************************/
3492
~
val Привет=
ДЛИНА_ЗАГОЛОВКА
Если =0, то вывод по длине заголовка, иначе справа добавляются пробелы до указанной длины.
01461562-afaa-4853-bd9d-1592b71aeaa5
ff7a2294-0493-4178-a0b3-0b61b86abfb1
СУФФИКС_ЗАГОЛОВКА
'~' - суффикс не выводится;'s' - выводится пробел; любой другой символ - выводится это символ.
6653d0df-9b5c-4dcb-abe6-47000b4beb08
=
=
22328e82-fa58-4366-b01a-424426b84bd3
ФОРМАТ_ПЕРЕМЕННОЙ
1
S
СУФФИКС_ПЕРЕМЕННОЙ
Y
КОЛ_ВА ВЫВОДИМЫХ ПЕРЕМЕННЫХ
a1942258-9447-4a9d-a87a-ff64f15aada7
39d4a4fc-dac5-42fd-9b42-4b1302c273d8
УСЛОВИЯ_ВЫВОДА
H,P,C
aece6d49-a1f4-4f22-a349-9be5f671d070
H
C
bdc02a12-c31f-42ca-a84f-2b150fd56a6f
//---Форматированный вывод на консоль жо 4-х переменных int8_t (D,C,S,T,I,U,H,B,1,2,3,4);
if(EN){ if(( УСЛОВИЯ_ВЫВОДА == 'H') && RT_HW_Base.console.head) {ok=2;};
if(( УСЛОВИЯ_ВЫВОДА == 'P') && RT_HW_Base.console.mess) {ok=2;};
if(( УСЛОВИЯ_ВЫВОДА == 'C') && RT_HW_Base.console.mess) {if(ok=1) {ok=2;} if( (a1!=v1) || (a2!=v2) || (a3!=v3) || (a4!=v4)) {a1=v1; a2=v2; a3=v3; a4=v4; ok=2;} }
if (ok==2) {ok=0; RT_HW_Base.printTextPGM( txtHead, ДЛИНА_ЗАГОЛОВКА,'L', СУФФИКС_ЗАГОЛОВКА );
RT_HW_Base.print_v8 ( ФОРМАТ_ПЕРЕМЕННОЙ , РАЗМЕР_ПОЛЯ_ПЕРЕМЕННОЙ , СУФФИКС_ПЕРЕМЕННОЙ , КОЛ_ВА ВЫВОДИМЫХ ПЕРЕМЕННЫХ , (int8_t)v1, (int8_t)v2, (int8_t)v3, (int8_t)v4);}
}; run=EN;
683
#include
"RT_HW_BASE.h"
txtHead
[] PROGMEM= ЗАГОЛОВОК ;
const char
ok
=1;
uint8_t
a1
;
int8_t
a2
;
int8_t
a3
;
int8_t
a4
;
int8_t
bad24c97-fe5d-4cd4-bb1e-6c6293213952
06.cns.Пины
Вывод наименований 4-х пинов (для ESP8266 и STM32 в текстовом виде).
---------------------------------------------------------------------------------------------------
ecoins@mail.ru 05.12.20г.
200
ЗАГОЛОВОК
~
df56d2bf-c936-45de-9ad6-d57811cd4a86
control,led_builtin
N
ДЛИНА_ЗАГОЛОВКА
40
Если =0, то вывод по длине заголовка, иначе справа добавляются пробелы до указанной длины.
01461562-afaa-4853-bd9d-1592b71aeaa5
КОЛИЧЕСТВО ВЫВОДИМЫХ ПЕРЕМЕННЫХ
a1942258-9447-4a9d-a87a-ff64f15aada7
2
//---Вывод наименований 4-х пинов (для ESP8266 и STM32 в текстовом виде).
if(EN && RT_HW_Base.checkPinx4( КОЛИЧЕСТВО ВЫВОДИМЫХ ПЕРЕМЕННЫХ , v1, v2, v3, v4)){
RT_HW_Base.printTextPGM( txtHead, ДЛИНА_ЗАГОЛОВКА ,'L',' ',':');
RT_HW_Base.printPinx4( КОЛИЧЕСТВО ВЫВОДИМЫХ ПЕРЕМЕННЫХ , v1,v2,v3,v4);
}; run=EN;
306
#include
"RT_HW_BASE.h"
txtHead
[] PROGMEM= ЗАГОЛОВОК ;
const char
cns.Линия
hd.line
EN
8eb7ebf4-335c-4056-9a11-f73165b6925e
feda4f05-ce46-48fd-aad4-5594bf0bdbf9
run
033da39f-c717-4bf3-95a2-50acce3d6568
89f12b63-c530-41cb-a62f-010c7171acf6
fb010e7c-03f5-43f6-a244-f75b3f91ef8e
10.hd.line
ЗАГОЛОВОК
~
79172951-2204-43c1-9e00-33b205444db9
6cd4fab6-46b2-4078-8535-a30d6bc56c29
ДЛИНА
51188aa1-c06f-4eb1-9377-327d868106e9
6efdde9d-c07e-4e0f-8dae-1320b9c7e8fe
ЗАПОЛНИТЕЛЬ
f3fae683-145d-47c7-ae9d-b3a66475d1d5
=
e4231f03-e15b-4e86-87b0-34fcdd45f77a
if(EN) {RT_HW_Base.printTextPGM(text_PGM, ДЛИНА ,'C', ЗАПОЛНИТЕЛЬ , 'Y');} run=EN;
#include
"RT_HW_BASE.h"
= ЗАГОЛОВОК ;
RT_HW_PGM_STR(text_PGM)
f7203e19-d3b4-443d-9a7c-697a62cd3d1c
03.cns.Линия:Вывод горизонтальной линии
Вывод на консоль разделительной линии
37
ДЛИНА
-
if(EN) {RT_HW_Base.printBlank( ДЛИНА , ЗАПОЛНИТЕЛЬ ,'Y');} run=EN; //--Вывод на консоль разделительной линии
108
#include
"RT_HW_BASE.h"
cns.Завершение
RT.reset.head
EN
8611039d-ebf5-4edc-b689-548dbc784532
15868df9-4a97-423f-8df1-ca2b4370e2af
2e0244ea-124e-4316-b3aa-6d2d34c1bfca
RT.reset.head - сброс разрешения вывода заголовка
Вспомогательный блок для работы с консолью.
Служит для реализации однократного вывода сообщений на консоль
до вывода в других платах сообщений для вывода на консоль.
Блок устанавливает флаг разрешения RT_HW_Base.console.resetHead
после готовности используемого UAR и входа EN=1;
Это вызывает сброс флага RT_HW_Base.console.head (разрешение вывода заголовков)
и установку RT_HW_Base.console.mess(разрешение вывода текущих сообщений).
----------------------------------------------------------------------------------------
ecoins@mail.ru 05.12.20
584
if(EN) {RT_HW_Base.console.resetHead=1;} //--Установка флага "Сброс вывода заголовков"
88
#include
"RT_HW_BASE.h"
c26afe47-8400-4eac-bfc0-de147639293e
01.cns.Завершение:Завершение одноразового вывода на консоль
cns.Массивы
RT.print.ARR
hd.line
EN
8eb7ebf4-335c-4056-9a11-f73165b6925e
feda4f05-ce46-48fd-aad4-5594bf0bdbf9
run
033da39f-c717-4bf3-95a2-50acce3d6568
89f12b63-c530-41cb-a62f-010c7171acf6
fb010e7c-03f5-43f6-a244-f75b3f91ef8e
10.hd.line
ЗАГОЛОВОК
~
79172951-2204-43c1-9e00-33b205444db9
6cd4fab6-46b2-4078-8535-a30d6bc56c29
ДЛИНА
51188aa1-c06f-4eb1-9377-327d868106e9
6efdde9d-c07e-4e0f-8dae-1320b9c7e8fe
ЗАПОЛНИТЕЛЬ
f3fae683-145d-47c7-ae9d-b3a66475d1d5
=
e4231f03-e15b-4e86-87b0-34fcdd45f77a
if(EN) {RT_HW_Base.printTextPGM(text_PGM, ДЛИНА ,'C', ЗАПОЛНИТЕЛЬ , 'Y');} run=EN;
#include
"RT_HW_BASE.h"
= ЗАГОЛОВОК ;
RT_HW_PGM_STR(text_PGM)
code
b4ee73c3-718f-4469-a966-0a20645607a3
cb24f977-893c-45ea-8748-1f9f5aebeb0e
23cc0db9-a450-4e14-8107-d2f57b04b8e8
06.RT.print.ARR
Вывод линии с заголовком из PROGMEM
ЗАГОЛОВОК
~
79172951-2204-43c1-9e00-33b205444db9
Test board
ДЛИНА
51188aa1-c06f-4eb1-9377-327d868106e9
ЗАПОЛНИТЕЛЬ
f3fae683-145d-47c7-ae9d-b3a66475d1d5
=
=
if(EN) {
RT_HW_Base.printTextPGM(textN, ДЛИНА ,'C', ЗАПОЛНИТЕЛЬ ,'Y');
if(bitRead(code,0)) {RT_HW_Base.printSysParam('S'); RT_HW_Base.printBlank(80,'-','Y');} //--Вывод параметров массива системных параметров;
if(bitRead(code,1)) {RT_HW_Base.printSysPins ('P'); RT_HW_Base.printBlank(80,'-','Y');} //--Вывод на консоль параметров контроллера;
if(bitRead(code,2)) {RT_HW_Base.printLinkPins ('P'); RT_HW_Base.printBlank(80,'-','Y');} //--Вывод на консоль параметров контроллера;
if(bitRead(code,3)) {RT_HW_Base.printNetParam ('U'); RT_HW_Base.printBlank(80,'-','Y');} //--Вывод на консоль параметров контроллера;
if(bitRead(code,4)) {RT_HW_Base.printPinsBoard('P'); RT_HW_Base.printBlank(80,'-','Y');} //--Вывод пинов контроллера;
if(bitRead(code,5)) {RT_HW_Base.printPinsTest ('P'); RT_HW_Base.printBlank(80,'-','Y'); //--Вывод тестовых пинов;
if(bitRead(code,6)) {RT_HW_Base.printAdrTest ('S'); RT_HW_Base.printBlank(80,'-','Y'); //--Вывод тестовых адресов;
}
run=EN;
980
#include
"RT_HW_BASE.h"
text0
[] PROGMEM= ЗАГОЛОВОК ;
const char
textN
=text0;
const char*
dcd4cbd8-1b6e-4746-af6a-ef23e1d43487
05.cns.Массивы
Вывод массивов из PROGMEM
Вывод массивов определется битами входного параметра code^
bit0 - массив системных пинов;
bit1 - массивы интерфейсных пинов;
bit2 - массивы сетевых пинов;
bit4 - массивы пинов контроллера;
bit5 - массивы тестовых пинов;
bit6 - массив тестовых адресов I2c;
----------------------------------------------------------------------------------------
ecoins@mail.ru 05.12.20г.
405
//-----Вывод массивов с параметрами--------------------------------------------
if(EN) {
if(bitRead(code,0)) {RT_HW_Base.printSysParam('S'); } //--Системные параметры;
if(bitRead(code,1)) {RT_HW_Base.printSysPins ('P'); } //--Системные пины;
if(bitRead(code,2)) {RT_HW_Base.printLinkPins ('P'); } //--Интерфейсные пины;
if(bitRead(code,3)) {RT_HW_Base.printNetParam ('U'); } //--Сетевые параметры;
//----------------------------------------------------------------------------------
if(bitRead(code,4)) {RT_HW_Base.printPinsBoard('P'); } //--Вывод пинов контроллера;
if(bitRead(code,5)) {RT_HW_Base.printPinsTest ('P'); } //--Вывод тестовых пинов;
if(bitRead(code,6)) {RT_HW_Base.printAdrTest ('S'); } //--Адреса устройств (i2c и др.);
//-----------------------------------------------------------------------------------
} run=EN;
843
#include
"RT_HW_BASE.h"
cns.Пин->имя
hd.line
EN
8eb7ebf4-335c-4056-9a11-f73165b6925e
feda4f05-ce46-48fd-aad4-5594bf0bdbf9
run
033da39f-c717-4bf3-95a2-50acce3d6568
89f12b63-c530-41cb-a62f-010c7171acf6
fb010e7c-03f5-43f6-a244-f75b3f91ef8e
10.hd.line
ЗАГОЛОВОК
~
79172951-2204-43c1-9e00-33b205444db9
6cd4fab6-46b2-4078-8535-a30d6bc56c29
ДЛИНА
51188aa1-c06f-4eb1-9377-327d868106e9
6efdde9d-c07e-4e0f-8dae-1320b9c7e8fe
ЗАПОЛНИТЕЛЬ
f3fae683-145d-47c7-ae9d-b3a66475d1d5
=
e4231f03-e15b-4e86-87b0-34fcdd45f77a
if(EN) {RT_HW_Base.printTextPGM(text_PGM, ДЛИНА ,'C', ЗАПОЛНИТЕЛЬ , 'Y');} run=EN;
#include
"RT_HW_BASE.h"
= ЗАГОЛОВОК ;
RT_HW_PGM_STR(text_PGM)
31ccab9f-8fda-4ea9-a5ed-6ecfa6f2267c
10.cns.Пин->имя
Вывод линии с заголовком из PROGMEM
if(EN) {RT_HW_Base.printNamePins();} run=EN;
44
#include
"RT_HW_BASE.h"
cns.valx4
cns.int16x4
EN
7394222c-c033-4a52-9579-4282aa8ac84a
85940b6d-c0ba-4a79-bda7-f81f4edc4d3b
v1
a1e0e543-de38-4f3f-a0d2-bab62687c1ac
9a9a3195-2fd0-43bf-8174-6e24c88da70a
v2
eed7ff97-186d-4394-981d-b80ba074df54
81f0c9ec-c8e8-49d2-afdd-289b2022d14b
v3
204bb36a-cae8-476c-8c31-725093bf0fd7
b979f0d8-828e-4faa-abbf-017c0e38b525
v4
05653371-d941-4ed3-b579-52c3fd470d36
2aa82d26-75f4-40aa-ac11-7e4da2baff04
qnt
6134320b-4256-4c82-ac24-1039a07f2adb
20ab99ce-0348-4c90-9636-a83085bd25c7
5b922921-70d4-4e0f-be26-95afe695ff02
1.cns.int16x4
ЗАГОЛОВОК
~
После символа ~ ЗАГОЛОВОК не выводится
df56d2bf-c936-45de-9ad6-d57811cd4a86
N
362a8359-c923-4d95-90e7-9647e90125c4
if(EN){RT_HW_Base.PrintInt16x4(id, text, qnt, v1, v2, v3, v4);}
id.dir=0;
#include
"RT_HW_BASE.h"
id
;
RT_HW_PRINT_PARAM_INT16x4_ID
text
[] PROGMEM= ЗАГОЛОВОК ;
const char
mess.intx4
run
b3ee6c08-b4c4-4df5-bd69-3ecdc4b9b1d0
63b9f7bc-43be-4654-b966-62e5335b5049
3ae9fefa-0687-4826-81cd-3794b23ed0ee
5.mess.intx4
//---Вывод на консоль по изменению до 4-х integer значений в форматах:
D - десятичное, с добавлением впереди пробела, если длина выводимого поля меньше 2;
T - время всегда из двух знаков;
I - int16_t;
U -uint16_t;
H -int16_t в формате 4-х значного HEX-числа;
h -int8_t в формате w-х значного HEX-числа;
C -int8_t в формате char;
1 -как float с 1-им десятичным знаком;
2 -как float с 2-мя десятичными знаками;
--------------------------------------------------------------------------------------------------------------------------------------------
ecoins@mail.ru 4.10.2020
КОЛ_ВО_ВЫВОДИМЫХ_ЗНАЧЕНИЙ
44859a9e-44e1-4b09-8571-fe872c279669
7a9177b9-677f-4c0c-88cb-f67b4e5a2285
ВЫВОД_В_КАЖДОМ_ЦИКЛЕ
=0 - вывод только по изменениям; =1 - вывод в каждом цикле;
7b811760-8142-496a-b97c-52056681c023
087ba2b6-028e-4422-8080-b32ad8dd20ff
ТИП_ВЫВОДА
D,T,I,U,H,h,C,1,2
a9e8d541-6edd-42d8-bde8-df309b66adef
I
9b47178b-0ea5-4f79-923d-1c243711df30
//---Вывод на консоль по изменению 4-х integer значений
if(EN){if( ВЫВОД_В_КАЖДОМ_ЦИКЛЕ ) {run=1;} else {checkVal();}
if (run) {run=0; Serial.print(F( ЗАГОЛОВОК )); RT_HW_Base.printChar(':',' '); RT_HW_Base.printValx4( КОЛ_ВО_ВЫВОДИМЫХ_ЗНАЧЕНИЙ ,v1, v2, v3, v4);}}; run=EN;
#include
"RT_HW_BASE.h"
run
=1;
uint8_t
buff
[4];
uint16_t
if(v1!=buff[0]) {buff[0]=v1; run=1;}
if(v2!=buff[1]) {buff[1]=v2; run=1;}
if(v3!=buff[2]) {buff[2]=v3; run=1;}
if(v4!=buff[3]) {buff[3]=v4; run=1;}
void
checkVal
c4afb287-c49f-4e2b-8ca8-96424e06525b
11.cns.valx4
ЗАГОЛОВОК
~
После символа ~ ЗАГОЛОВОК не выводится
df56d2bf-c936-45de-9ad6-d57811cd4a86
N
ДЛИНА ЗАГОЛОВКА
7b811760-8142-496a-b97c-52056681c023
ТИП_ВЫВОДА
D,C,S,T,I,U,H,B,1,2,3,4
a9e8d541-6edd-42d8-bde8-df309b66adef
D
D,T,I,U,H,h,C,1,2
КОЛ_ВО_ВЫВОДИМЫХ_ЗНАЧЕНИЙ
44859a9e-44e1-4b09-8571-fe872c279669
//---Вывод на консоль по изменению 4-х integer значений
if(EN){ RT_HW_Base.printTextPGM(textHead, ДЛИНА ЗАГОЛОВКА ,'L',' ',':');
RT_HW_Base.print_v8( ТИП_ВЫВОДА , 0, 'Y' , КОЛ_ВО_ВЫВОДИМЫХ_ЗНАЧЕНИЙ ,v1, v2, v3, v4);}; run=EN;
231
#include
"RT_HW_BASE.h"
textHead
[] PROGMEM= ЗАГОЛОВОК ;
const char
cns.scan.i2c
EN
20f562e8-6713-40da-a09b-373653aacb25
4e2dd8e0-5b9c-47d9-812f-e864c55a1ad6
cb1e3ccd-1dcd-43a9-add5-b3b4c45f132b
08.cns.scan.i2c
run
07c573c3-5ebb-4249-8381-d04e740239af
59fe8ea7-6370-4055-8c63-a6fe4de568f1
ba7e1798-586c-4d7d-b1fd-7be2d50b90b4
if(EN){
RT_HW_Base.printScanWire(0); //--Вывод результатов сканирования шины i2c;
RT_HW_Base.printScanWire(1); //--Вывод результатов сканирования шины i2c;
RT_HW_Base.printScanWire(2); //--Вывод результатов сканирования шины i2c;
}run=EN;
295
62910d6a-7b8b-4ead-87c1-38464b248798
if(EN){
RT_HW_Base.scanDeviceWire(0); //--Вывод результатов сканирования шины i2c0;
RT_HW_Base.scanDeviceWire(1); //--Вывод результатов сканирования шины i2c1;
RT_HW_Base.scanDeviceWire(2); //--Вывод результатов сканирования шины i2c2;
}run=EN;
253
05.Одноразовый вывод на консоль
09a30685-adb8-4041-b801-e31e1bcfa438
Пины.dbg
pin.control
control
be912f0c-3b86-4ae9-9da8-7f9b566f4100
9cbcc87a-fca0-459a-ae4a-7a8fc07be48e
debug1
fb2dd702-3dc7-4377-969e-0272f0900eca
d4b63836-30d6-4d61-a366-0c5908b34312
debug2
8144e4c7-038e-4881-83f3-9d5d7c4d6fd7
92acde31-4e75-4510-b0a8-dcbf29b69630
debug3
1fe7b5fb-fb95-476b-a8b5-5c9d02ef094c
4cf0953e-e061-4d73-87e0-7f07f0da6905
472c3df2-e0aa-4442-a601-9053017263f4
pin.contol
control=RT_HW_Base.device.pin.control;
debug1=RT_HW_Base.device.pin.debug1;
debug2=RT_HW_Base.device.pin.debug2;
debug3=RT_HW_Base.device.pin.debug3;
149
#include
"RT_HW_BASE.h"
f802c221-0917-4fd1-8721-ff53177d46e8
02.Пины.dbg:Пины для отладки
debug1=RT_HW_Base.getIntPGM(RT_HW_PGM_PIN_DBG_ID,0);
debug2=RT_HW_Base.getIntPGM(RT_HW_PGM_PIN_DBG_ID,1);
debug3=RT_HW_Base.getIntPGM(RT_HW_PGM_PIN_DBG_ID,2);
158
Пины.sys
pin.control
control
be912f0c-3b86-4ae9-9da8-7f9b566f4100
9cbcc87a-fca0-459a-ae4a-7a8fc07be48e
debug1
fb2dd702-3dc7-4377-969e-0272f0900eca
d4b63836-30d6-4d61-a366-0c5908b34312
debug2
8144e4c7-038e-4881-83f3-9d5d7c4d6fd7
92acde31-4e75-4510-b0a8-dcbf29b69630
debug3
1fe7b5fb-fb95-476b-a8b5-5c9d02ef094c
4cf0953e-e061-4d73-87e0-7f07f0da6905
472c3df2-e0aa-4442-a601-9053017263f4
pin.contol
control=RT_HW_Base.device.pin.control;
debug1=RT_HW_Base.device.pin.debug1;
debug2=RT_HW_Base.device.pin.debug2;
debug3=RT_HW_Base.device.pin.debug3;
#include
"RT_HW_BASE.h"
Control
Контрольный пин для логического анализатора
Led
LED_BUILTIN - светодиод на модуле
d5ad7640-c2f4-4bc3-b1eb-80fde57f1022
01.Пины.sys:Пины контроль и led на плате
Номера тестового пина для контроля логическим анализатором
и пина со светодиодом на контроллере.
Значения берутся из библиотеки RT_HW_BASE.h индивидуально для каждого
из прописанного в библиотеке контроллеров.
Control=RT_HW_Base.device.pin.control;
Led=RT_HW_Base.device.pin.led;
69
Пины.inp
pin.control
control
be912f0c-3b86-4ae9-9da8-7f9b566f4100
9cbcc87a-fca0-459a-ae4a-7a8fc07be48e
debug1
fb2dd702-3dc7-4377-969e-0272f0900eca
d4b63836-30d6-4d61-a366-0c5908b34312
debug2
8144e4c7-038e-4881-83f3-9d5d7c4d6fd7
92acde31-4e75-4510-b0a8-dcbf29b69630
debug3
1fe7b5fb-fb95-476b-a8b5-5c9d02ef094c
4cf0953e-e061-4d73-87e0-7f07f0da6905
472c3df2-e0aa-4442-a601-9053017263f4
pin.contol
control=RT_HW_Base.device.pin.control;
debug1=RT_HW_Base.device.pin.debug1;
debug2=RT_HW_Base.device.pin.debug2;
debug3=RT_HW_Base.device.pin.debug3;
#include
"RT_HW_BASE.h"
adc1
Тестовый пин ШИМ 1
adc2
Тестовый пин ШИМ 2
butt1
butt2
d3bfd597-3a1b-443d-af2d-ce471e88e314
04.Пины.inp:Пины дискретных входов
adc1=RT_HW_Base.getIntPGM(RT_HW_PGM_PIN_INP_ID,0);
adc2=RT_HW_Base.getIntPGM(RT_HW_PGM_PIN_INP_ID,1);
butt1=RT_HW_Base.getIntPGM(RT_HW_PGM_PIN_INP_ID,2);
butt2=RT_HW_Base.getIntPGM(RT_HW_PGM_PIN_INP_ID,3);
205
Пины.out
pin.control
control
be912f0c-3b86-4ae9-9da8-7f9b566f4100
9cbcc87a-fca0-459a-ae4a-7a8fc07be48e
debug1
fb2dd702-3dc7-4377-969e-0272f0900eca
d4b63836-30d6-4d61-a366-0c5908b34312
debug2
8144e4c7-038e-4881-83f3-9d5d7c4d6fd7
92acde31-4e75-4510-b0a8-dcbf29b69630
debug3
1fe7b5fb-fb95-476b-a8b5-5c9d02ef094c
4cf0953e-e061-4d73-87e0-7f07f0da6905
472c3df2-e0aa-4442-a601-9053017263f4
pin.contol
control=RT_HW_Base.device.pin.control;
debug1=RT_HW_Base.device.pin.debug1;
debug2=RT_HW_Base.device.pin.debug2;
debug3=RT_HW_Base.device.pin.debug3;
#include
"RT_HW_BASE.h"
pwm1
Тестовый пин ШИМ 1
pwm2
Тестовый пин ШИМ 2
led
dev
ed7f5f07-c626-483e-be94-4790c94a9718
03.Пины.out:Пины дискретных выходов
Номера тестовых пинов для вывода.
Значения берутся из библиотеки RT_HW_BASE.h индивидуально для каждого
из прописанного в библиотеке контроллеров.
pwm1=RT_HW_Base.getIntPGM(RT_HW_PGM_PIN_OUT_ID,0);
pwm2=RT_HW_Base.getIntPGM(RT_HW_PGM_PIN_OUT_ID,1);
led=RT_HW_Base.getIntPGM(RT_HW_PGM_PIN_OUT_ID,2);
dev=RT_HW_Base.getIntPGM(RT_HW_PGM_PIN_OUT_ID,3);
201
Пины.tch
pin.control
control
be912f0c-3b86-4ae9-9da8-7f9b566f4100
9cbcc87a-fca0-459a-ae4a-7a8fc07be48e
debug1
fb2dd702-3dc7-4377-969e-0272f0900eca
d4b63836-30d6-4d61-a366-0c5908b34312
debug2
8144e4c7-038e-4881-83f3-9d5d7c4d6fd7
92acde31-4e75-4510-b0a8-dcbf29b69630
debug3
1fe7b5fb-fb95-476b-a8b5-5c9d02ef094c
4cf0953e-e061-4d73-87e0-7f07f0da6905
472c3df2-e0aa-4442-a601-9053017263f4
pin.contol
control=RT_HW_Base.device.pin.control;
debug1=RT_HW_Base.device.pin.debug1;
debug2=RT_HW_Base.device.pin.debug2;
debug3=RT_HW_Base.device.pin.debug3;
#include
"RT_HW_BASE.h"
tch1
tch2
13e54aa8-83f4-4a5f-8c09-27ba7e08c987
06.Пины.tch:Пины сенсорных входов(ESP32)
tch1=RT_HW_Base.getIntPGM(RT_HW_PGM_PIN_DCT_ID,2);
tch2=RT_HW_Base.getIntPGM(RT_HW_PGM_PIN_DCT_ID,3);
101
Пниы.dac
pin.control
control
be912f0c-3b86-4ae9-9da8-7f9b566f4100
9cbcc87a-fca0-459a-ae4a-7a8fc07be48e
debug1
fb2dd702-3dc7-4377-969e-0272f0900eca
d4b63836-30d6-4d61-a366-0c5908b34312
debug2
8144e4c7-038e-4881-83f3-9d5d7c4d6fd7
92acde31-4e75-4510-b0a8-dcbf29b69630
debug3
1fe7b5fb-fb95-476b-a8b5-5c9d02ef094c
4cf0953e-e061-4d73-87e0-7f07f0da6905
472c3df2-e0aa-4442-a601-9053017263f4
pin.contol
control=RT_HW_Base.device.pin.control;
debug1=RT_HW_Base.device.pin.debug1;
debug2=RT_HW_Base.device.pin.debug2;
debug3=RT_HW_Base.device.pin.debug3;
#include
"RT_HW_BASE.h"
dac1
Тестовый пин ШИМ 1
dac2
Тестовый пин ШИМ 2
d01cf04c-759e-4bb0-bc2d-139683983bfa
05.Пины.dac:Пины DAC
dac1=RT_HW_Base.getIntPGM(RT_HW_PGM_PIN_DCT_ID,0);
dac2=RT_HW_Base.getIntPGM(RT_HW_PGM_PIN_DCT_ID,1);
Пины.dev
pin.control
control
be912f0c-3b86-4ae9-9da8-7f9b566f4100
9cbcc87a-fca0-459a-ae4a-7a8fc07be48e
debug1
fb2dd702-3dc7-4377-969e-0272f0900eca
d4b63836-30d6-4d61-a366-0c5908b34312
debug2
8144e4c7-038e-4881-83f3-9d5d7c4d6fd7
92acde31-4e75-4510-b0a8-dcbf29b69630
debug3
1fe7b5fb-fb95-476b-a8b5-5c9d02ef094c
4cf0953e-e061-4d73-87e0-7f07f0da6905
472c3df2-e0aa-4442-a601-9053017263f4
pin.contol
control=RT_HW_Base.device.pin.control;
debug1=RT_HW_Base.device.pin.debug1;
debug2=RT_HW_Base.device.pin.debug2;
debug3=RT_HW_Base.device.pin.debug3;
#include
"RT_HW_BASE.h"
ds1820
Тестовый пин ШИМ 1
dht22
Тестовый пин ШИМ 2
hcSR04
dev
4e8f882e-2fcd-4f19-b1b1-d1e64cdd5183
07.Пины.dev:Пины устройств ds1820,dht22,hc-sr04,user
ds1820=RT_HW_Base.getIntPGM(RT_HW_PGM_PIN_DEV_ID,0);
dht22=RT_HW_Base.getIntPGM(RT_HW_PGM_PIN_DEV_ID,1);
hcSR04=RT_HW_Base.getIntPGM(RT_HW_PGM_PIN_DEV_ID,2);
dev=RT_HW_Base.getIntPGM(RT_HW_PGM_PIN_DEV_ID,3);
207
Пины.spi.cs
pin.control
control
be912f0c-3b86-4ae9-9da8-7f9b566f4100
9cbcc87a-fca0-459a-ae4a-7a8fc07be48e
debug1
fb2dd702-3dc7-4377-969e-0272f0900eca
d4b63836-30d6-4d61-a366-0c5908b34312
debug2
8144e4c7-038e-4881-83f3-9d5d7c4d6fd7
92acde31-4e75-4510-b0a8-dcbf29b69630
debug3
1fe7b5fb-fb95-476b-a8b5-5c9d02ef094c
4cf0953e-e061-4d73-87e0-7f07f0da6905
472c3df2-e0aa-4442-a601-9053017263f4
pin.contol
control=RT_HW_Base.device.pin.control;
debug1=RT_HW_Base.device.pin.debug1;
debug2=RT_HW_Base.device.pin.debug2;
debug3=RT_HW_Base.device.pin.debug3;
#include
"RT_HW_BASE.h"
hc595
cs 74HC595
lcd
cs SPI.lcd
nrf2401
dev
6a447b76-7856-4aeb-a3ad-1a551faa8ac8
08.Пины.spi.cs:Пины cs аппаратного SPI
hc595=RT_HW_Base.getIntPGM(RT_HW_PGM_PIN_CSS_ID,0);
lcd=RT_HW_Base.getIntPGM(RT_HW_PGM_PIN_CSS_ID,1);
nrf2401=RT_HW_Base.getIntPGM(RT_HW_PGM_PIN_CSS_ID,2);
dev=RT_HW_Base.getIntPGM(RT_HW_PGM_PIN_CSS_ID,3);
Пины.lcd6
pin.control
control
be912f0c-3b86-4ae9-9da8-7f9b566f4100
9cbcc87a-fca0-459a-ae4a-7a8fc07be48e
debug1
fb2dd702-3dc7-4377-969e-0272f0900eca
d4b63836-30d6-4d61-a366-0c5908b34312
debug2
8144e4c7-038e-4881-83f3-9d5d7c4d6fd7
92acde31-4e75-4510-b0a8-dcbf29b69630
debug3
1fe7b5fb-fb95-476b-a8b5-5c9d02ef094c
4cf0953e-e061-4d73-87e0-7f07f0da6905
472c3df2-e0aa-4442-a601-9053017263f4
pin.contol
control=RT_HW_Base.device.pin.control;
debug1=RT_HW_Base.device.pin.debug1;
debug2=RT_HW_Base.device.pin.debug2;
debug3=RT_HW_Base.device.pin.debug3;
#include
"RT_HW_BASE.h"
RS
WR
DB4
DB5
pin.lcd6
EN
cs SPI.lcd
DB6
13d6e9bc-a963-4661-b089-fc11bbf5c6e7
db5b1cd8-edbb-4083-81b4-a5d86efef5f8
DB7
f15fdb92-0bc2-4f8f-abbe-5a47b7e3a644
a22b971b-c322-4635-81ef-85dc830ed899
230c69f2-dd36-4b39-a667-fa6ac73feb29
09.pin.lcd6
RS=RT_HW_Base.getIntPGM(RT_HW_PGM_PIN_LC6_ID,0);
EN=RT_HW_Base.getIntPGM(RT_HW_PGM_PIN_LC6_ID,1);
DB4=RT_HW_Base.getIntPGM(RT_HW_PGM_PIN_LC6_ID,2);
DB5=RT_HW_Base.getIntPGM(RT_HW_PGM_PIN_LC6_ID,3);
DB6=RT_HW_Base.getIntPGM(RT_HW_PGM_PIN_LC6_ID,4);
DB7=RT_HW_Base.getIntPGM(RT_HW_PGM_PIN_LC6_ID,5);
297
37e171b0-eb8f-4cdc-8070-94fa451a3fe1
09.Пины.lcd6:Подключнение Lcd HD44780 4-х раз.шина
RS=RT_HW_Base.getIntPGM(RT_HW_PGM_PIN_LC6_ID,0);
WR=RT_HW_Base.getIntPGM(RT_HW_PGM_PIN_LC6_ID,1);
DB4=RT_HW_Base.getIntPGM(RT_HW_PGM_PIN_LC6_ID,2);
DB5=RT_HW_Base.getIntPGM(RT_HW_PGM_PIN_LC6_ID,3);
DB6=RT_HW_Base.getIntPGM(RT_HW_PGM_PIN_LC6_ID,4);
DB7=RT_HW_Base.getIntPGM(RT_HW_PGM_PIN_LC6_ID,5);
Пины.sspi
pin.control
control
be912f0c-3b86-4ae9-9da8-7f9b566f4100
9cbcc87a-fca0-459a-ae4a-7a8fc07be48e
debug1
fb2dd702-3dc7-4377-969e-0272f0900eca
d4b63836-30d6-4d61-a366-0c5908b34312
debug2
8144e4c7-038e-4881-83f3-9d5d7c4d6fd7
92acde31-4e75-4510-b0a8-dcbf29b69630
debug3
1fe7b5fb-fb95-476b-a8b5-5c9d02ef094c
4cf0953e-e061-4d73-87e0-7f07f0da6905
472c3df2-e0aa-4442-a601-9053017263f4
pin.contol
control=RT_HW_Base.device.pin.control;
debug1=RT_HW_Base.device.pin.debug1;
debug2=RT_HW_Base.device.pin.debug2;
debug3=RT_HW_Base.device.pin.debug3;
#include
"RT_HW_BASE.h"
cs
cs 74HC595
mosi
cs SPI.lcd
miso
sck
c56dc098-1793-4453-a517-a0a15452ef6c
10.Пины.sspi:Пины программного SPI (SSPI)
cs=RT_HW_Base.getIntPGM(RT_HW_PGM_PIN_SSP_ID,0);
mosi=RT_HW_Base.getIntPGM(RT_HW_PGM_PIN_SSP_ID,1);
miso=RT_HW_Base.getIntPGM(RT_HW_PGM_PIN_SSP_ID,2);
sck=RT_HW_Base.getIntPGM(RT_HW_PGM_PIN_SSP_ID,3);
Адреса i2c
pin.control
control
be912f0c-3b86-4ae9-9da8-7f9b566f4100
9cbcc87a-fca0-459a-ae4a-7a8fc07be48e
debug1
fb2dd702-3dc7-4377-969e-0272f0900eca
d4b63836-30d6-4d61-a366-0c5908b34312
debug2
8144e4c7-038e-4881-83f3-9d5d7c4d6fd7
92acde31-4e75-4510-b0a8-dcbf29b69630
debug3
1fe7b5fb-fb95-476b-a8b5-5c9d02ef094c
4cf0953e-e061-4d73-87e0-7f07f0da6905
472c3df2-e0aa-4442-a601-9053017263f4
pin.contol
control=RT_HW_Base.device.pin.control;
debug1=RT_HW_Base.device.pin.debug1;
debug2=RT_HW_Base.device.pin.debug2;
debug3=RT_HW_Base.device.pin.debug3;
#include
"RT_HW_BASE.h"
lcd1
адрес i2c.lcd1
lcd2
адрес i2c.lcd2
mcp1
адрес i2c.mcp1
mcp2
адрес i2c.mcp2
78b2b3e4-d05d-4665-86d1-5c932b470526
10.Адреса i2c:lcd1,lcd2,mcp1,mcp2
lcd1=RT_HW_Base.getIntPGM(RT_HW_PGM_ADR_I2C_ID,0);
lcd2=RT_HW_Base.getIntPGM(RT_HW_PGM_ADR_I2C_ID,1);
mcp1=RT_HW_Base.getIntPGM(RT_HW_PGM_ADR_I2C_ID,2);
mcp2=RT_HW_Base.getIntPGM(RT_HW_PGM_ADR_I2C_ID,3);
203
sysDepth
depth
4bfa7591-cb22-4e14-b697-1d2b33258c2c
262778f5-9bcd-4a3e-b2f8-889edbf0bb32
maxVal
1a81a026-4a29-4997-9ff0-1323429c066e
195909eb-53ff-4f9b-9bbf-b64aedff5f60
eefdbc78-1efa-4a26-ae0c-0ef33eb0bc72
1.sysDepth
depth = RT_HW_Base.device.depth.sys;
maxVal =RT_HW_Base.maxBitDepth(depth);
77
Vcc
db6308e7-ab49-4fda-bd74-7812a67894f7
f1d2ea55-d5c9-4515-b774-85b70e570d35
92c51741-9f6a-4d82-b53e-239c311017e4
11.sysDepth
depth = RT_HW_Base.device.depth.sys;
maxVal =RT_HW_Base.maxBitDepth(depth);
Vcc=float)RT_HW_VCC/1000;
103
SysToVolt
0bb197ff-5ba6-4a12-a330-51ed5485bdbe
e98b88f9-9660-4dac-b1ff-c9fc4c8e7aea
b6aaefe2-75cb-40ca-ba99-9e239f9939c1
depth = RT_HW_Base.device.depth.sys;
maxVal =RT_HW_Base.maxBitDepth(depth);
Vcc=(float)RT_HW_VCC/1000;
SysToVolt = Vcc/maxVal;
130
5060f2c4-c941-4e93-9b64-eae821a64066
depth = RT_HW_Base.device.depth.sys;
maxVal =RT_HW_Base.maxBitDepth(depth);
Vcc=(float)RT_HW_VCC/1000;
SysToVolt = Vcc / (float)maxVal;
139
04.Тестовые пины и параметры
4bf63cf1-415b-46c5-af5d-16cd4a902169
Пины.board
RT_int8*4
v1
2456906e-5f43-47eb-97a0-14e7c38002b8
f9acf927-df84-4a5d-96f0-112efc49e36f
v2
0cbe7788-5dc0-4c7a-836e-d9f4f146462a
5f67ad92-b2d1-4d4a-bbbe-ce5dbfa5fea2
v3
7f80d651-e13e-4dcb-adcc-e28c6eeeeb78
d22e30ab-fab8-428d-93bd-8fa5f01fe10c
v4
f383c4aa-e45a-41d8-b41d-e2153c7c8c97
d9e57a8b-486c-47a5-b9d6-93f9440099ae
a23eef34-a4cb-4f3c-891b-af9ba335b1ad
1.RT_int8*4 Выбор 4-х int8 (-128 / 127)
AV328
-1
Arduino UNO,Nano,Pro
66f9fc5b-b5d7-4593-9801-0f3993050f5e
e26cb45a-68e0-4ecf-a044-0c6f45733c8c
MEGA2560
-1
Arduino Mega2560
56796ec3-e68b-40fd-89c5-9280ccddc438
06d518e8-bac0-4747-8c5f-7074104d56bf
SAM3X8E
-1
Arduino DUE
80f50d9b-bf2d-46c5-80b3-bfacce13a3fd
384ce813-a710-4df0-b8b8-c8ed568f7049
ESP32
-1
ESP32
0a8c505c-e579-475e-b1f4-553c215bb739
7d9c0e10-80de-43d2-82b6-d29cd2098b10
STM32F103C
-1
cb68bb36-5d0f-4fe5-9ca4-a5920a0f0547
4124e1ca-9a3a-4487-b55d-780eff2a37e4
STM32F103R
-1
377ef38e-9bfe-4282-802b-239a753d9dd6
18891f1e-906b-4025-9dec-9d98d371de93
STM32F103V
-1
d55561cb-357e-442d-9337-4cfccd3c921b
ee8a1a1f-2cdd-47c0-a50d-36544d38922f
STM32F103Z
-1
811ba907-c1fb-4365-9bb1-d260531cf411
895394bd-7534-47d2-8d8e-01e25ed321e1
STM32F407V
-1
091c8e29-61f7-4b01-8ab2-87e05580b0ea
3c84ae53-d252-43e2-98c8-e4fd6f54cc67
USER
-1
e1aee516-830f-4f20-90a0-b0fca6460cb8
6cfbdab5-4e77-4332-b8d5-a930d5058100
//====Выбор 4-х параметров типа int8 (от -128 до +127)
setVal() ;
65
#include
"RT_HW_BOARDS.h"
uint8_t len;
#if RT_HW_DEFINED_USER
int8_t arr[]={ USER };
#elif RT_HW_DEFINED_AVR328
int8_t arr[]={ AVR328 };
#elif RT_HW_DEFINED_MEGA2560
int8_t arr[]={ MEGA2560 };
#elif RT_HW_DEFINED_SAM3X8E
int8_t arr[]={ SAM3X8E };
#elif RT_HW_DEFINED_ESP8266
int8_t arr[]={ ESP8266 };
#elif RT_HW_DEFINED_ESP32
int8_t arr[]={ ESP32 };
#elif RT_HW_DEFINED_STM32F103C
int8_t arr[]={ STM32F103C };
#elif RT_HW_DEFINED_STM32F103R
int8_t arr[]={ STM32F103R };
#elif RT_HW_DEFINED_STM32F103V
int8_t arr[]={ STM32F103V };
#elif RT_HW_DEFINED_STM32F103Z
int8_t arr[]={ STM32F103Z };
#elif RT_HW_DEFINED_STM32F407V
int8_t arr[]={ STM32F407V };
#else
int8_t arr[]={ -1,-1,-1,-1};
#endif
len=sizeof(arr)/sizeof(int8_t);
if(len>0) v1=arr[0]; else v1=-1; if(len>1) v2=arr[1]; else v2=-1; if(len>2) v3=arr[2]; else v3=-1; if(len>3) v4=arr[3]; else v4=-1;
1038
void
setVal
929aac0e-f8f6-4468-ad82-69b5535258ca
02.Пины.board
Выбор 4-х параметров типа int8_t
1. Для контроллеров архитектур AVR,DUE,ESP32
допускаются цифровые значения от -1 до 127;
2. Для контроллеров архитектуры ESP8266
допускаются значения pD0-pD8,pRX,pTX,pA0;
3. Для контроллеров архитектуры STM32:
3.1. -1;
3.2. дополнительно для STM32F103Сx, STM32F401xx, STM32F411xx
PA0-PA12,PA15; PB0,PB1; PB3-PB15; PC13-PC15 для F103Cx, F401xx, F414;
3.3. дополнительно для STM32FxxxR PC0-PC15;
441
AVR328
-1
Arduino UNO,Nano,Pro
66f9fc5b-b5d7-4593-9801-0f3993050f5e
MEGA2560
-1
Arduino Mega2560
56796ec3-e68b-40fd-89c5-9280ccddc438
22,23,24,25
ARDUINO_DUE
-1
Arduino DUE
80f50d9b-bf2d-46c5-80b3-bfacce13a3fd
ESP8266
-1
27a70f7b-cbe7-4ae8-b5b7-d9c96b44daf0
a26f5786-5e55-46e8-97c8-2e84e549b458
ESP32
-1
ESP32
0a8c505c-e579-475e-b1f4-553c215bb739
STM32F103C
-1
cb68bb36-5d0f-4fe5-9ca4-a5920a0f0547
STM32F103R
-1
377ef38e-9bfe-4282-802b-239a753d9dd6
STM32F103V
-1
3ce8dd82-1838-4c7f-b24b-9d2943afcf5a
88928fc4-dc75-47ac-a8c0-1d67b51288ae
STM32F401
-1
558407c9-99b4-4674-9521-1b3218d606b8
62ae02e1-e68a-4329-9357-ecd23590f892
STM32F411
-1
091c8e29-61f7-4b01-8ab2-87e05580b0ea
STM32F407Vx
-1
6d5ab7f5-7a1d-46a1-8b34-e89d0bd360c4
PC9,PC8,PD15,PD14
cc372e35-c368-41ef-8302-199337dd5386
STM32F401xx
-1
c8ae8cf6-cbf8-4c64-ab65-157e9206bad9
f11af532-e664-467c-91de-faeb0ce42fd7
STM32F411xx
-1
6d93327f-118f-4e1a-87f2-615cda623a07
7182dbc1-bd23-4336-ae67-e457e0283e6f
BLUEPILL_F103C
-1
bde6b8f2-4fc6-4f63-8e6f-9a9d1d74fbcf
PA15,PB3,PB4
2f269891-b45a-4be6-a871-bfcedda4c583
BLACKPILL_F103C
-1
20e968e1-9cd3-4cf1-b938-fbb1c675a188
PA15,PB3,PB4
881a17e9-87e6-4059-8606-d042cc479993
BLACKPILL_F401CC
-1
af48c579-cd86-4d3b-bac9-8df4c9b334c7
fc29a2ea-c207-452a-84e5-c851512b5288
BLACKPILL_F411CE
-1
f089ad58-13c0-4155-abdc-e37d44a7edfa
fce7b686-bc85-4318-a162-673c3866b29d
BLACK_F407Vx
-1
393de988-1e15-4e6d-baf8-1d31263d45e4
f140a008-d5f1-4f45-9815-e6b4331ffda8
//---------Выбор 4-х параметров типа int8 (от -128 до +127) для используемого контроллера--------------
setVal() ;
115
#include
"RT_HW_BASE.h"
uint8_t len;
#if defined(RT_HW_BOARD_AVR)
int8_t arr[]={ AVR328 };
#elif defined(RT_HW_BOARD_MEGA2560)
int8_t arr[]={ MEGA2560 };
#elif defined(RT_HW_BOARD_DUE)
int8_t arr[]={ ARDUINO_DUE };
#elif defined(RT_HW_BOARD_ESP8266)
int8_t arr[]={ ESP8266 };
#elif defined(RT_HW_BOARD_STM32F103C)
int8_t arr[]={ STM32F103C };
#elif defined(RT_HW_BOARD_STM32F103R)
int8_t arr[]={ STM32F103R };
#elif defined(RT_HW_BOARD_STM32F103V)
int8_t arr[]={ STM32F103V };
#elif defined(RT_HW_BOARD_STM32F407Vx)
int8_t arr[]={ STM32F407Vx };
#elif defined(RT_HW_BOARD_STM32F401xx)
int8_t arr[]={ STM32F401xx };
#elif defined(RT_HW_BOARD_STM32F411xx)
int8_t arr[]={ STM32F411xx };
#elif defined(RT_HW_BOARD_BLUEPILL_F103Cx)
int8_t arr[]={ BLUEPILL_F103C };
#elif defined(RT_HW_BOARD_BLACKPILL_F103Cx)
int8_t arr[]={ BLACKPILL_F103C };
#elif defined(RT_HW_BOARD_BLACKPILL_F401CC)
int8_t arr[]={ BLACKPILL_F401CC };
#elif defined(RT_HW_BOARD_BLACKPILL_F411CE)
int8_t arr[]={ BLACKPILL_F411CE };
#elif defined(RT_HW_BOARD_BLACK_F407Vx)
int8_t arr[]={BLACK_F407Vx };
#else
int8_t arr[]={ -1};
#endif
len=sizeof(arr)/sizeof(int8_t);
if(len < 1) v1=-1; else v1=arr[0];
if(len < 2) v2=-1; else v2=arr[1];
if(len < 3) v3=-1; else v3=arr[2];
if(len < 4) v4=-1; else v4=arr[3];
1523
Пины.arch
RT_int8*4
v1
2456906e-5f43-47eb-97a0-14e7c38002b8
f9acf927-df84-4a5d-96f0-112efc49e36f
v2
0cbe7788-5dc0-4c7a-836e-d9f4f146462a
5f67ad92-b2d1-4d4a-bbbe-ce5dbfa5fea2
v3
7f80d651-e13e-4dcb-adcc-e28c6eeeeb78
d22e30ab-fab8-428d-93bd-8fa5f01fe10c
v4
f383c4aa-e45a-41d8-b41d-e2153c7c8c97
d9e57a8b-486c-47a5-b9d6-93f9440099ae
a23eef34-a4cb-4f3c-891b-af9ba335b1ad
1.RT_int8*4 Выбор 4-х int8 (-128 / 127)
AV328
-1
Arduino UNO,Nano,Pro
66f9fc5b-b5d7-4593-9801-0f3993050f5e
e26cb45a-68e0-4ecf-a044-0c6f45733c8c
MEGA2560
-1
Arduino Mega2560
56796ec3-e68b-40fd-89c5-9280ccddc438
06d518e8-bac0-4747-8c5f-7074104d56bf
SAM3X8E
-1
Arduino DUE
80f50d9b-bf2d-46c5-80b3-bfacce13a3fd
384ce813-a710-4df0-b8b8-c8ed568f7049
ESP32
-1
ESP32
0a8c505c-e579-475e-b1f4-553c215bb739
7d9c0e10-80de-43d2-82b6-d29cd2098b10
STM32F103C
-1
cb68bb36-5d0f-4fe5-9ca4-a5920a0f0547
4124e1ca-9a3a-4487-b55d-780eff2a37e4
STM32F103R
-1
377ef38e-9bfe-4282-802b-239a753d9dd6
18891f1e-906b-4025-9dec-9d98d371de93
STM32F103V
-1
d55561cb-357e-442d-9337-4cfccd3c921b
ee8a1a1f-2cdd-47c0-a50d-36544d38922f
STM32F103Z
-1
811ba907-c1fb-4365-9bb1-d260531cf411
895394bd-7534-47d2-8d8e-01e25ed321e1
STM32F407V
-1
091c8e29-61f7-4b01-8ab2-87e05580b0ea
3c84ae53-d252-43e2-98c8-e4fd6f54cc67
USER
-1
e1aee516-830f-4f20-90a0-b0fca6460cb8
6cfbdab5-4e77-4332-b8d5-a930d5058100
//====Выбор 4-х параметров типа int8 (от -128 до +127)
setVal() ;
#include
"RT_HW_BOARDS.h"
uint8_t len;
#if RT_HW_DEFINED_USER
int8_t arr[]={ USER };
#elif RT_HW_DEFINED_AVR328
int8_t arr[]={ AVR328 };
#elif RT_HW_DEFINED_MEGA2560
int8_t arr[]={ MEGA2560 };
#elif RT_HW_DEFINED_SAM3X8E
int8_t arr[]={ SAM3X8E };
#elif RT_HW_DEFINED_ESP8266
int8_t arr[]={ ESP8266 };
#elif RT_HW_DEFINED_ESP32
int8_t arr[]={ ESP32 };
#elif RT_HW_DEFINED_STM32F103C
int8_t arr[]={ STM32F103C };
#elif RT_HW_DEFINED_STM32F103R
int8_t arr[]={ STM32F103R };
#elif RT_HW_DEFINED_STM32F103V
int8_t arr[]={ STM32F103V };
#elif RT_HW_DEFINED_STM32F103Z
int8_t arr[]={ STM32F103Z };
#elif RT_HW_DEFINED_STM32F407V
int8_t arr[]={ STM32F407V };
#else
int8_t arr[]={ -1,-1,-1,-1};
#endif
len=sizeof(arr)/sizeof(int8_t);
if(len>0) v1=arr[0]; else v1=-1; if(len>1) v2=arr[1]; else v2=-1; if(len>2) v3=arr[2]; else v3=-1; if(len>3) v4=arr[3]; else v4=-1;
void
setVal
19e440b6-94b5-418d-9ffd-768d2e526bb9
01.Пины.arch
Выбор 4-х параметров типа int8_t
1. Для контроллеров архитектур AVR,DUE,ESP32
допускаются цифровые значения от -1 до 127;
2. Для контроллеров архитектуры ESP8266
допускаются значения pD0-pD8,pRX,pTX,pA0;
3. Для контроллеров архитектуры STM32:
3.1. -1;
3.2. дополнительно для STM32F103Сx, STM32F401xx, STM32F411xx
PA0-PA12,PA15; PB0,PB1; PB3-PB15; PC13-PC15 для F103Cx, F401xx, F414;
3.3. дополнительно для STM32FxxxR PC0-PC15;
Архитектура AVR,DUE,ESP32
-1
Допускаются цифровые значения от -1 до 127
c72a188f-e4ab-4937-bac6-fc20327a9be8
3a74e8f9-4d23-42f7-9203-7ceaa5944d53
Архитектура ESP826
-1
-1
Допускаются pD0-pD8,pRX,pTX,pA0
d1116dbd-7a31-4f82-8908-9c74df678470
92b0c317-71c6-41a2-833c-238b4e8b5d15
Архитектура STM32
-1
Допускаются -1; PA0-PA12,PA15; PB0,PB1; PB3-PB15; PC13-PC15 для F103Cx, F401xx, F414; PC0-PC15 для F103R,V,Z и F407Vx
150194dd-69a3-496c-8078-5d3884ca37ef
81c2be48-cd66-4564-81bf-208f7cf6daca
//---------Выбор 4-х параметров типа int8 (от -128 до +127) для используемого контроллера--------------
setVal() ;
#include
"RT_HW_BASE.h"
uint8_t len;
#if defined(RT_HW_ARCH_AVR) || defined(RT_HW_ARCH_DUE) || defined(RT_HW_ARCH_ESP32)
int8_t arr[]={ Архитектура AVR,DUE,ESP32 };
#elif defined(RT_HW_ARCH_ESP8266)
int8_t arr[]={ Архитектура ESP826 };
#elif defined(RT_HW_ARCH_STM32)
int8_t arr[]={ Архитектура STM32 };
#else
int8_t arr[]={ -1};
#endif
len=sizeof(arr)/sizeof(int8_t);
if(len < 1) v1=-1; else v1=arr[0];
if(len < 2) v2=-1; else v2=arr[1];
if(len < 3) v3=-1; else v3=arr[2];
if(len < 4) v4=-1; else v4=arr[3];
544
03.Пины определяемые пользователем
2aca7e2b-d58b-4723-818d-0f9277f5a23e
Sheduler
control
5240ca5a-d78f-49e9-8aed-b87f4606b24e
cda5e882-d5be-454c-ac27-1a28eae71650
meander_10mc
6eea3573-355c-4752-8799-89e58fdf639b
a0047bb9-9c29-4642-922e-fbedce4135de
meander_25mc
c4d8294d-d71a-487a-8876-afb58f87cf5e
4678877e-784e-4b54-98f0-e495c812ec50
num_quick
a4c5e13f-dede-480b-ad42-e8998a30df2b
8ef1e464-8f9f-4541-99c2-6f317f8449e1
num_fast
2ac492c0-c857-41f7-b3f3-24701a485572
62543539-ec9e-47a8-9eec-1acaeafd94da
num_slow
c0fe2cf7-5240-4726-a045-5151ce0c2901
efa9c4bf-dda8-4607-80b4-ea10b4cf4279
num_back
01849a78-a85a-43ba-a449-fa47d7cc8ea1
72d4ac2d-2903-49bf-a718-c1b6dd49034f
num_frdm
18d50c85-e0d0-4dc3-a195-3f7e6e4a9923
f3b064d3-0d4c-41bd-9502-b1e24ce1947d
79a5f4c4-80b4-4087-985d-890d4bbd97b3
09.Sheduler
/*
shed.quick.num=shed.fast.num=shed.slow.num=shed.back.num=shed.frdm.num=0;
shed.blink=shed.blink^1; //--бит 0 - loop()
if(period(shed.timeStart10,RT_HW_MICROS,10000)){shed.blink=shed.blink^0x02; bitSet(shed.run,0);} //--бит 1 - 10мс
if(period(shed.timeStart25,RT_HW_MILLIS,25)) {shed.blink=shed.blink^0x04; bitSet(shed.run,1); //--бит 2 - 25мс
if(++shed.cnt250 >=10){shed.cnt250=0; shed.blink=shed.blink^0x20; bitSet(shed.run,2); shed.gen250++;} //--бит 5 - 250мс
if(++shed.cnt100 >= 4){shed.cnt100=0; shed.blink=shed.blink^0x10; bitSet(shed.run,3);} //--бит 4 - 100мс
if(shed.cnt50++ >= 1){shed.cnt50 =0; shed.blink=shed.blink^0x08;} } //--бит 3 - 50мс
//---Обработка вызова задач
if(shed.run){
if(bitRead(shed.run,0)) {if(++shed.quick.cnt>shed.quick.qnt){shed.quick.cnt=1;} shed.quick.num=shed.quick.cnt; bitClear(shed.run,0); return;}
if(bitRead(shed.run,1)) {if(++shed.fast.cnt >shed.fast.qnt) {shed.fast.cnt =1;} shed.fast.num =shed.fast.cnt; bitClear(shed.run,1); return;}
if(bitRead(shed.run,2)) {if(++shed.slow.cnt >shed.slow.qnt) {shed.slow.cnt =1;} shed.slow.num =shed.slow.cnt; bitClear(shed.run,2); return;}
if(bitRead(shed.run,3)) {if(++shed.back.cnt >shed.back.qnt) {shed.back.cnt =1;} shed.back.num =shed.back.cnt; bitClear(shed.run,3); return;}}
else {if(++shed.frdm.cnt >shed.frdm.qnt) {shed.frdm.cnt =1;} shed.frdm.num =shed.frdm.cnt; return;}};
*/
1475
void
shed
blink_10ms
baba770e-ce34-4168-81c3-e817a7987c0e
ПЕРИОД_ОПЕРАТИВНЫХ_ЗАДАЧ
в ms
72c4e657-a3b8-471b-8435-e5eeea01eb48
504bd759-c7de-4977-a945-a9a26f7fb0b5
ПЕРИОД_БЫСТРЫХ_ЗАДАЧ
25
d0976141-d905-425a-b0fb-11c901e3bfa9
5fc23082-c8b0-4bfc-8b19-8e9e0f4ec1cf
ПЕРИОД_МЕДЛЕННЫХ_ЗАДАЧ
250
c7ab15a4-f45e-4824-ad8a-e47927433925
9c4500dd-7585-43c7-807c-062b017ffb98
ПЕРИОД_ФОНОВЫХ_ЗАДАЧ
100
61dd674b-f427-44c2-8ac5-3d3e12729251
99f73843-e5ec-4aac-85ad-85daadd5b5c1
КОЛИЧЕСТВО_ОПЕРАТИВНЫХ_ЗАДАЧ
5
f4f42f99-5ca3-490f-8401-8444cd209ce3
ed4a3647-4256-4510-9f20-0b54224c96fb
КОЛИЧЕСТВО_БЫСТРЫХ_ЗАДАЧ
4d4b342d-d697-43cc-ae24-ad437caa7111
80edf3c5-2e0b-4a36-8a8b-3979ef6f3f0b
КОЛИЧЕСТВО_МЕДЛЕННЫХ_ЗАДАЧ
3609eae5-b32a-4bfd-a203-cd5e58411588
166907c4-90cb-4d8a-8dba-5ecfd2503f26
КОЛИЧЕСТВО_ФОНОВЫХ_ЗАДАЧ
caf07c5d-b47b-400a-98fd-feb3e625366d
e497a572-82cc-4392-8bd1-8369c3a20036
КОЛИЧЕСТВО_СВОБОДНЫХ_ЗАДАЧ
f03c60b3-283d-4303-942e-3f709f221327
617918b2-9c50-4d0e-a58e-77abf53cac2d
shed();
8
quickCnt=fastCnt=slowCnt=backCnt=frdmCnt=run=0;
quickTime=fastTime=slowTime=backTime=0;
quickTask= КОЛИЧЕСТВО_ОПЕРАТИВНЫХ_ЗАДАЧ ; quickPeriod= ПЕРИОД_ОПЕРАТИВНЫХ_ЗАДАЧ ;
fastTask= КОЛИЧЕСТВО_БЫСТРЫХ_ЗАДАЧ ; fastPeriod= ПЕРИОД_БЫСТРЫХ_ЗАДАЧ ;
slowTask= КОЛИЧЕСТВО_МЕДЛЕННЫХ_ЗАДАЧ ; slowPeriod= ПЕРИОД_МЕДЛЕННЫХ_ЗАДАЧ ;
backTask= КОЛИЧЕСТВО_ФОНОВЫХ_ЗАДАЧ ; backPeriod= ПЕРИОД_ФОНОВЫХ_ЗАДАЧ ;
frdmTask= КОЛИЧЕСТВО_СВОБОДНЫХ_ЗАДАЧ ;
458
---Данные для диспетчера задач;
time10ms
;
uint32_t
run
;
uint8_t
-----quick-------------
quickCnt
;
uint8_t
quickTask
;
uint8_t
quickPeriod
;
uint16_t
quickTime
;
uint32_t
-----fast-------------
fastCnt
;
uint8_t
fastTask
;
uint8_t
fastPeriod
;
uint16_t
fastTime
;
uint32_t
-----slow-------------
slowCnt
;
uint8_t
slowTask
;
uint8_t
slowPeriod
;
uint16_t
slowTime
;
uint32_t
-----back-------------
backCnt
;
uint8_t
backTask
;
uint8_t
backPeriod
;
uint16_t
backTime
;
uint32_t
-----frdm-------------
frdmCnt
;
uint8_t
frdmTask
;
uint8_t
num_quick=num_fast=num_slow=num_back=num_frdm=0;
control=!control;
if(millis()>=(time10ms+10)) {time10ms+=10; blink_10ms=!blink_10ms;}
if(getPeriod(quickTime,millis(), quickPeriod )) {bitSet(run,0); }
if(getPeriod(fastTime,millis(),fastPeriod)) {bitSet(run,1);}
if(getPeriod(slowTime,millis(),slowPeriod)) {bitSet(run,2);}
if(getPeriod(backTime,millis(),backPeriod)) {bitSet(run,3);}
//---Обработка вызова задач
if(run){
if(bitRead(run,0)) { if(++quickCnt>quickTask) {quickCnt=1;} num_quick=quickCnt; bitClear(run,0); return;}
if(bitRead(run,1)) { if(++fastCnt>fastTask) {fastCnt=1;} num_fast=fastCnt; bitClear(run,1); return;}
if(bitRead(run,2)) { if(++slowCnt>slowTask) {slowCnt=1;} num_slow=slowCnt; bitClear(run,2); return;}
if(bitRead(run,3)) { if(++backCnt>backTask) {backCnt=1;} num_back=backCnt; bitClear(run,3); return;}}
else { if(++frdmCnt>frdmTask) {frdmCnt=1;} num_frdm=frdmCnt; return;};
956
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Функция генерит событие с точным поддержанием периода и защитой от пропуска шага. Идея от https://alexgyver.ru/arduino-algorithms/
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//uint8_t RT_HW_BASE:: period (uint32_t &timeBegin, uint32_t timeEnd, uint32_t period){
if((timeEnd-timeBegin)>=period) {do{timeBegin += period; if (timeBegin < period) break;} while (timeBegin < timeEnd - period); return 1;} return 0;
//};
582
uint8_t
getPeriod
uint32_t
&timeBegin
uint32_t
timeEnd
uint16_t
&period
01.НАСТРОЙКА ПРОЕКТА
a711c316-26cb-4ac9-9de0-5aa942f0c2c4
i2c.init+
i2c.init
init
57579f93-f61f-48e0-9cd2-881c1df22431
6bb61101-d598-4ad9-97b1-027681bf82d7
state
3faba33c-a0f7-4647-aa6d-85768f40d8e8
90fe359f-1db2-4e7f-864d-a789e5ae0e95
04822aaa-6ee4-4f9e-a8bd-c61687b2163b
01.i2c.init
Выбор 4-х параметров типа int16_t для используемого контроллера
AVR328
-1
Arduino UNO,Nano,Pro
66f9fc5b-b5d7-4593-9801-0f3993050f5e
-1,-1,400
e26cb45a-68e0-4ecf-a044-0c6f45733c8c
MEGA2560
-1
Arduino Mega2560
56796ec3-e68b-40fd-89c5-9280ccddc438
-1,-1,400
06d518e8-bac0-4747-8c5f-7074104d56bf
SAM3X8E
-1
Arduino DUE
80f50d9b-bf2d-46c5-80b3-bfacce13a3fd
-1,-1,400
384ce813-a710-4df0-b8b8-c8ed568f7049
ESP8266
-1
27a70f7b-cbe7-4ae8-b5b7-d9c96b44daf0
-1,-1,100
a26f5786-5e55-46e8-97c8-2e84e549b458
ESP32
-1
ESP32
0a8c505c-e579-475e-b1f4-553c215bb739
-1,-1,400
7d9c0e10-80de-43d2-82b6-d29cd2098b10
STM32F103C
-1
cb68bb36-5d0f-4fe5-9ca4-a5920a0f0547
-1,-1,400
4124e1ca-9a3a-4487-b55d-780eff2a37e4
STM32F103R
-1
377ef38e-9bfe-4282-802b-239a753d9dd6
-1,-1,400
18891f1e-906b-4025-9dec-9d98d371de93
STM32F103Z
-1
3ce8dd82-1838-4c7f-b24b-9d2943afcf5a
-1,-1,400
88928fc4-dc75-47ac-a8c0-1d67b51288ae
STM32F401
-1
558407c9-99b4-4674-9521-1b3218d606b8
-1,-1,400
62ae02e1-e68a-4329-9357-ecd23590f892
STM32F411
-1
091c8e29-61f7-4b01-8ab2-87e05580b0ea
-1,-1,400
3c84ae53-d252-43e2-98c8-e4fd6f54cc67
STM32F407V
-1
6d5ab7f5-7a1d-46a1-8b34-e89d0bd360c4
cc372e35-c368-41ef-8302-199337dd5386
if(init) {RT_HW_Base.beginI2C(sda, scl, freq;};
47
//--------Выбор 4-х параметров типа int16_t для используемого контроллера
setVal() ;
86
#include
"RT_HW_BASE.h"
sda
;
int8_t
scl
;
int8_t
freq
;
uint16_t
uint8_t len;
freq=RT_HW_Base.device.i2c.freq;
scl=RT_HW_Base.device.i2c.scl;
sda=RT_HW_Base.device.i2c.sda;
#if defined(RT_HW_BOARD_AVR328)
int16_t arr[]={ AVR328 };
#elif defined(RT_HW_BOARD_MEGA2560)
int16_t arr[]={ MEGA2560 };
#elif defined(RT_HW_BOARD_DUE)
int16_t arr[]={ SAM3X8E };
#elif defined(RT_HW_BOARD_ESP8266)
int16_t arr[]={ ESP8266 };
#elif defined(RT_HW_BOARD_ESP32)
int16_t arr[]={ ESP32 };
#elif defined(RT_HW_BOARD_STM32F103C)
int16_t arr[]={ STM32F103C };
#elif defined(RT_HW_BOARD_STM32F103R)
int16_t arr[]={ STM32F103R };
#elif defined(RT_HW_BOARD_STM32F103Z)
int16_t arr[]={ STM32F103Z };
#elif defined(RT_HW_BOARD_STM32F401)
int16_t arr[]={ STM32F401 };
#elif defined(RT_HW_BOARD_STM32F411)
int16_t arr[]={ STM32F411 };
#elif defined(RT_HW_BOARD_STM32F407V)
int16_t arr[]={ STM32F407V };
#else
int16_t arr[]={ -1};
#endif
len=sizeof(arr)/sizeof(int16_t);
if(len < 1) {scl=-1;} else {scl=arr[0];}
if(len < 2) {sda=-1;} else {sda=arr[1];}
if(len < 3) {freq=-1;} else {freq=arr[2];}
1224
void
setVal
126c6be4-43e8-4ea8-9218-3f1801bee587
freq
8f1b78d1-0541-4e8c-8681-332b60c5339e
677fad12-e355-4aee-96f0-ea2f0c0551a8
scl
f45ddcdb-9a35-4839-b519-3c2f0e7851e1
9c5d00ed-2c59-4202-9d50-8ab5e0b8d8b6
sda
5cb15047-b8a9-4ce6-8e3c-cd761cb7e1aa
603b1d14-8c06-4766-8004-e3c754322a1e
c0b1b644-358d-4a27-b4b7-43e6fbb3a590
02.i2c.init+
if(init) {if((scl==sda) || (scl<0) || (sda<0)) {RT_HW_Base.beginI2C(freq);} else {RT_HW_Base.beginI2C(freq,scl,sda);}};
119
#include
"RT_HW_BASE.h"
_sda
_scl
_freq
set
2bdfe6f9-f82c-4f08-bb26-87ba325eb42c
af885479-2df3-45f8-83a8-4988045aa5d5
_freq
busy
f3ed9eef-bec9-4306-a5f6-d32d50ba62b1
aca8c345-90e4-4676-9cf7-8de43596c748
state
d39f7336-0259-452f-a873-bc19140fa397
ff12d885-77c9-4fb8-bff3-3e26580f31d2
run
f069798c-77b7-4b7a-a217-b72715751856
c02949f8-f4bf-4d17-b273-6b9efcda0011
2ed204f1-4734-442c-8801-4a54d35c9191
//--Инициализация i2c с внешними параметрами
if(init) {if((scl==sda) || (scl<0) || (sda<0)) {RT_HW_Base.beginI2C(freq);} else {RT_HW_Base.beginI2C(freq,scl,sda);}};
run=1;
171
sda
scl
c5ef711e-f675-41ec-a92a-924226d85bdd
15182019-7afc-4db6-a0ab-dcf881196494
freq
7341d379-d50a-45e1-8b90-cfcad694acd9
0e885dc5-a1fe-497d-96d0-5cb45a42076f
befa674d-54f4-426e-99dc-1fbaec0c0786
----- Настройка и инициализации интерфейса i2c. ----
1.Пины SDA и SCL могут быть изменены для контроллеров, которые допускают их физическое изменение (ESP8266,ESP32);
условиях: set=1,sda не равно scl, scl и sda >=0;
2.Новые параметр Freq устанавливается при следующих условиях: set=1, freq>10;
3.Инициализация интерфейса i2c (Wire.begin) выполняется при init=1.
Если set=1, предварительно выполняются п.1 и п.2.
4.Блок выполняется 1 раз.
455
//--Инициализация i2c с внешними параметрами
if(set) {RT_HW_Base.i2c_setPins(_sda,_scl); RT_HW_Base.i2c_setFreq(_freq);}
if(init) {RT_HW_Base.i2c_beginI();}
busy=bitRead(RT_HW_Base.device.i2c.state,RT_HW_I2C_STATE_BUSY);
state=RT_HW_Base.device.i2c.state;
sda=RT_HW_Base.device.i2c.sda;
scl=RT_HW_Base.device.i2c.scl;
freq=RT_HW_Base.device.i2c.freq;
352
#include
"RT_HW_BASE.h"
vINIT
=0;
uint8_t
d41c4b00-f366-4c33-8557-fa19ae759360
//--Инициализация i2c с внешними параметрами
if(init && (vINIT==0)) {vINIT=1;
RT_HW_Base.i2c_setFreq(_freq); //--Сохранение режима скорости RT_HW_Base.device.i2c.mode(S,F,Q,D);
RT_HW_Base.i2c_begin(_sda,_scl);}
state=RT_HW_Base.device.i2c.state;
sda=RT_HW_Base.device.i2c.sda;
scl=RT_HW_Base.device.i2c.scl;
freq=RT_HW_Base.device.i2c.freq;
nxt.Begin
1.nxt.Begin
uart
54414078-0544-4b3e-a3b9-11403e356a41
731a1a2d-cea3-4efa-9024-868815b0e73f
EN
2d173a4d-de63-4a4b-bb4c-0cab29d20197
d60a8387-d331-489c-953a-6390f5825607
a1b06b84-46ac-4aa1-82aa-f1262ef4bd14
nxt.Begin:Инициализация дисплея Nextion
СКОРОСТЬ UART
115200
07124f33-3083-408e-80b2-41c09cb64d85
ef539c8c-e232-4dc4-bb2f-c346d66df441
Размер байтового буфера
770610ee-850d-4c8f-b660-d7385647177e
e4c7e688-7911-4385-afe5-7b937eb1bc35
Размер 2-х байтового буфера
e2458c53-9f0d-448b-9738-1afda8b15847
88bb27a9-cf0c-46f7-890a-326f4a408c85
Размер 4-х байтового буфера
b7b3fc47-455f-4b49-b8e3-8eaff6c986be
89df829b-bea8-4f40-96f7-a9e0ec52a55d
if(id.custom==0) {setDeviceID(id, СКОРОСТЬ UART, buffByte, buffWord, buffLong, 4,10,4);}
id.custom=0;
#include
"RT_HW_NEXTION.h"
id
;
RT_HW_NEXT_DEVICE
buffByte
[ Размер байтового буфера ];
uint8_t
buffWord
[ Размер 2-x байтового буфера ];
uint16_t
buffLong
[ Размер 4-x байтового буфера ];
uint32_t
nxt
2d87f31e-f2ec-407a-8b28-33119f2c30ca
02620001-c3a7-405d-b0ac-9ee66b0ba8ca
8adb5d96-04fc-4933-b103-a5b38ef65a3b
if(id.custom==0) {nxt=setDeviceID(id, СКОРОСТЬ UART, buffByte, buffWord, buffLong, 4,10,4);}
92
id.custom=0;
nxt=0;
19
event
2bb52868-4593-49ea-9e64-310283c52573
8a09f0d4-c9c4-48d9-96d7-c20c79057a73
blink
32e44582-de28-4f00-9694-65c49a585966
0305c71b-edf6-46ef-834d-3183411f5ae5
sec
0c1eee4c-a63a-426c-92a1-8f935be5c839
2c20238f-004a-4c84-b574-234b9d9e778e
c96e4e83-629b-47e7-b714-eeec2f415832
1.nxt.Begin:Инициализация дисплея Nextion
СКОРОСТЬ UART
07124f33-3083-408e-80b2-41c09cb64d85
Размер байтового буфера
770610ee-850d-4c8f-b660-d7385647177e
Размер 2-х байтового буфера
e2458c53-9f0d-448b-9738-1afda8b15847
Размер 4-х байтового буфера
b7b3fc47-455f-4b49-b8e3-8eaff6c986be
if(z.custom==0) {RT_HW_Next.setDeviceID(z, uart , 115200 ,arrByte,arrWord,arrLong, sizeof(arrByte), sizeof(arrWord), sizeof(arrLong)); nxt=z.num;}
RT_HW_Next_device(z);
blink=z.blink;
sec=x.blinkSec;
199
z.custom=0;
nxt=0;
18
#include
"RT_HW_NEXT.h"
z
;
RT_HW_NEXT_DEVICE
arrByte
[ Размер байтового буфера ];
uint8_t
arrWord
[ Размер 2-х байтового буфера ];
uint16_t
arrLong
[ Размер 4-х байтового буфера ];
uint32_t
b5ba79be-858f-477e-bfbc-cc81e17415e9
СКОРОСТЬ UART
07124f33-3083-408e-80b2-41c09cb64d85
Размер байтового буфера
770610ee-850d-4c8f-b660-d7385647177e
Размер 2-х байтового буфера
e2458c53-9f0d-448b-9738-1afda8b15847
Размер 4-х байтового буфера
b7b3fc47-455f-4b49-b8e3-8eaff6c986be
if(z.custom==0) {RT_HW_Next.setDeviceID(z, uart , 115200 ,arrByte,arrWord,arrLong, sizeof(arrByte), sizeof(arrWord), sizeof(arrLong)); nxt=z.num;}
RT_HW_Next.genEvent(z);
event=z.event;
blink=z.blink;
sec=z.blinkSec;
216
_uart
6647364a-9fad-44e3-a411-435def6ec7bc
bfb9e370-f5ea-4be6-99d1-6392e81ac3e3
acd71203-e8e8-4c20-ac38-c10c999eed94
СКОРОСТЬ UART
07124f33-3083-408e-80b2-41c09cb64d85
Размер байтового буфера
770610ee-850d-4c8f-b660-d7385647177e
Размер 2-х байтового буфера
e2458c53-9f0d-448b-9738-1afda8b15847
Размер 4-х байтового буфера
b7b3fc47-455f-4b49-b8e3-8eaff6c986be
if(z.state==RT_HW_NEXT_STATE_NOT_INIT) {RT_HW_Next.setDeviceID(z, uart , 115200 ,arrByte,arrWord,arrLong, sizeof(arrByte), sizeof(arrWord), sizeof(arrLong));
//nxt=z.num;
}
RT_HW_Next.genEvent(z);
nxt=z.num;
_uart=z.uart;
event=z.event;
blink=z.blink;
sec=z.blinkSec;
268
z.state=RT_HW_NEXT_STATE_NOT_INIT;
nxt=0;
41
617d8add-c9e0-4a31-b397-20d1d9c4eb5c
СКОРОСТЬ UART
07124f33-3083-408e-80b2-41c09cb64d85
Размер байтового буфера
770610ee-850d-4c8f-b660-d7385647177e
Размер 2-х байтового буфера
e2458c53-9f0d-448b-9738-1afda8b15847
Размер 4-х байтового буфера
b7b3fc47-455f-4b49-b8e3-8eaff6c986be
if(z.state==RT_HW_NEXT_STATE_NOT_INIT) { RT_HW_Next.setDeviceID(z, uart , 115200 ,arrByte,arrWord,arrLong, sizeof(arrByte), sizeof(arrWord), sizeof(arrLong));
//nxt=z.num;
}
RT_HW_Next.genEvent(z);
nxt=z.num;
_uart=z.uart;
event=z.event;
blink=z.blink;
sec=z.blinkSec;
270
#include
"RT_HW_NEXT.h"
z
;
RT_HW_NEXT_DEVICE_ID
arrByte
[ Размер байтового буфера ];
uint8_t
arrWord
[ Размер 2-х байтового буфера ];
uint16_t
arrLong
[ Размер 4-х байтового буфера ];
uint32_t
nxt.float
nxt
31523b50-49e4-4a51-ae52-ade0b2438270
Номер дисплея Nextion (1-8). Если=0, то дисплей не существует.
a3bb73c3-b782-4f7f-8577-eb36f9d7f2f5
val
2391641e-c880-404a-9924-fa109aa99cad
Значение параметра
4e2d3f6e-47ed-4d42-a66b-d476fda1de91
33783884-c3ca-4410-b53a-fa7ffeb00705
1.nxt.float:Отправка параметра
ЗАГОЛОВОК_параметра
page0.dhtT.txt=
d8724ebf-705a-4f68-a594-ff35619f421a
2d5e0475-ab1b-468a-b0f8-842c0f8ae4a4
#include
"RT_HW_NEXT.h"
ago
;
float
ok
;
uint8_t
reg
a618f19a-074c-4b9e-9169-f9ff60594335
f59d62d7-04a4-4100-954f-2cd73df68e14
2c2c5e93-aee6-47f2-82fd-2cd659e7d7f4
2.nxt.float:Отправка параметра
#include
"RT_HW_NEXT.h"
ago
;
float
ok
;
uint8_t
_uart
26ada142-4e1f-445c-9de1-96c3daea1b99
0ee6803f-3473-4050-8be8-7a4e9598fd71
blink
1abb585b-a8cf-4376-8c3b-0677a11d0b46
490cd564-90e0-4c19-8b7f-9ffb394fc134
42f90685-bb32-4e57-a305-af0642cc865f
ЗАГОЛОВОК_параметра
page0.dhtT.txt=
d8724ebf-705a-4f68-a594-ff35619f421a
RT_HW_Next.directWork(id, nxt);
blink=RT_HW_Next.getParam(nxt,RT_HW_NEXT_PARAM_TICK);
id.dir=0;
#include
"RT_HW_NEXT.h"
id
;
RT_HW_NEXT_DIRECT
ago
;
float
ok
;
uint8_t
event
7e495580-72c4-469f-898b-1814e2620fd4
bc812f23-7600-4976-9789-51ef6157d694
79992059-dee6-488e-a475-4914af2dc07a
ЗАГОЛОВОК_ПАРАМЕТРА
ПЕРИОД_ВЫЗОВА_В_ТИКАХ
f5362184-641b-4740-880a-f893fdcde183
e7305304-03e3-4fc9-9412-eeae6e265e3b
RT_HW_Next.directWork(id, nxt, ПЕРИОД_ВЫЗОВА_В_ТИКАХ );
blink=RT_HW_Next.getParam(nxt,RT_HW_NEXT_PARAM_TICK);
event=id.event;
#include
"RT_HW_NEXT.h"
id
;
RT_HW_NEXT_DIRECT
text_PGM
[] PROGMEM = ЗАГОЛОВОК ;
const char
ago
;
float
ok
;
uint8_t
1c439455-303f-4795-ace0-6d903bf7614f
ЗАГОЛОВОК_ПАРАМЕТРА
page0.dhtT.txt=
d8724ebf-705a-4f68-a594-ff35619f421a
ПЕРИОД_ВЫЗОВА_В_ТИКАХ
f5362184-641b-4740-880a-f893fdcde183
RT_HW_Next.directWork(id, nxt, ПЕРИОД_ВЫЗОВА_В_ТИКАХ );
blink=RT_HW_Next.getParam(nxt,RT_HW_NEXT_PARAM_TICK);
event=id.event;
_uart=id.uart;
if(id.event) {sendToNextion();}
172
#include
"RT_HW_NEXT.h"
id
;
RT_HW_NEXT_DIRECT_ID
ago
;
float
ok
;
uint8_t
String cmnd;
cmnd ="dhtT";
cmnd+=".txt=\"";
cmnd += String(val,2);
cmnd += "\"";
if(RT_HW_Base.console.mess) {RT_HW_Base.printStr(cmnd,'Y');}
RT_HW_Next.sendCmnd(id, cmnd);
void
sendToNextion
22_Дисплей Nextion
e666a384-656d-4e5a-ad88-75cde435cdf7
RT_HW_BASE_7xx_25.12.20
31607647-68ee-4d8b-b569-83bfd84a91f3