Страница 1 из 1

UART 115Кбод на Мегах.

Добавлено: Вт июн 27, 2023 13:39:11
muravei_
Все это было на ардуинах На 3в и 8 МГц 328 принимает только первый байт без ошибок на 115,
а на 5в 16МГц 2560 работает. Почему? По ДШ там 3% ошибки на этих частотах и скорости.

Re: UART 115Кбод на Мегах.

Добавлено: Ср июн 28, 2023 07:16:35
OKF
Наверно потому, что арифметику в школе не учили. На 8-ми погрешность -3,5%, а на 16-ти +2,1.

Re: UART 115Кбод на Мегах.

Добавлено: Ср июн 28, 2023 13:06:35
veso74
В помощь: WormFood's AVR Baud Rate Calculator
Посмотрите на погрешность. Находитесь за пределами рекомендуемой ошибки.

Re: UART 115Кбод на Мегах.

Добавлено: Ср июн 28, 2023 14:49:39
OKF
Только немножко врут эти калькуляторы. Причём, все одинаково. Видать под копирку делались.)

Re: UART 115Кбод на Мегах.

Добавлено: Ср июн 28, 2023 21:09:14
Starichok51
в даташитах на эти МК есть эти таблицы, причем, правильные.

Re: UART 115Кбод на Мегах.

Добавлено: Ср июн 28, 2023 21:10:19
Eleprekra
Кстати, в avr-gcc давно есть заголовочный файл <util/setbaud.h>
Если погрешность более 2%, компилятор выдаст предупреждение об этом.

Re: UART 115Кбод на Мегах.

Добавлено: Ср июн 28, 2023 21:30:34
Starichok51
я использую с кварцем 8 МГц скорость 250000 - нулевая погрешность.

Re: UART 115Кбод на Мегах.

Добавлено: Чт июн 29, 2023 09:09:32
OKF
А я с кварцем на 16 имею 2000000/сек и чо?)

Re: UART 115Кбод на Мегах.

Добавлено: Чт июн 29, 2023 10:11:11
Starichok51
я рад за тебя.

Re: UART 115Кбод на Мегах.

Добавлено: Чт июн 29, 2023 10:34:35
DX168B
Пользовался самописными макросами.

Код: Выделить всё

/* Макросы вычисления битрейта */
#define UBRR_SET(bps) (uint16_t)((F_CPU / (16 * bps)) - 1)
#define UBRR_2X_SET(bps) (uint16_t)((F_CPU / (8 * bps)) - 1)

/* Варианты применения */

/* При сброшенном бите U2X */
UBRR = UBRR_SET(9600ul);


/* При установленном бите U2X */
UCSRA = _BV(U2X0);
UBRR = UBRR_2X_SET(115200ul);
 
F_CPU должен быть предварительно определен корректным значением тактовой частоты.

Re: UART 115Кбод на Мегах.

Добавлено: Чт июн 29, 2023 12:02:23
COKPOWEHEU
У вас округления нет.

Код: Выделить всё

#define UBRR_SET(bps) (uint16_t)( ((F_CPU / 8 / (bps) + 1)/2) - 1)
#define UBRR_2X_SET(bps) (uint16_t)( ((F_CPU / 4 / (bps) + 1)/2) - 1)

Код: Выделить всё

(U2X=0)
F_CPU = 12000000        baudrate = 115200
UBRR = 5        6
err = 8.5 %     -7.0 %
(U2X=1)
F_CPU = 4000000 baudrate = 57600
UBRR = 7        8
err = 8.5 %     -3.6 %

Re: UART 115Кбод на Мегах.

Добавлено: Чт июн 29, 2023 19:52:11
BOB51
Кварцы у адуринкоподобных (да и неспециализированные под UART) всегда имеют свою погрешность и температурные отклонения, кои добавляются к табличным.
8)

Re: UART 115Кбод на Мегах.

Добавлено: Пн июл 24, 2023 16:30:04
Иван Михайлович
В ардуинах стоят керамические резонаторы, у которых стабильность частоты в десятки раз ниже, чем у кварцевых.

Re: UART 115Кбод на Мегах.

Добавлено: Пн июл 24, 2023 17:02:09
~Dimon~
Ну а кварц правильный поставить?
9,216МГц в продаже встречаются, 328-я с ним будет работать от 2,7в.