Блок для Расширение GPIO с помощью MCP23017 (CJMCU-2317)
Блок для Расширение GPIO с помощью MCP23017 (CJMCU-2317)
БЛОК ВВОДА_ВЫВОДА MCP23017.
------------------------------------------------------------------------------------------------------------------------------------
Блок осуществляет обмен с регистрами mcp23017 через шину i2c по адресу=addr.
Может быть установлен любой адрес. Если адрес <0, устройство не используется,
Обычно mcp23017 выпускаются с базовым адресом 0x20 (32 десятичный).
Это адрес по умолчанию установлен в библиотеке как "базовый адрес".
Пространство адресов может меняться входами a0,a1,a2 mcp23017 - всего восемь адресов.
Если аddr в диапазоне 0-7, то к этому значению будет прибавлено значение базового адреса.
---------------------------------------------------------------------------------------------------------------------------------
Блок может работать с библиотекой RT_HW_MAIN.h и без неё.
Если до вызова блока шина i2c не инициализирована, блок инициализирует её.
---------------------------------------------------------------------------------------------------------------------------------
Блок содержит два регистра A и B, кадый из которых может настроен на вывод или ввод - всего шесть режимов:
Настройка регистров определяется параметрами пользователя РЕГИСТР_А и РЕГИСТР_B (char):
'U' - вход с подтяжкой внутренним регистром к Vcc и с инверсией;
'u' - вход с подтяжкой внутренним регистром к Vcc без инверсии;
'I' - вход без подтяжки к Vcc и с инверсией;
'i' - вход без подтяжки к Vcc без инверсии;
'O' - выход прямой;
'o' - выход с инверсией.
--------------------------------------------------------------------------------------------------------------------------------------
Обмен с устройством осуществляется периодически с периодом, определяемый параметром "ПЕРИОД В ТИКАХ".
Один тик =50мс. Если ПЕРИОД В ТИКАХ = -1, устанавливается значения периода =10 (соотвествует 500 мс).
При обмене с устройством избыточные операции обмена (не изменились входные данные или регистр не настроен на соответствующий режим)
пропускаются. Этим достигается разгрузка шины i2c.
--------------------------------------------------------------------------------------------------------------------------------------
Алгоритм поиска устройства на шине i2c:
1.При инициализации устанавливается параметр состояния устройства="поиск устройства не оуществлялось" (=0).
2. При первом запуске осуществляется поиск устройства на шине i2c.
Если устройство найдено, вчерез 50мс) выполняется дополнительный (контрольный) поиск
и устанавливается параметр состояния устройства="устройство обнаружено и готово к работе"(=2).
3. Если устройство не найдено, то делается дополнительные 4-попытки обнаружения с периодом 100мс.
4. Если устройство после дополнительных попыток не обнаружено,
то устанавливается параметр состояния устройства="после поиска устройство не обнаружено"(=1).
5. В дальнейшем поиск устройства осуществляется с периодичностью 1 сек.
Эти запросы на шине i2c по длительности минимально короткие и шину не перегружают.
Комментариев 0