paskal 1 3 июля, 2009 Опубликовано 3 июля, 2009 · Жалоба Есть ATMEGA48. Его надо тактировать частотой 12 Мгц, т.е. не кратной стандартной частоте COM порта. Но в то же время надо обменяться с компутером на скорости 115200. Можно ли задать такую частоту, например, дополнительным генератором? Или какие вообще есть варианты? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DpInRock 0 4 июля, 2009 Опубликовано 4 июля, 2009 · Жалоба Никаких, кроме как прочитать сначала страницу 175, а потом страницы 188-189 даташита. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 59 4 июля, 2009 Опубликовано 4 июля, 2009 · Жалоба Есть 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= 14 4 июля, 2009 Опубликовано 4 июля, 2009 · Жалоба RS232 допускает 5% ошибки. Во-первых, не RS232, а UART. Ведь RS232 всего лишь оговаривает величины напряжений сигналов и т.п., но ничего не говорит о длительностях. Обычный UART, принимающий посылку, высланную с идеально правильной бодовой скоростью, настраивается на прием по старт-биту. По падающему фронту старт-бита он выставляет фазу своего тактового генератора. Обычно он это делает с точностью примерно 1/16 от длительности бит-интервала. Затем он самплирует приходящие данные один или три раза в середине каждого своего бит-интервала. На последнем, 9-м или 10-м по счету от старт-бита, середина его собственного интервала будет заметно не совпадать со серединой пришедшего интервала. При 5% на 10-м бит-интервале ошибка составит 50%, что будет на грани работоспособности при прочих идеальных условиях. Однако учитывая неидеальность настройки начальной фазы, а также искажения фронтов сигналов в тракте передачи, 5% рассогласование бодовой скорости приемника и передатчика вполне может привести к неработоспособности связи. Учитывая, что передатчик тоже может иметь неидеальную бодовую скорость, точность настройки должна быть лучше, чем половина от 5%. Обычно стараются выдержать погрешность не более 2%. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 59 4 июля, 2009 Опубликовано 4 июля, 2009 · Жалоба Учитывая, что передатчик тоже может иметь неидеальную бодовую скорость, точность настройки должна быть лучше, чем половина от 5%. Обычно стараются выдержать погрешность не более 2%. Виноват. Ошибся. Но при 12 МГц Fcpu на скорости 115200, получается ошибка 0.16 %, что много меньше 2%. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться