пин.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