Softwareserial h описание библиотеки

Библиотека SoftwareSerial

В Ардуино реализована аппаратная поддержка интерфейса последовательной передачи данных через выводы 0 и 1 (которые также используются для связи с компьютером посредством USB). Аппаратная работа с последовательным интерфейсом осуществляется с помощью встроенного в микроконтроллер специального устройства, называемого приемопередатчиком UART. Он позволяет микроконтроллеру Atmega обрабатывать поступающие данные даже во время работы над другими задачами.

Библиотека SoftwareSerial позволяет реализовать последовательный интерфейс на любых цифровых выводах Ардуино с помощью программных средств, дублирующих функциональность UART (отсюда и название "SoftwareSerial"). Библиотека позволяет программно создавать несколько последовательных портов, работающих на скорости до 115200 бод. Для устройств, работающих с инвертированным сигналом, в библиотеке предусмотрен соответствующий параметр, включающий инвертирование.

Начиная с версии 1.0, SoftwareSerial основывается на библиотеке NewSoftSerial автора Mikal Hart.

Ограничения

Среди известных ограничений библиотеки SoftwareSerial можно перечислить следующие:

  • При использовании нескольких последовательных портов, в каждый момент времени только один из них может получать данные.
  • На платах Arduino Mega и Mega2560 некоторые выводы не поддерживают прерывания, возникающие при изменении уровня сигнала. В силу этого, на данных платах в качестве вывода RX могут использоваться только следующие выводы: 10, 11, 12, 13, 14, 15, 50, 51, 52, 53, A8 (62), A9 (63), A10 (64), A11 (65), A12 (66), A13 (67), A14 (68), A15 (69).
  • На Arduino Leonardo некоторые выводы не поддерживают прерывания, возникающие при изменении уровня сигнала. Поэтому, на этой плате в качестве вывода RX могут использоваться только следующие выводы: 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI).

Вы уже знаете, что комьюнити Ардуино очень большое и ежедневно растёт. За время своего существования оно родило огромное количество библиотек. Я решил составить список самых необычных, интересных и полезных, ссылки ведут на гитхаб или сайт разработчика. Полного набора специализированных библиотек для работы с модулями и шилдами здесь нет! Ищутся в гугле по названию чипа, здесь я оставлял только универсальные. Библиотеки, помеченные как стандартные, скачивать не нужно!

Читайте также:  Php сортировать массив по ключу

Список составлен для библиотек, подходящих для UNO, NANO, MEGA, то есть тут нет мощных библиотек для DUE и ZERO подобных плат. Источники:

Содержание

Все платы Arduino по умолчанию поддерживают последовательную передачу данных. Она осуществляется через 0-ой и 1-ый цифровые контакты, а также через UART – это узел вычислительных устройств, встроенный в чип ATmega. Благодаря UART плата может осуществлять последовательную коммуникацию, даже если чип занимается чем-то другим, но с тем условием, что во время коммуникации не переполняется 64-байтный буфер последовательного порта.

Библиотека SoftwareSerial была разработана, чтобы последовательную коммуникацию можно было выполнять не только на 0-ом и 1-ом, но и на других цифровых контактах Arduino. Это выполняется на программном уровне, благодаря чему библиотека, собственно, и получила свое название – «SoftwareSerial» в переводе означает «последовательная коммуникация, организованная программным методом». С помощью библиотеки SoftwareSerial можно настроить несколько последовательных портов, работающих на скорости до 115200 бит/с. Кроме того, у объекта SoftwareSerial есть специальный параметр, позволяющий инвертировать входящие сигналы – некоторые устройства требуют именно такого протокола передачи данных.

Версия SoftwareSerial, включенная в IDE Arduino 1.0 и позже, основана на библиотеке NewSoftSerial от Микала Харта (Mikal Hart).

Ограничения

Эта библиотека обладает следующими ограничениями:

  • Нельзя одновременно получать данные сразу несколькими портами. В конкретный момент времени это может делать только один порт.
  • Прерывания поддерживаются не на всех контактах Mega и Mega2560, поэтому для RX можно использовать только следующие: 10, 11, 12, 13, 14, 15, 50, 51, 52, 53, A8 (62), A9 (63), A10 (64), A11 (65), A12 (66), A13 (67), A14 (68), A15 (69).
  • Прерывания поддерживаются не на всех контактах Leonardo и Micro, поэтому для RX можно использовать только следующие: 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI).
  • На Arduino/Genuino 101 максимальная скорость передачи данных через RX-контакт составляет 57600 бит/с.
  • На Arduino/Genuino 101 на 13-ом контакте RX не работает.
Читайте также:  Could not initialize zoomgpu

Если ваш проект требует одновременную коммуникацию сразу по нескольким портам, воспользуйтесь библиотекой AltSoftSerial, разработанной Полом Стоффрегеном (Paul Stoffregen). Она исправляет и другие проблемы SoftwareSerial, но имеет собственные ограничения.

Rate this post

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *