Serial на не стандартной скорости
- Войдите на сайт для отправки комментариев
Втр, 14/04/2015 - 13:27
всем привет народ подскажите кто знает
будет ли работать Serial порт на нестандартной скорости например Serial.begin(23498)
а то чел предлагает взятся за один проект а в его устройстве не стандартная скорость порта
вот думаю сказать ему чтб тащил свою железяку для тестов или сразу послать его
в его устройстве не стандартная скорость порта
...сколько ?
100000 бод.
Берете ДШ на свой камень, считаете, если не походит, меняете кварц и снова считаете. Шить скетч придётся через ISP. Я не пробовал, потому - теоретически возможно. Нужно пробовать.
Стандартный сериал работать не будет, но если подправить бегин в стандартной библиотеке, то можно все.
Леонардо (у него два UARTa). 16MHz.
Вот что на выходе:
Т.е. в режиме 8N1 имеем 10 бит. Baudrate 100000 - это 100000 бит в секунду или 10000 фреймов в секунду. 1 фрейм - 1 стартовый бит + 8 бит данных + 1 стоповый = 10бит. 100000 - это 50KHz, что мы и видим на осциллографе.
Кстати говоря, это бодрейт точный, видимо потому и выбран. Насколько будет работать стабильно и надежно - таких данных у меня нет.
Вывод 0x55 выбрано для того, чтобы на выходе была стабильная частотка, т.е. каждый бит было видно и он не сливался со стартовым или стоповым битами.
спасибо за исчерпывающий ответ , будем пробовать
п.с.
а мой осцилограф мыши в гараже за 5 лет уделали гак бог черепаху .
не только провода но и часть платы сожрали
Жаль, осциллограф сильно помогает иногда. Хотя я его не так часто включаю. Так что этот ответ и мне информацию дал :)
Realterm позволяет ввести скорость в виде любого числа. Поставьте и проверьте. У меня работало.
http://realterm.sourceforge.net/
в паре с Realterm 16мгц уна на скорости 100000 зараьотала без всяких бубнов и переделок
а вот без кварцевая уна на 4мгц работать отказалась выдавая серию одинаковых стрякозябров ,
возможно методом научного тыка и получится запустить ее на 100000бот
for (n=9600;n<521100;n++)
{
Serial.begin(n);
Serial.println(n);
delay(300);
}
:))
16МГц идеально делится на 10. Делитель 9. Если 4МГц, то в 4 раза меньше, т.е. 2.5. Ошибка будет большой. По ДШ 115200 ошибка 8.5% если не ошибаюсь. Вот 250000 нормально, 0%
Удачи
в моем случае данные были коректными в диапазоне for (long int n=105000;n<117000;n++)
не ожидал что полоса будет такой широкой
Не проще расчитать по формуле? Это будет правильней и меньше шансов получить сюрприз в самый неподходящий момент.
мне поросто доставил удавольствие сам процесс подбора
да и скорость известна была ,
а еслиб скорость не известна да и отсутствие осцилографа , только подбор и остаётся