Serial на не стандартной скорости

Vладимир
Offline
Зарегистрирован: 27.01.2015

всем привет народ подскажите кто знает

будет ли работать Serial порт на нестандартной скорости например Serial.begin(23498)

а то чел предлагает взятся за один проект а в его устройстве не стандартная скорость порта 

вот думаю сказать ему чтб тащил свою железяку для тестов  или сразу послать его 

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

в его устройстве не стандартная скорость порта 
...сколько ?

Vладимир
Offline
Зарегистрирован: 27.01.2015

100000 бод.

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

Берете ДШ на свой камень, считаете, если не походит, меняете кварц и снова считаете. Шить скетч придётся через ISP. Я не пробовал, потому - теоретически возможно. Нужно пробовать.

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Стандартный сериал работать не будет, но если подправить бегин в стандартной библиотеке, то можно все.

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

Леонардо (у него два UARTa). 16MHz.

void setup()
{
  Serial1.begin(100000UL);
  while(!Serial1) {}
}

void loop()
{
  Serial1.write(0x55);
}

Вот что на выходе:

Т.е. в режиме 8N1 имеем 10 бит. Baudrate 100000 - это 100000 бит в секунду или 10000 фреймов в секунду. 1 фрейм - 1 стартовый бит + 8 бит данных + 1 стоповый = 10бит. 100000 - это 50KHz, что мы и видим на осциллографе.

Кстати говоря, это бодрейт точный, видимо потому и выбран. Насколько будет работать стабильно и надежно - таких данных у меня нет.

Вывод 0x55 выбрано для того, чтобы на выходе была стабильная частотка, т.е. каждый бит было видно и он не сливался со стартовым или стоповым битами.

 

Vладимир
Offline
Зарегистрирован: 27.01.2015

спасибо за исчерпывающий ответ , будем пробовать 

п.с.

а мой осцилограф мыши в гараже за 5 лет уделали гак бог черепаху .

не только провода но и часть платы сожрали

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

Жаль, осциллограф сильно помогает иногда. Хотя я его не так часто включаю. Так что этот ответ и мне информацию дал :)

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Realterm позволяет ввести скорость в виде любого числа. Поставьте и проверьте. У меня работало.
http://realterm.sourceforge.net/

Vладимир
Offline
Зарегистрирован: 27.01.2015

в паре с Realterm 16мгц уна на скорости 100000 зараьотала без всяких бубнов и переделок 

а вот без кварцевая уна на 4мгц работать отказалась выдавая серию одинаковых стрякозябров ,

возможно методом научного тыка и получится запустить ее на 100000бот

for (n=9600;n<521100;n++)

{

Serial.begin(n);

Serial.println(n);

delay(300);

}

:))

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

16МГц идеально делится на 10. Делитель 9. Если 4МГц, то в 4 раза меньше, т.е. 2.5. Ошибка будет большой. По ДШ 115200 ошибка 8.5% если не ошибаюсь. Вот 250000 нормально, 0%
Удачи

Vладимир
Offline
Зарегистрирован: 27.01.2015

в моем случае данные были коректными в диапазоне for (long int n=105000;n<117000;n++)

не ожидал что полоса будет такой широкой

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

Не проще расчитать по формуле? Это будет правильней и меньше шансов получить сюрприз в самый неподходящий момент.

Vладимир
Offline
Зарегистрирован: 27.01.2015

мне поросто доставил удавольствие сам процесс подбора 

да и скорость известна была ,

а еслиб скорость не известна да и отсутствие осцилографа , только подбор и остаётся