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