UART 115200 и тактовая частота ATMega32

ВОПРОС: реально ли подстройкой внутреннего RC-генератора Меги32 получить 7.3728МГц?

Возникла тут проблемка… В нашем городке не смог найти кварца на 7.3728МГц, чтоб получить безошибочный UART на 115200. Уже даже с тоской начал гуглить софтовые реализации для встроенного RC на 8МГц. С тоской — потому что полудуплекс, ничего нельзя сделать ни во время приема, ни во время передачи. А надо бы еще, чтоб не страдал ШИМ на 20 сервоприводов.
Идею софтового ШИМ нагло стырил у Хальта, довел до нужной кондиции.
Пока гуглил софтовый УАРТ наткнулся на статьи у AVRFreaks про подстройку тактовой частоты. Выдрал с сайта атмела AVR055 с исходниками, выдрал со старой матери кварц на 32768, припаял(без конденсаторов), попробовал — хрень в уарт лезет.
Вобщем, надо определиться — реально ли подстройкой RC получить 7.3728МГц (делал ли кто такое?) или остаются реальный кварц/софтовый УАРТ?
115200 на УАРТ для меня физическое ограничение — блютузовый модуль, который перенастроить на другую скорость — ведро геморроя с пайкой мелких падов.
Текущие параметры платы: 3.3В питание, мега, куча выводов на сервы. Другого ничего нет, кроме кварца 32768, который подпаял для опытов.
Есть сомнения по поводу кварца, по поводу софта на компе(блютуз часть вполне может моск компостировать).
Кварц пока собираюсь проверить простым тестом — на одну из ног прицепить светодиод с резюком, поставить у таймера2 делитель на 128, моргать светиком каждые пять секунд.
Блютуз проверю на ноуте, т.к. другая плата(работавшая раньше с этим же БТ модулем нормально с компом что-то тоже моск компостирует, не шлет нормально).
По результатам я конечно отчитаюсь.
Да, если подстройка частоты сработает — готов морально дергать ее хоть каждые 15 секунд, не важно.

Комментарии (22)

RSS свернуть / развернуть
А что, кратные кварцы применить нельзя -14745600, например. Встроенный генератор нестабильный.
0
на 3.3В питания уже получается разгон вроде. Меньше тоже вроде можно попробовать кварц спросить, просто когда по магазам бегал — не выписал подходящие, чтоб спросить. Можно и 9.216 спросить было, но сомнительно, что имеется.
0
У новых, которые с буквой А, 2.7-5V по даташиту. Проверял Atmega32A нормально с 15Мгц работает.
0
Если завтра не запинаю, то в воскресенье пойду спрашивать редкости в магазин. Заодно подумываю разориться на другой БТ-модуль, благо стоят они в пределах $10 на DX/Goodluckbuy и все-равно пригодятся. Ждать только не хочется.
0
А действительно ли нужен точный 115200? у меня +-5% всё нормально работает…
0
  • avatar
  • atd
  • 13 апреля 2012, 22:59
С учетом китайских БТ модулей, разница может быт больше…
0
а любой другой кварц нельзя взять?
если даже частота УАРТа не совпадёт на пару процентов ничего страшного не случится — работать будет. больше 5% уже нехорошо.
16Мгц / 8 / (16+1) = 117647. 117647 и 115200 = всего 2% разницы.

ну или если совсем плохо с кварцами, то от внешнего RC затактироваться, добавив пару высокоомных сопротивлений в параллель можно частоту подстроить если есть чем измерить (кварцем на 32768 например).
0
  • avatar
  • _pv
  • 13 апреля 2012, 23:05
от внешнего RC затактироваться
И забыть про стабильность от температуры. А там частота сильно гуляет. И зависит не только от RC цепочки, но и от транзистора в генераторе внутри МК и от стабильности питания -проверено…
0
А внешний тактовый генератор не прокатит?
0
  • avatar
  • arch
  • 14 апреля 2012, 07:57
