какое значение писать в регистр UBRRL ATmega8 (USART)

Обсуждаем контроллеры компании Atmel.
Ответить
Встал на лапы
Сообщения: 100
Зарегистрирован: Ср дек 24, 2008 11:59:24
Откуда: Москва

Сообщение AaNnDdRrEeYy »

Добрый день.
ATmega8 работает от внутреннего кристалла на 1Мгц, мне нужно связать ее с другим МК по USART на скорости 9600 бод.
рассчитываю по формуле UBRRL = 1000000/(16*9600) – 1 = 5.5 в регистр записываю 5
при таком значении лезут караказябры, записываю 6 то же караказябры но другие.
программа полностью исправна, проверял на на 12 Мгц записав в UBRRL = 77, все нормально работает.
регистр UBRRH обнуляю. (UBRRH = 0)
Какое значение нужно записать в UBRRL, или проще изменить скорость обмена?
Реклама
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Сообщение uk8amk »

5 и 5.5 - получается отклонение скорости на 9%.
У Атмег, в отличие от более навороченных камней, нельзя задавать дробный коэффициент делителей USART.
Выход состоит в использовании кварцевого(или керамического) резонатора на подходящую частоту, чтобы ошибка была не больше долей процента.

Внутреннний RC генератор из-за малой стабильности для связи использовать не рекомендуется.
Реклама
Встал на лапы
Сообщения: 100
Зарегистрирован: Ср дек 24, 2008 11:59:24
Откуда: Москва

Сообщение AaNnDdRrEeYy »

У меня просто другие расчеты на 1Мгц сделаны, таймеры всякие. USART мне нужен был для отладки, что бы внутрь заглянуть когда работает.
Я изменил скорость на 5200 получилось 11,01923077 записал в регистр 11, вроде работает.
Опытный кот
Сообщения: 804
Зарегистрирован: Чт мар 12, 2009 16:31:05

Сообщение Vov123 »

Чтобы не париться по этому или другому подобному вопросу, поставь себе CVAVR, для начального генератора кода.
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Сообщение Engineer_Keen »

Всего-то U2X надо было включить, заслать в UBRR 12 и получить ошибку в допустимые 0.2% :idea:
Табличка 60 Examples of UBRR Settings на страничке 159 весьма полезна.
Реклама
Встал на лапы
Сообщения: 100
Зарегистрирован: Ср дек 24, 2008 11:59:24
Откуда: Москва

Сообщение AaNnDdRrEeYy »

Engineer_Keen писал(а):Всего-то U2X надо было включить, заслать в UBRR 12 и получить ошибку в допустимые 0.2% :idea:
Табличка 60 Examples of UBRR Settings на страничке 159 весьма полезна.
Это получится удвоенная скорость, та же формула только вместо 16 надо 8 подставить
для первого МК
1000000/(8*9600) – 1 = 12
для второго МК у него кварц на 12 Мгц
12000 000 /(8*9600) -1 = 155,25
вот тут опять затык.

у меня на ноутбуке нет com порта поэтому на первом мк залит V-USB для него нужен кварц на 12 Мгц.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Сообщение Engineer_Keen »

0.8%, это не очень страшно, но никуда не деться, разве что действительно попробовать попробовать другую частоту.
Ответить

Вернуться в «AVR»