====== I2C ======
Шина I2C позволяет микроконтроллеру взаимодействовать с различными устройствами, такими как гироскопы, акселерометры, датчики давления, EEPROM-память, дисплеи.
class:: I2C1, I2C2, I2C3
Объекты из класса уже созданы и для начала работы с ними, достаточно выполнить метод ''I2Cn.setup'', подставив вместо ''n'' — номер шины. К шине ''I2C1'', если она выведена на отдельные контакты, вы можете обращаться как к ''PrimaryI2C''.
Типовой сценарий использования таков:
// Настройка интерфейса
// (необязательна при использовании выделенных I2C)
I2C2.setup({sda: P0, scl: P1, bitrate: 400000});
// Передача пакета данных
I2C2.writeTo(0x28, [0xFF, 0x30]);
// Приём данных
var myTwoBytes = I2C2.readFrom(0x28, 2);
Реализация поддерживает только I²C в режиме ведущего устройства.
===== Методы =====
meth:: I2C.find(pin)
Статический метод возвращает экземпляр интерфейса ''I2C'', который может работать с пином ''pin'' (например, ''I2C1'').
Возвращает ''undefined'', если на пине не поддерживается I²C.
meth:: I2C.readFrom(address, quantity)
Запрашивает ''quantity'' байт от ведомого устройства с адресом ''address''. Посылает STOP-сигнал на шину I²C по завершению. Возвращает полученные данные в виде буфера ''[[js:typedarray#Типизированные массивы|Uint8Array]]''.
Адрес устройства должен быть 7-битным числом или объектом вида ''{address: 12, stop: false}''. В последнем случае в конце запроса не будет послан сигнал STOP.
meth:: I2C.setup(options)
Настраивает I²C-интерфейс на работу с заданными пинами и на заданной скорости.
В качестве ''options'' ожидается объект вида ''{sda: //pin//, scl: //pin//, bitrate: 100000}'', где ''sda'' и ''scl'' — пины с соответствующими функциями, ''bitrate'' — скорость передачи.
Если ''sda'' или ''scl'' не заданы, в качестве значений используются пины по умолчанию для данного I²C-интерфейса.
Если не задан ''bitrate'', используется значение по умолчанию 50000 (50 кГц). Обратите внимание: 400 кГц — максимум для большинства периферии.
Если ''options'' не передан вовсе, используются умолчания для всех значений.
Вызов ''I2C.setup'' необходим для правильной настройки режима работы пинов интерфейса. Однако для экземпляра ''PrimaryI2C'' вызов не обязателен: он настраивается автоматически при старте микроконтроллера.
meth:: I2C.writeTo(address, data, …)
Передаёт данные ведомому I²C-устройству с адресом ''address''. Посылает STOP-сигнал на шину после завершения.
В качестве ''data, …'' ожидается один или более элемент для передачи. Элементами могут быть целые числа, строки, массивы.
Адрес устройства должен быть 7-битным числом или объектом вида ''{address: 12, stop: false}''. В последнем случае в конце запроса не будет послан сигнал STOP.