а что за BT-модуль? подозрительно знакомые грабли…
0
покупал полтора-два года назад на roboforum.ru в их магазине.
Я понимаю, что гугл позволит найти все, что касается тамошней микросборки, подцепить его и перенастроить на другую скорость тоже должно получиться, но лезть в него паяльником нет никакого желания.
0
кроме указанного, подойдут еще 1.8432, 3.6864, 11.0592, 14.7456, 18.432 МГц (в даташите они есть в разделе USART). Правда, у первых 2х может не хватить скорости для шимов, последний — оверклокинг.
От кварца 16 МГц можно сделать скорость 111111 бод, что отличается на 3.5%… это, конечно, много…
А вот от 20 МГц будет 1.4% — это нормально, думаю.
0
с U2X на 8МГц можно получить те же -3.5% ошибки в скорости, однако не взлетело. Пока не ковырял на ноуте, у которого не пытался играться с переназначением ком-портов. Если взлетит на ноуте, буду перетряхать диспетчер устройств, удалять «отключенные» устройства. Может удалю/переустановлю BlueSoleil. Могут и тут быть косяки.
0
Если мерять частоту Мкшником умеете (часовым кварцем) то можно попробывать взять любой триггер типа HCT делителей на 2 и подклнектиться к AGP шине… её из винды можно крутить от 33 мегагерц до 88 ну… всё зависит от возможностей мамки…
сделать делитель на 4 и крутить… выставить точно 115200 и если не знработает то проблема не в точной подгонке частоты…

у меня 16 мегагерц мега 115200 плюётся круглосутточно и никаких ошибок что с нетивным компортом что со всякими usb-uart что с телефоном…
0
а Вы, батенька, злой сегодня ;)
0
а чё это злой? у меня например вот стоит DVB карта в компьютере и вместо штатных 33 мегагерцев я дал ей 66 с АГП… могу теперь брать в два раза бОльшие пиксельные скорости… и скорости которых нет в списке — просто делаю притормаживание той частоты AGP… довольно удобно… просто найти высокоскоростной буффер… выход там довольно мощный…
П.С. всё справедливо протестированно на nVidia nForce 2 u 400 чипсете
0
А что за DVD карта? Случайно не SkyStar 2?
0
так точно она самая… уже лежит ненужная… у нас кабельное процвели с 48 ФулХД цифровыми каналами… нет больше надобности в херне…
0
Итак, старая связка ожила с ноутом.
Я вам даже больше скажу.
Я таки закалибровал его в усмерть.
Результат:
мусор, еще мусор, куча мусора...
ж═≤Иж░ІХ▒≥║Жж═≤Иж░ІХ▒≥║Жж═≤И├ж░ІХ▒≥║Жж═≤И√жvy▒Y≥vI║AИV2
it works with OSCCAL=173
it works with OSCCAL=174
it works with OSCCAL=175
it works with OSCCAL=176
it works with OSCCAL=177
it works with OSCCAL=178
it works with OSCCAL=179
it works with OSCCAL=180
it works with OSCCAL=181
it works with OSCCAL=182
it works with OSCCAL=183
it works with OSCCAL=184
it works with OSCCAL=185
it works with OSCCAL=186
it works with OSCCAL=187
it works with OSCCAL=188
it works with OSCCAL=189
it works with OSCCAL=190▀K╨zK
                             З:K
мусор...

Это с настройками на RC 8МГц.
Могу для любопытствующих выложить код для получения этой отладки.
УРА, короче. Можно взятьзначение из середины, пользоваться. Интернетчики уверяют, что значение очень сильно зависит от конкретного экземпляра чипа, слабо зависит от температуры и напряжения.
Тесты температурные сделаю, но уже не сегодня.
0
Осталась вобщем-то мелочь… Определить частоту, а то поплывут задержки для серв, если частота ушла. Из предположений — тот же самый AVR055 заиспользовать. Точнее формулу увязки двух таймеров, из их периодов высчитать частоту текущую для RC.
Пока грубый расчет показывает, что я в районе 16588800Гц приземлился.
Если так, то зовите меня бешеным оверклокером :)
0
Я как-то мерял частоту RC-генератора у MSP430, получил отклонения +- 0.03%. Если у Атмеги в тех же пределах — то все нормально будет. Значение частоты зависит от чипа, но зависимость от напряжения тоже была.
0
На любой материнке и видеокарте найдется 14,318 МГц кварц. Допустимая погрешность для асинхронного режима USART несколько процентов (5-6%), должно взлететь.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.