Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Тактирование UART на AVR
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
paskal
Есть ATMEGA48. Его надо тактировать частотой 12 Мгц, т.е. не кратной стандартной частоте COM порта. Но в то же время надо обменяться с компутером на скорости 115200. Можно ли задать такую частоту, например, дополнительным генератором? Или какие вообще есть варианты?
DpInRock
Никаких, кроме как прочитать сначала страницу 175, а потом страницы 188-189 даташита.
dimka76
Цитата(paskal @ Jul 4 2009, 00:49) *
Есть ATMEGA48. Его надо тактировать частотой 12 Мгц, т.е. не кратной стандартной частоте COM порта. Но в то же время надо обменяться с компутером на скорости 115200. Можно ли задать такую частоту, например, дополнительным генератором? Или какие вообще есть варианты?


И что вас смущает.

Asynchronous Double Speed mode (U2Xn = 1) UBRRn = (fOSC/(8*BAUD)) (стр. 174 Datasheet)

При ваших значения UBRRn = 12.

Пересчитываем обратно BAUD = fOSC/(8*(UBRRn + 1)) = 115384.62

Что дает 0.16 % ошибки.

RS232 допускает 5% ошибки.
=AK=
Цитата(dimka76 @ Jul 4 2009, 16:33) *
RS232 допускает 5% ошибки.

Во-первых, не RS232, а UART. Ведь RS232 всего лишь оговаривает величины напряжений сигналов и т.п., но ничего не говорит о длительностях.

Обычный UART, принимающий посылку, высланную с идеально правильной бодовой скоростью, настраивается на прием по старт-биту. По падающему фронту старт-бита он выставляет фазу своего тактового генератора. Обычно он это делает с точностью примерно 1/16 от длительности бит-интервала. Затем он самплирует приходящие данные один или три раза в середине каждого своего бит-интервала. На последнем, 9-м или 10-м по счету от старт-бита, середина его собственного интервала будет заметно не совпадать со серединой пришедшего интервала. При 5% на 10-м бит-интервале ошибка составит 50%, что будет на грани работоспособности при прочих идеальных условиях. Однако учитывая неидеальность настройки начальной фазы, а также искажения фронтов сигналов в тракте передачи, 5% рассогласование бодовой скорости приемника и передатчика вполне может привести к неработоспособности связи.

Учитывая, что передатчик тоже может иметь неидеальную бодовую скорость, точность настройки должна быть лучше, чем половина от 5%. Обычно стараются выдержать погрешность не более 2%.
dimka76
Цитата(=AK= @ Jul 4 2009, 11:34) *
Учитывая, что передатчик тоже может иметь неидеальную бодовую скорость, точность настройки должна быть лучше, чем половина от 5%. Обычно стараются выдержать погрешность не более 2%.


Виноват. Ошибся.

Но при 12 МГц Fcpu на скорости 115200, получается ошибка 0.16 %, что много меньше 2%.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.