Перейти к содержанию
    

Тактирование UART на AVR

Есть ATMEGA48. Его надо тактировать частотой 12 Мгц, т.е. не кратной стандартной частоте COM порта. Но в то же время надо обменяться с компутером на скорости 115200. Можно ли задать такую частоту, например, дополнительным генератором? Или какие вообще есть варианты?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Никаких, кроме как прочитать сначала страницу 175, а потом страницы 188-189 даташита.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть 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% ошибки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

RS232 допускает 5% ошибки.

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

 

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

 

Учитывая, что передатчик тоже может иметь неидеальную бодовую скорость, точность настройки должна быть лучше, чем половина от 5%. Обычно стараются выдержать погрешность не более 2%.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Учитывая, что передатчик тоже может иметь неидеальную бодовую скорость, точность настройки должна быть лучше, чем половина от 5%. Обычно стараются выдержать погрешность не более 2%.

 

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

 

Но при 12 МГц Fcpu на скорости 115200, получается ошибка 0.16 %, что много меньше 2%.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...