Contr1 ControllerSetting1 0@0 LibraryRoot LibraryGroup-Триггеры LibraryGroup-Таймеры LibraryGroup-Счетчики LibraryGroup-Переключатель LibraryGroup-Датчики LibraryGroup-Для ESP32 LibraryGroup-Микросхемы расширений LibraryGroup-Операции с битами 0@-714 343 0@-138 132 481 0@-84 root output 2 c1b85cbd-d2ee-4dcf-9693-ce68d05ae20b LibraryGroup-Библиотека ДЮАИР_v212_beta_13.11.19 LibraryGroup-8.Внешние устройства 0@0 1 6 3 90@100 110@100 corner: 170@140 90@100 corner: 190@140 126.0d@113.5d EN 90@130 104@130 90@120 corner: 104@140 5 440@70 460@70 corner: 520@410 440@70 corner: 540@410 475.0d@84.5d 440@90 corner: 460@110 200@120 220@120 corner: 300@160 200@120 corner: 320@160 249.0d@133.5d C 200@150 220@150 200@140 corner: 220@160 300@140 corner: 320@160 320@150 16 up 0 V 10.0d 300@150 320@120 corner: 320@150 Sel 440@120 460@120 440@110 corner: 460@130 680@60 700@60 corner: 760@240 680@60 corner: 780@240 706.0d@74.5d 680@80 corner: 694@100 Q1 14.0d 520@120 540@120 540@110 corner: 540@120 Bit - 1 680@110 694@110 680@100 corner: 694@120 Q2 15.0d 520@140 540@140 540@130 corner: 540@140 Bit - 2 680@130 694@130 680@120 corner: 694@140 Q3 520@160 540@160 540@150 corner: 540@160 Bit - 3 680@150 694@150 680@140 corner: 694@160 Q4 16.0d 520@180 540@180 540@170 corner: 540@180 Bit - 4 680@170 694@170 680@160 corner: 694@180 Q5 520@200 540@200 540@190 corner: 540@200 Bit - 5 680@190 694@190 680@180 corner: 694@200 Q6 520@220 540@220 540@210 corner: 540@220 Bit - 6 680@210 694@210 680@200 corner: 694@220 Q7 520@240 540@240 540@230 corner: 540@240 Bit - 7 680@230 694@230 680@220 corner: 694@240 24 840@160 860@160 corner: 920.0d@260 840@160 corner: 940.0d@260 865.0d@174.5d EN 840@190 854@190 mcp23x17 97a520da-0c56-48e9-825e-00b74b71e26b 7a910c09-c236-4efc-91cd-c4aefb7901ba mcp.AB mcp 0a323118-7b5a-4db3-8cf8-665013497fae 181acc1d-7656-420a-b869-2da0e68e3ab7 A ff014b34-8778-49a9-a30f-fe25f120d487 b6dc5752-a6cd-4bfc-b807-84bf3746f699 B 6306baef-b15a-4b05-ace0-4378fc2486d5 93e22d44-8f9c-4b36-9191-e14bfb644fed 88011128-6fd8-463f-b934-50df5cfecabc 02.mcp.AB:вывод в регистры AB ПЕРИОД ОБНОВЛЕНИЯ (в тиках 10мс) dec4f0ee-229e-4074-9fbd-a559d89a694e 22d2e9cc-510f-46cf-b790-e95eadb6ce6b e1b053f1-81dc-4779-8768-cee3b0a144e8 adr mode 46db83cd-1dd0-4a1c-ad45-0a88f22f873b 9a8dbc74-6165-408e-a028-1dba2635028d 5222d8c8-e9aa-453f-b4ad-a758082611b3 01.mcp.AB:вывод в регистры AB БЛОК ВВОДА_ВЫВОДА MCP23017. Блок содержит два 8-разрядных регистра A и B, кадый из которых может настроен на вывод или ввод. Обмен с регистрами осуществляется через шину i2c по адресу=adr или через SPI через пин cs=adr. Если adr <0, устройство не используется. Для i2c: Обычно mcp23017 выпускаются с базовым адресом 0x20 (32 десятичный). Это адрес по умолчанию установлен в библиотеке как "базовый адрес". Пространство адресов может меняться входами a0,a1,a2 mcp23017 - всего восемь адресов. Если аdr в диапазоне 0-7, то к этому значению будет прибавлено значение базового адреса. Алгоритм поиска устройства на шине i2c стандартный для библиотек ecoins. --------------------------------------------------------------------------------------------------------------------------------- Обмен с устройством осуществляется не чаще параметра ПЕРИОД ОБНОВЛЕНИЯ (в тиках 10мс). Вывод може быть постоянный или по изменению входных параметров. --------------------------------------------------------------------------------------------------------------------------------- Режимы работы устанавливаются через пользовательские параметры, из которых формируется регистр управления mode: bit0: 0/1 - подключение: i2c / SPI; bit1: 0/1 - регистр А: вход / выход; bit2: 0/1 - регистр В: вход / выход; bit3: 0/1 - тип выходов: обычный / открытый выход; bit4: 0/1 - инверсия выходов: без инверсии / с инверсией; bit5: 0/1 - режим записи выходов: всегда / по изменению входных значений; bit6: 0/1 - тип входов: без подтяжки к +Vcc / c подтяжкой к +Vcc; bit7: 0/1 - инверсия входов: без инверсии / с инверсией; ----------------------------------------------------------------------------------------------------------------------------------- ecoins@mail.ru 12.07.19; 21.07.19; 28.10.19. new 07.04.2020 1843 ИНТЕРФЕЙС ПОДКЛЮЧЕНИЯ 0/1 i2c/SPI 11b55c63-f8bf-473a-a67b-5729598bcad8 I 2ab33426-f189-430e-8a10-ed7853d2ef5a РЕЖИМ РЕГИСТРА А 0/1- вход/выход 52765991-794d-466f-bce9-44ef99bb21cb 1b9d4afe-dc36-4f17-99d6-09dc19355e3a РЕЖИМ РЕГИСТРА B 0/1- вход/выход 6d0b3850-22c7-4c3a-99b1-173308f84400 ec387e77-2b21-402a-877a-058695c65342 РЕЖИМ ВЫХОДОВ 0/1 - обычный выход/открытый выход 44a0582d-19d2-482f-91a7-e4333de6e6c4 f89da492-c39d-4ce1-8f1e-b4271ae11189 ИНВЕРСИЯ ВЫХОДОВ 0/1 - нет инверсии выходов/инверсия выходов d12537cd-5bd3-4aee-877b-0a1b85a848b6 38bf66d7-60e6-4e06-8368-17b1f34e5da7 РЕЖИМ ЗАПИСИ ВЫХОДНЫХ ЗНАЧЕНИЙ 0/1 всегда/по изменению 6c3e9ac0-f9cc-4a19-8509-bf27bebf839a e61c910d-3149-42af-b39a-5ec34e8470b8 ПОДТЯЖКА ВХОДОВ К Vcc 0/1 - нет подтяжки/подтяжка к +Vcc fbf3c7c7-c603-43db-9c01-8a72cf19d788 aa98a3f2-330b-46e6-8d35-ce72d399ae9a ИНВЕРСИЯ ВХОДОВ 0/1 -нет инверсии/инверсия входов 691bfa9a-a89b-4fb1-ae98-27280d5eb8ff 836ad0a5-ad3d-4955-98fb-eaad3681bdb0 //-----Вывод в mcp23017 if (!z.custom) {z.mode=0; bitWrite(z.mode,0, ИНТЕРФЕЙС ПОДКЛЮЧЕНИЯ ); bitWrite(z.mode,1, РЕЖИМ РЕГИСТРА А ); bitWrite(z.mode,2, РЕЖИМ РЕГИСТРА B ); bitWrite(z.mode,3, РЕЖИМ ВЫХОДОВ ); bitWrite(z.mode,4, ИНВЕРСИЯ ВЫХОДОВ ); bitWrite(z.mode,5, РЕЖИМ ЗАПИСИ ВЫХОДНЫХ ЗНАЧЕНИЙ ); bitWrite(z.mode,6, ПОДТЯЖКА ВХОДОВ К Vcc ); bitWrite(z.mode,7, ИНВЕРСИЯ ВХОДОВ ); RT_HW_mcp23017.setID_device(z, (int8_t)adr,ПЕРИОД ОБНОВЛЕНИЯ (в тиках 10мс) ); } //RT_HW_mcp_23017.device (mcp); mode=z.mode; //------------------------------------------------------------------------------------------------- 628 z.custom=0; 11 #include "RT_HW_MCP23017.h" z ; RT_HW_MCP23017_DEVICE mode ; uint8_t outA 094199f9-cb99-48aa-a3dd-14ab26370dd0 08e2598f-d0f0-441a-b4df-10f89b57985c outB 6ebe6d9c-6384-4426-92eb-7a2c329d6fb6 cc21771f-3906-4019-8c2b-f22a5b40ee8e c71075da-3e47-4925-83f8-fe0b12fb164a ПЕРИОД ОБНОВЛЕНИЯ В ТИКАХ 10_МС РЕЖИМ_РЕГИСТРА_A 0/1- ввод/вывод РЕЖИМ_РЕГИСТРА_B 0/1- ввод/вывод ИНВЕРСИЯ РЕГИСТРА_А ИНВЕРСИЯ РЕГИСТРА_В ВХОДА РЕГИСТРА_A 0/1 - без подтяжки/ с подтяжкой к +Vcc ВХОДА РЕГИСТРА_В 0/1 - без подтяжки/ с подтяжкой к +Vcc 1fb2c269-4b78-45fd-9428-51d878ff3819 b367804a-b80c-4a9b-b628-0cc66e98ad1e РЕЖИМ ЗАПИСИ //-----Вывод в mcp23017 if (!z.ok.custom) {z.mode=0; bitWrite(z.mode,0, ИНТЕРФЕЙС ПОДКЛЮЧЕНИЯ ); //--bit0: 0/1 ->i2c/SPI; bitWrite(z.mode,1, РЕЖИМ_РЕГИСТРА_A ); //--bit1: 0/1 ->вывод/ввод; bitWrite(z.mode,2, РЕЖИМ_РЕГИСТРА_B ); //--bit2: 0/1 ->вывод/ввод; bitWrite(z.mode,3, ИНВЕРСИЯ РЕГИСТРА_А ); //--bit3: 0/1 ->без инверсии/ с инверсией; bitWrite(z.mode,4, ИНВЕРСИЯ РЕГИСТРА_В ); //--bit4: 0/1 ->без инверсии/ с инверсией; ; bitWrite(z.mode,5, ВХОДА РЕГИСТРА_A ); //--bit5: 0/1 ->без подтяжки/ с подтяжкой к Vcc; bitWrite(z.mode,6, ВХОДА РЕГИСТРА_В ); //--bit6: 0/1 ->без подтяжки/ с подтяжкой к Vcc; bitWrite(z.mode,7, РЕЖИМ ЗАПИСИ ); //--bit5: 0/1 ->в каждом цикле/ по изменениям значения; RT_HW_mcp23017.setID_device(z, (int8_t)adr, ПЕРИОД ОБНОВЛЕНИЯ В ТИКАХ 10_МС ); } //RT_HW_mcp_23017.device (mcp); mode=z.mode; outA=z.regA; outB=z.regB; //------------------------------------------------------------------------------------------------- 987 z.ok.custom=0; 14 #include "RT_HW_MCP23017.h" z ; RT_HW_MCP23017_DEVICE inA inB 2e8e2041-f3ad-4250-90ac-ae91ea9b30c9 00_mcp23x17:ввод/вывод регистров A,B БЛОК ВВОДА_ВЫВОДА MCP23017. Блок содержит два 8-разрядных регистра A и B, кадый из которых может настроен на вывод или ввод. Настройка режимов работы регистров А и В: w - вывод с записью в каждом цикле; W -вывод с записью по изменению; r -ввод; R -ввод с инверсией и подтяжкой входов к +Vcc Обмен с регистрами осуществляется через шину i2c по адресу=adr или через SPI через пин cs=adr. Если adr <0, устройство не используется. Для i2c: Обычно mcp23017 выпускаются с базовым адресом 0x20 (32 десятичный). Это адрес по умолчанию установлен в библиотеке как "базовый адрес". Пространство адресов может меняться входами a0,a1,a2 mcp23017 - всего восемь адресов. Если аdr в диапазоне 0-7, то к этому значению будет прибавлено значение базового адреса. Алгоритм поиска устройства на шине i2c стандартный для библиотек ecoins. --------------------------------------------------------------------------------------------------------------------------------- Обмен с устройством осуществляется не чаще параметра ПЕРИОД ОБНОВЛЕНИЯ (в тиках 10мс). Вывод може быть постоянный или по изменению входных параметров. --------------------------------------------------------------------------------------------------------------------------------- Режимы работы устанавливаются через пользовательские параметры, из которых формируется регистр управления mode: bit0: 0/1 - подключение: i2c / SPI; bit1: 0/1 - регистр А: вход / выход; bit2: 0/1 - регистр В: вход / выход; bit3: 0/1 - тип выходов: обычный / открытый выход; bit4: 0/1 - инверсия выходов: без инверсии / с инверсией; bit5: 0/1 - режим записи выходов: всегда / по изменению входных значений; bit6: 0/1 - тип входов: без подтяжки к +Vcc / c подтяжкой к +Vcc; bit7: 0/1 - инверсия входов: без инверсии / с инверсией; ----------------------------------------------------------------------------------------------------------------------------------- ecoins@mail.ru 12.07.19; 21.07.19; 28.10.19. new 07.04.2020 2017 РЕЖИМ РЕГИСТРА_А aee3ecaf-a995-4b82-86a1-2b7bdf962b27 W W 5b2166f0-8718-4d0b-af19-c332e0a5a0be РЕЖИМ РЕГИСТРА_В a42c586a-4d87-48da-a187-068226f81a6f W W 8a87ae01-1c27-4140-a64b-a31164f99ad3 ИНТЕРФЕЙС ПОДКЛЮЧЕНИЯ 'i' -i2c; 's' -SPI 8072dca6-5e9a-41c5-af47-636d6c496942 i i 70ccce9c-d3fa-43b4-aea5-168e660a39d2 ИНИЦИАЛИЗИРОВАТЬ ИНТЕРФЕЙСЫ c8b7ba52-0872-45b4-9a4b-372dac9b5749 N Y ca60dc20-e812-4f4f-8cc0-6e50b74271bf //-----Вывод в mcp23017 if(EN){ if (!z.ok.custom) { if( ИНИЦИАЛИЗИРОВАТЬ ИНТЕРФЕЙСЫ == 'Y') RT_HW_mcp23017.hive.permit_bus=true; RT_HW_mcp23017.setID_device(z, (int8_t)adr, ИНТЕРФЕЙС ПОДКЛЮЧЕНИЯ , РЕЖИМ РЕГИСТРА_А , РЕЖИМ РЕГИСТРА_В , ПЕРИОД ОБНОВЛЕНИЯ В ТИКАХ 10_МС );} RT_HW_mcp23017.direct (z, A , B); } //tun=z.tuning; inA=z.inA; inB=z.inB; //------------------------------------------------------------------------------------------------- 454 #include "RT_HW_MCP23017.h" z ; RT_HW_MCP23017_DEVICE 840@180 corner: 854@200 840@210 860@210 832.0d@213.5d 840@200 corner: 860@220 840@220 corner: 860@240 17 680@240 700@240 corner: 760@420 680@240 corner: 780@420 706.0d@254.5d Q8 520@260 540@260 540@260 corner: 540@270 Bit - 0 680@270 694@270 680@260 corner: 694@280 Q9 520@280 540@280 540@280 corner: 540@290 Bit - 1 680@290 694@290 680@280 corner: 694@300 Q10 21.0d 520@300 540@300 540@300 corner: 540@310 Bit - 2 680@310 694@310 680@300 corner: 694@320 Q11 20.0d 520@320 540@320 540@320 corner: 540@330 Bit - 3 680@330 694@330 680@320 corner: 694@340 Q12 520@340 540@340 540@340 corner: 540@350 Bit - 4 680@350 694@350 680@340 corner: 694@360 Q13 520@360 540@360 540@360 corner: 540@370 Bit - 5 680@370 694@370 680@360 corner: 694@380 Q14 22.0d 520@380 540@380 540@380 corner: 540@390 Bit - 6 680@390 694@390 680@380 corner: 694@400 Q15 520@400 540@400 540@400 corner: 540@410 Bit - 7 680@410 694@410 680@400 corner: 694@420 760@400 corner: 780@420 780@410 Byte 760@410 780@250 corner: 780@410 840@250 860@250 840@240 corner: 860@260 18.0d 920.0d@230 940.0d@230 920.0d@220 corner: 940.0d@240 17.0d 920.0d@250 940.0d@250 920.0d@240 corner: 940.0d@260 840@230 a00a7f6a-010d-4762-bf6c-4ebe833b3c04 БЛОК ВВОДА-ВЫВОДА mcp23017/mcp23s17 1. Блок содержит два 8-разрядных регистра A и B, каждый из которых может настроен на вывод или ввод. 2. Настройка режимов работы регистров А и В: R -ввод с инверсией и подтяжкой входов к +Vcc. Выполняется при каждом обращении к регистру. r - ввод. Выполняется при каждом обращении к регистру. w - вывод. Выполняется при каждом обращении к регистру. W -вывод с записью по изменению. Выполняется при инициализации(1 раз) и при каждом изменении значения регистра. Использование режим W существенно разгружает шину i2c, и соответственно проект меньше "тормозит". 3. Обмен с регистрами осуществляется через шину i2c по адресу=adr или через SPI через пин cs=adr. 3. Если входное значение адреса устройств=adr <0, устройство не используется. 4. Для i2c: Обычно mcp23017 выпускаются с базовым адресом 0x20 (32 десятичный). Это адрес по умолчанию установлен в библиотеке как "базовый адрес". Пространство адресов может меняться входами a0,a1,a2 mcp23017 - всего восемь адресов. Для удобства возможно применение значение аdr в диапазоне 0-7, он будет преобразован в 32/39. 5. Алгоритм поиска устройства на шине i2c. Период опроса в режиме поиска устройства постепенно увеличивается со 100 мс до 2 сек с шагом 100 мс. После обнаружения устройства оно инициируется и работа с ним выполняется в периодом опроса, определенный параметром пользователя ПЕРИОД ОБНОВЛЕНИЯ В ТИКАХ 10_МС пока не будет обнаружено устройство. 6. Обмен с регистрами выполняется с периодом = ПЕРИОД ОБНОВЛЕНИЯ В ТИКАХ 10_МС. Например, если значение этого параметра =5(установлен по умолчанию), период=10 х 5=50 мс. 7. Если ПЕРИОД ОБНОВЛЕНИЯ В ТИКАХ 10_МС=0, то обмен с регистрами выполняется при каждом обращении к блоку. 8. Вход EN разрешает работу блока. Через этот вход можно также управлять периодом обмена с устройством. В этом случае удобнее установить ПЕРИОД ОБНОВЛЕНИЯ В ТИКАХ 10_МС=0. 9. Если требуется управление через побитовое управление или побитовое чтение, можно применить стандартные блоки FLProg из меню "Операции с битами": Bits->Byte, Byte->Bits. 10. Параметр пользователя ИНТЕРФЕЙС ПОДКЛЮЧЕНИЯ может принимать два значения (по умолчанию 'i'): 'i' - интерфейс i2c (используется чип mcp230170); 's' - интерфейс SPI (используется чип mcp23s170); 11. Параметр пользователя ИНИЦИАЛИЗИРОВАТЬ ИНТЕРФЕЙСЫ может принимать два значения (по умолчанию 'Y'): 'Y' - инициируется используемые интерфейсы функциями Wire.begin() или SPI.begin(); 'N' - инициализация не выполняется. В этом случае считается, что интерфейсы уже инициализированы. Опция может быть полезна при использовании контроллеров с настраиваемым пинами интерфейсов, например ESP8266. Примечание: со временем этот параметр будет устранен из параметров пользователя. ----------------------------------------------------------------------------------------------------------------------------------- ecoins@mail.ru 12.07.19; 21.07.19; 28.10.19. new 07.04.2020, 01.06.20. 3035 R, r, W, w -любой другой символ соответствует R W R, r, W, w -любой другой символ соответствует R W i Y 60.0d 860@230 780@230 corner: 780@230 760@230 780@230 760@220 corner: 780@240 680@90 Bit - 0 694@90 540@90 corner: 540@100 Q0 520@100 540@100 520@90 corner: 540@110 520@110 corner: 540@130 520@130 corner: 540@150 520@150 corner: 540@170 520@170 corner: 540@190 520@190 corner: 540@210 520@210 corner: 540@230 520@230 corner: 540@250 520@250 corner: 540@270 520@270 corner: 540@290 520@290 corner: 540@310 520@310 corner: 540@330 520@330 corner: 540@350 520@350 corner: 540@370 520@370 corner: 540@390 520@390 corner: 540@410 440@100 V 460@100 19 210@50 230@50 corner: 275.0d@70 210@50 corner: 295.0d@70 234@64.0d 210@50 corner: 230@70 210@60 8.0d 37.0d LED D5 18 ss D5 digital 1000 8 230@60 26 190@480 210@480 corner: 270@660 190@480 corner: 290@660 216.0d@494.5d 190@500 corner: 210@520 190@530 204@530 190@520 corner: 204@540 190@550 210@550 190@540 corner: 210@560 190@570 210@570 190@560 corner: 210@580 190@590 210@590 190@580 corner: 210@600 190@610 210@610 190@600 corner: 210@620 190@630 210@630 190@620 corner: 210@640 190@650 210@650 190@640 corner: 210@660 25 290@500 310@500 corner: 370.0d@600 290@500 corner: 390.0d@600 315.0d@514.5d EN 290@530 304@530 mcp23x17 97a520da-0c56-48e9-825e-00b74b71e26b 7a910c09-c236-4efc-91cd-c4aefb7901ba mcp.AB mcp 0a323118-7b5a-4db3-8cf8-665013497fae 181acc1d-7656-420a-b869-2da0e68e3ab7 A ff014b34-8778-49a9-a30f-fe25f120d487 b6dc5752-a6cd-4bfc-b807-84bf3746f699 B 6306baef-b15a-4b05-ace0-4378fc2486d5 93e22d44-8f9c-4b36-9191-e14bfb644fed 88011128-6fd8-463f-b934-50df5cfecabc 02.mcp.AB:вывод в регистры AB ПЕРИОД ОБНОВЛЕНИЯ (в тиках 10мс) dec4f0ee-229e-4074-9fbd-a559d89a694e 22d2e9cc-510f-46cf-b790-e95eadb6ce6b e1b053f1-81dc-4779-8768-cee3b0a144e8 adr mode 46db83cd-1dd0-4a1c-ad45-0a88f22f873b 9a8dbc74-6165-408e-a028-1dba2635028d 5222d8c8-e9aa-453f-b4ad-a758082611b3 01.mcp.AB:вывод в регистры AB БЛОК ВВОДА_ВЫВОДА MCP23017. Блок содержит два 8-разрядных регистра A и B, кадый из которых может настроен на вывод или ввод. Обмен с регистрами осуществляется через шину i2c по адресу=adr или через SPI через пин cs=adr. Если adr <0, устройство не используется. Для i2c: Обычно mcp23017 выпускаются с базовым адресом 0x20 (32 десятичный). Это адрес по умолчанию установлен в библиотеке как "базовый адрес". Пространство адресов может меняться входами a0,a1,a2 mcp23017 - всего восемь адресов. Если аdr в диапазоне 0-7, то к этому значению будет прибавлено значение базового адреса. Алгоритм поиска устройства на шине i2c стандартный для библиотек ecoins. --------------------------------------------------------------------------------------------------------------------------------- Обмен с устройством осуществляется не чаще параметра ПЕРИОД ОБНОВЛЕНИЯ (в тиках 10мс). Вывод може быть постоянный или по изменению входных параметров. --------------------------------------------------------------------------------------------------------------------------------- Режимы работы устанавливаются через пользовательские параметры, из которых формируется регистр управления mode: bit0: 0/1 - подключение: i2c / SPI; bit1: 0/1 - регистр А: вход / выход; bit2: 0/1 - регистр В: вход / выход; bit3: 0/1 - тип выходов: обычный / открытый выход; bit4: 0/1 - инверсия выходов: без инверсии / с инверсией; bit5: 0/1 - режим записи выходов: всегда / по изменению входных значений; bit6: 0/1 - тип входов: без подтяжки к +Vcc / c подтяжкой к +Vcc; bit7: 0/1 - инверсия входов: без инверсии / с инверсией; ----------------------------------------------------------------------------------------------------------------------------------- ecoins@mail.ru 12.07.19; 21.07.19; 28.10.19. new 07.04.2020 ИНТЕРФЕЙС ПОДКЛЮЧЕНИЯ 0/1 i2c/SPI 11b55c63-f8bf-473a-a67b-5729598bcad8 I 2ab33426-f189-430e-8a10-ed7853d2ef5a РЕЖИМ РЕГИСТРА А 0/1- вход/выход 52765991-794d-466f-bce9-44ef99bb21cb 1b9d4afe-dc36-4f17-99d6-09dc19355e3a РЕЖИМ РЕГИСТРА B 0/1- вход/выход 6d0b3850-22c7-4c3a-99b1-173308f84400 ec387e77-2b21-402a-877a-058695c65342 РЕЖИМ ВЫХОДОВ 0/1 - обычный выход/открытый выход 44a0582d-19d2-482f-91a7-e4333de6e6c4 f89da492-c39d-4ce1-8f1e-b4271ae11189 ИНВЕРСИЯ ВЫХОДОВ 0/1 - нет инверсии выходов/инверсия выходов d12537cd-5bd3-4aee-877b-0a1b85a848b6 38bf66d7-60e6-4e06-8368-17b1f34e5da7 РЕЖИМ ЗАПИСИ ВЫХОДНЫХ ЗНАЧЕНИЙ 0/1 всегда/по изменению 6c3e9ac0-f9cc-4a19-8509-bf27bebf839a e61c910d-3149-42af-b39a-5ec34e8470b8 ПОДТЯЖКА ВХОДОВ К Vcc 0/1 - нет подтяжки/подтяжка к +Vcc fbf3c7c7-c603-43db-9c01-8a72cf19d788 aa98a3f2-330b-46e6-8d35-ce72d399ae9a ИНВЕРСИЯ ВХОДОВ 0/1 -нет инверсии/инверсия входов 691bfa9a-a89b-4fb1-ae98-27280d5eb8ff 836ad0a5-ad3d-4955-98fb-eaad3681bdb0 //-----Вывод в mcp23017 if (!z.custom) {z.mode=0; bitWrite(z.mode,0, ИНТЕРФЕЙС ПОДКЛЮЧЕНИЯ ); bitWrite(z.mode,1, РЕЖИМ РЕГИСТРА А ); bitWrite(z.mode,2, РЕЖИМ РЕГИСТРА B ); bitWrite(z.mode,3, РЕЖИМ ВЫХОДОВ ); bitWrite(z.mode,4, ИНВЕРСИЯ ВЫХОДОВ ); bitWrite(z.mode,5, РЕЖИМ ЗАПИСИ ВЫХОДНЫХ ЗНАЧЕНИЙ ); bitWrite(z.mode,6, ПОДТЯЖКА ВХОДОВ К Vcc ); bitWrite(z.mode,7, ИНВЕРСИЯ ВХОДОВ ); RT_HW_mcp23017.setID_device(z, (int8_t)adr,ПЕРИОД ОБНОВЛЕНИЯ (в тиках 10мс) ); } //RT_HW_mcp_23017.device (mcp); mode=z.mode; //------------------------------------------------------------------------------------------------- z.custom=0; #include "RT_HW_MCP23017.h" z ; RT_HW_MCP23017_DEVICE mode ; uint8_t outA 094199f9-cb99-48aa-a3dd-14ab26370dd0 08e2598f-d0f0-441a-b4df-10f89b57985c outB 6ebe6d9c-6384-4426-92eb-7a2c329d6fb6 cc21771f-3906-4019-8c2b-f22a5b40ee8e c71075da-3e47-4925-83f8-fe0b12fb164a ПЕРИОД ОБНОВЛЕНИЯ В ТИКАХ 10_МС РЕЖИМ_РЕГИСТРА_A 0/1- ввод/вывод РЕЖИМ_РЕГИСТРА_B 0/1- ввод/вывод ИНВЕРСИЯ РЕГИСТРА_А ИНВЕРСИЯ РЕГИСТРА_В ВХОДА РЕГИСТРА_A 0/1 - без подтяжки/ с подтяжкой к +Vcc ВХОДА РЕГИСТРА_В 0/1 - без подтяжки/ с подтяжкой к +Vcc 1fb2c269-4b78-45fd-9428-51d878ff3819 b367804a-b80c-4a9b-b628-0cc66e98ad1e РЕЖИМ ЗАПИСИ //-----Вывод в mcp23017 if (!z.ok.custom) {z.mode=0; bitWrite(z.mode,0, ИНТЕРФЕЙС ПОДКЛЮЧЕНИЯ ); //--bit0: 0/1 ->i2c/SPI; bitWrite(z.mode,1, РЕЖИМ_РЕГИСТРА_A ); //--bit1: 0/1 ->вывод/ввод; bitWrite(z.mode,2, РЕЖИМ_РЕГИСТРА_B ); //--bit2: 0/1 ->вывод/ввод; bitWrite(z.mode,3, ИНВЕРСИЯ РЕГИСТРА_А ); //--bit3: 0/1 ->без инверсии/ с инверсией; bitWrite(z.mode,4, ИНВЕРСИЯ РЕГИСТРА_В ); //--bit4: 0/1 ->без инверсии/ с инверсией; ; bitWrite(z.mode,5, ВХОДА РЕГИСТРА_A ); //--bit5: 0/1 ->без подтяжки/ с подтяжкой к Vcc; bitWrite(z.mode,6, ВХОДА РЕГИСТРА_В ); //--bit6: 0/1 ->без подтяжки/ с подтяжкой к Vcc; bitWrite(z.mode,7, РЕЖИМ ЗАПИСИ ); //--bit5: 0/1 ->в каждом цикле/ по изменениям значения; RT_HW_mcp23017.setID_device(z, (int8_t)adr, ПЕРИОД ОБНОВЛЕНИЯ В ТИКАХ 10_МС ); } //RT_HW_mcp_23017.device (mcp); mode=z.mode; outA=z.regA; outB=z.regB; //------------------------------------------------------------------------------------------------- z.ok.custom=0; #include "RT_HW_MCP23017.h" z ; RT_HW_MCP23017_DEVICE inA inB 2e8e2041-f3ad-4250-90ac-ae91ea9b30c9 00_mcp23x17:ввод/вывод регистров A,B БЛОК ВВОДА_ВЫВОДА MCP23017. Блок содержит два 8-разрядных регистра A и B, кадый из которых может настроен на вывод или ввод. Настройка режимов работы регистров А и В: w - вывод с записью в каждом цикле; W -вывод с записью по изменению; r -ввод; R -ввод с инверсией и подтяжкой входов к +Vcc Обмен с регистрами осуществляется через шину i2c по адресу=adr или через SPI через пин cs=adr. Если adr <0, устройство не используется. Для i2c: Обычно mcp23017 выпускаются с базовым адресом 0x20 (32 десятичный). Это адрес по умолчанию установлен в библиотеке как "базовый адрес". Пространство адресов может меняться входами a0,a1,a2 mcp23017 - всего восемь адресов. Если аdr в диапазоне 0-7, то к этому значению будет прибавлено значение базового адреса. Алгоритм поиска устройства на шине i2c стандартный для библиотек ecoins. --------------------------------------------------------------------------------------------------------------------------------- Обмен с устройством осуществляется не чаще параметра ПЕРИОД ОБНОВЛЕНИЯ (в тиках 10мс). Вывод може быть постоянный или по изменению входных параметров. --------------------------------------------------------------------------------------------------------------------------------- Режимы работы устанавливаются через пользовательские параметры, из которых формируется регистр управления mode: bit0: 0/1 - подключение: i2c / SPI; bit1: 0/1 - регистр А: вход / выход; bit2: 0/1 - регистр В: вход / выход; bit3: 0/1 - тип выходов: обычный / открытый выход; bit4: 0/1 - инверсия выходов: без инверсии / с инверсией; bit5: 0/1 - режим записи выходов: всегда / по изменению входных значений; bit6: 0/1 - тип входов: без подтяжки к +Vcc / c подтяжкой к +Vcc; bit7: 0/1 - инверсия входов: без инверсии / с инверсией; ----------------------------------------------------------------------------------------------------------------------------------- ecoins@mail.ru 12.07.19; 21.07.19; 28.10.19. new 07.04.2020 РЕЖИМ РЕГИСТРА_А aee3ecaf-a995-4b82-86a1-2b7bdf962b27 W W 5b2166f0-8718-4d0b-af19-c332e0a5a0be РЕЖИМ РЕГИСТРА_В a42c586a-4d87-48da-a187-068226f81a6f W W 8a87ae01-1c27-4140-a64b-a31164f99ad3 ИНТЕРФЕЙС ПОДКЛЮЧЕНИЯ 'i' -i2c; 's' -SPI 8072dca6-5e9a-41c5-af47-636d6c496942 i i 70ccce9c-d3fa-43b4-aea5-168e660a39d2 ИНИЦИАЛИЗИРОВАТЬ ИНТЕРФЕЙСЫ c8b7ba52-0872-45b4-9a4b-372dac9b5749 N Y ca60dc20-e812-4f4f-8cc0-6e50b74271bf //-----Вывод в mcp23017 if(EN){ if (!z.ok.custom) { if( ИНИЦИАЛИЗИРОВАТЬ ИНТЕРФЕЙСЫ == 'Y') RT_HW_mcp23017.hive.permit_bus=true; RT_HW_mcp23017.setID_device(z, (int8_t)adr, ИНТЕРФЕЙС ПОДКЛЮЧЕНИЯ , РЕЖИМ РЕГИСТРА_А , РЕЖИМ РЕГИСТРА_В , ПЕРИОД ОБНОВЛЕНИЯ В ТИКАХ 10_МС );} RT_HW_mcp23017.direct (z, A , B); } //tun=z.tuning; inA=z.inA; inB=z.inB; //------------------------------------------------------------------------------------------------- #include "RT_HW_MCP23017.h" z ; RT_HW_MCP23017_DEVICE 290@520 corner: 304@540 290@550 310@550 284.0d@553.5d 290@540 corner: 310@560 290@570 310@570 290@560 corner: 310@580 290@580 corner: 310@600 23 410@470 430@470 corner: 490@650 410@470 corner: 510@650 435.5d@484.5d 410@490 corner: 430@510 7 530@490 550@490 corner: 594.0d@510 530@490 corner: 614.0d@510 554@504.0d 530@490 corner: 550@510 530@500 36.0d LED 32 9 32 D32 550@500 510@500 corner: 510@500 Bit - 0 29.0d 490@500 510@500 490@490 corner: 510@510 10 530@510 550@510 corner: 594.0d@530 530@510 corner: 614.0d@530 554@524.0d 530@510 corner: 550@530 530@520 LED 18 sck D18 550@520 510@520 corner: 510@520 Bit - 1 28.0d 490@520 510@520 490@510 corner: 510@530 Bit - 2 490@540 510@540 490@530 corner: 510@550 Bit - 3 490@560 510@560 490@550 corner: 510@570 Bit - 4 30.0d 490@580 510@580 490@570 corner: 510@590 Bit - 5 490@600 510@600 490@590 corner: 510@610 Bit - 6 490@620 510@620 490@610 corner: 510@630 Bit - 7 490@640 510@640 490@630 corner: 510@650 410@500 Byte 430@500 390.0d@500 corner: 390.0d@570 370.0d@570 390.0d@570 370.0d@560 corner: 390.0d@580 370.0d@590 390.0d@590 370.0d@580 corner: 390.0d@600 290@590 a00a7f6a-010d-4762-bf6c-4ebe833b3c04 БЛОК ВВОДА-ВЫВОДА mcp23017/mcp23s17 1. Блок содержит два 8-разрядных регистра A и B, каждый из которых может настроен на вывод или ввод. 2. Настройка режимов работы регистров А и В: R -ввод с инверсией и подтяжкой входов к +Vcc. Выполняется при каждом обращении к регистру. r - ввод. Выполняется при каждом обращении к регистру. w - вывод. Выполняется при каждом обращении к регистру. W -вывод с записью по изменению. Выполняется при инициализации(1 раз) и при каждом изменении значения регистра. Использование режим W существенно разгружает шину i2c, и соответственно проект меньше "тормозит". 3. Обмен с регистрами осуществляется через шину i2c по адресу=adr или через SPI через пин cs=adr. 3. Если входное значение адреса устройств=adr <0, устройство не используется. 4. Для i2c: Обычно mcp23017 выпускаются с базовым адресом 0x20 (32 десятичный). Это адрес по умолчанию установлен в библиотеке как "базовый адрес". Пространство адресов может меняться входами a0,a1,a2 mcp23017 - всего восемь адресов. Для удобства возможно применение значение аdr в диапазоне 0-7, он будет преобразован в 32/39. 5. Алгоритм поиска устройства на шине i2c. Период опроса в режиме поиска устройства постепенно увеличивается со 100 мс до 2 сек с шагом 100 мс. После обнаружения устройства оно инициируется и работа с ним выполняется в периодом опроса, определенный параметром пользователя ПЕРИОД ОБНОВЛЕНИЯ В ТИКАХ 10_МС пока не будет обнаружено устройство. 6. Обмен с регистрами выполняется с периодом = ПЕРИОД ОБНОВЛЕНИЯ В ТИКАХ 10_МС. Например, если значение этого параметра =5(установлен по умолчанию), период=10 х 5=50 мс. 7. Если ПЕРИОД ОБНОВЛЕНИЯ В ТИКАХ 10_МС=0, то обмен с регистрами выполняется при каждом обращении к блоку. 8. Вход EN разрешает работу блока. Через этот вход можно также управлять периодом обмена с устройством. В этом случае удобнее установить ПЕРИОД ОБНОВЛЕНИЯ В ТИКАХ 10_МС=0. 9. Если требуется управление через побитовое управление или побитовое чтение, можно применить стандартные блоки FLProg из меню "Операции с битами": Bits->Byte, Byte->Bits. 10. Параметр пользователя ИНТЕРФЕЙС ПОДКЛЮЧЕНИЯ может принимать два значения (по умолчанию 'i'): 'i' - интерфейс i2c (используется чип mcp230170); 's' - интерфейс SPI (используется чип mcp23s170); 11. Параметр пользователя ИНИЦИАЛИЗИРОВАТЬ ИНТЕРФЕЙСЫ может принимать два значения (по умолчанию 'Y'): 'Y' - инициируется используемые интерфейсы функциями Wire.begin() или SPI.begin(); 'N' - инициализация не выполняется. В этом случае считается, что интерфейсы уже инициализированы. Опция может быть полезна при использовании контроллеров с настраиваемым пинами интерфейсов, например ESP8266. Примечание: со временем этот параметр будет устранен из параметров пользователя. ----------------------------------------------------------------------------------------------------------------------------------- ecoins@mail.ru 12.07.19; 21.07.19; 28.10.19. new 07.04.2020, 01.06.20. R, r, W, w -любой другой символ соответствует R R R, r, W, w -любой другой символ соответствует R W i Y 310@590 290@590 corner: 290@650 270@650 290@650 270@640 corner: 290@660 190@510 210@510 190@60 corner: 190@530 Q 9.0d 170@130 190@130 170@120 corner: 190@140 simetricMulti 200 741.0d 9600 arduinoIDE 40 4096 87694055 ESP32 WROOM DEVKIT V1 215230342 4 12 13 15 default