Параметры последовательного порта

alexxkr
Offline
Зарегистрирован: 30.12.2012

Доброго времени суток.

Возникла задача испольозовать ардуинку как тестовый источник данных, передаваемых через последовательный порт. Это требуется для отладки  самодельной софтины под линуксом, которая эти данные будет собирать и обрабатывать.

собственно вопросы:

1. какие параметры по-умолчанию выдает ардуина? речь идет о количестве бит, четности, стоп-бите и пр.

2. можно ли и как их править?

Поверхностный гуглеж выдал только возможность выбора скорости при инициализации порта Serial.begin()

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Согласно кода ядра в ArduinoIDE, режимы могут быть такими:

#define SERIAL_5N1 0x00
#define SERIAL_6N1 0x02
#define SERIAL_7N1 0x04
#define SERIAL_8N1 0x06
#define SERIAL_5N2 0x08
#define SERIAL_6N2 0x0A
#define SERIAL_7N2 0x0C
#define SERIAL_8N2 0x0E
#define SERIAL_5E1 0x20
#define SERIAL_6E1 0x22
#define SERIAL_7E1 0x24
#define SERIAL_8E1 0x26
#define SERIAL_5E2 0x28
#define SERIAL_6E2 0x2A
#define SERIAL_7E2 0x2C
#define SERIAL_8E2 0x2E
#define SERIAL_5O1 0x30
#define SERIAL_6O1 0x32
#define SERIAL_7O1 0x34
#define SERIAL_8O1 0x36
#define SERIAL_5O2 0x38
#define SERIAL_6O2 0x3A
#define SERIAL_7O2 0x3C
#define SERIAL_8O2 0x3E

Эти значения можно задавать в Serial.begin вторым параметром.

Я сам не пробовал.

Мельком поглядел в исходники, этот байт записывается в регистр UCSRC (atmega8) или UCSRnC (atmega328p). Можно посмотреть в даташите, там есть вся информация об этих режимах (искать UCSRnC в даташите на atmega328p).

UPD: Да, по-умолчанию SERIAL_8N1

alexxkr
Offline
Зарегистрирован: 30.12.2012

Благодарю, исчерпывающий ответ!