Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: UART Baud Generator. Регистр UxMCTL
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > MSP430
shasik
Как правильно рассчитать значение регистра UxMCTL?

Pls, объясните почему нижеперечисленные источники дают разные результаты:
1. slau056g MSP430x4xx family User Guide (или slau049e)
2. slaa024 MSP430 Family Mixed-Signal Microcontroller Application Reports
3. Программа MSP430-UART v2005.02.06 by Alexander Konuzin
4. Своя программа, считающая как описано в slau056g (выдает такой же результат для рассмотренного в User Guide примера - 32768/2400) и минимизирующая максимальную ошибку каждого бита.
5. Несколько чужих example'ов, использующих для одинаковых "байтов" разные UxMCTL

Какая идея положена в основу, что оптимизируется?
Если предположить, что п.1-3 используют одинаковый алгоритм, тогда чем отличаются начальные условия для каждого случая?

ЗЫ. Раньше просто слепо верил источнику #3. А тут нарисовалось немного свободного времени, решил разобраться и накропать свою более функциональную утилитку. И наступил на грабли %(
diper
Цитата(shasik @ Jan 31 2008, 13:47) *
ЗЫ. Раньше просто слепо верил источнику #3. А тут нарисовалось немного свободного времени, решил разобраться и накропать свою более функциональную утилитку. И наступил на грабли %(
Александр сказал по этому поводу следующее: "пока программой пользуются не задумываясь - она всех устраивает, как только начинают думать - находят какието ошибки". Если есть дельные замечания можете пообщаться с ним по указанному в программе емайлу.
anv0lk
думаю здесь главное чтобы отклонение длительности еденичного периода клока UART от точного значения попадало в указанные в даташите рамки. кто-то ищет самое оптимальное решение, а кто-то принимает первое попавшее в диапазон допустимых значений. сам писал в экселе программку нахождения самого лучшего значения регистра. если найду этот эксельник - выложу вечером.
shasik
Цитата(diper @ Jan 31 2008, 13:30) *
Александр сказал по этому поводу следующее: "пока программой пользуются не задумываясь - она всех устраивает, как только начинают думать - находят какието ошибки". Если есть дельные замечания можете пообщаться с ним по указанному в программе емайлу.

Ошибок я не нашел. Я нашел несоответствие.
А теперь я просто хочу выяснить когда чем пользоваться. Т.е. выяснить условия, при которых верен тот или иной результат.


Цитата(anv0lk @ Jan 31 2008, 13:51) *
сам писал в экселе программку нахождения самого лучшего значения регистра. если найду этот эксельник - выложу вечером.

Прикольно будет, если Ваш xls выдаст что-то свое, что-то новенькое. Тогда добавлю его шестым пунктом и пойду спокойно пить пиво, махнув на все рукой. Ведь работало же все и без этого "ковыряния в мозгах"


Цитата(diper @ Jan 31 2008, 14:11) *

Проверил по памяти одно значение - с моей программой сходится, а с user guide'нет. Остальных значений под рукой сейчас нет (чужой компьютер). Проверю позже.
shasik
Цитата(diper @ Jan 31 2008, 14:11) *


Проверил 4 значения для 32768 Гц - 50% совпадения с расчетами по формулам. Разобрался: по ссылке учитывают только ошибки при передаче. Я же считал максимальную ошибку приема и передачи.

Нашел еще одну консольную программу bitshift - там считается суммарная ошибка при передаче байта. Результаты естественно отличаются
rezident
Значение модулятора можно подбирать по разным критериям.
1. минимальное отклонение битовой частоты приема
2. минимальное отклонение битовой частоты передачи
3. минимальная ошибка за время приема одного символа
4. минимальная ошибка за время передачи одного символа
В зависимости от выбранного критерия (для п.3 и 4 еще и от формата/длины символа) получаются различающиеся значения для модулятора.
anv0lk
моя реализация нахождения значения регистра.
Оптимизируется по минимуму максимумов отклонений в группах из интересуемого количества бит(максимум 13 бит)
shasik
Цитата(rezident @ Jan 31 2008, 20:42) *
Значение модулятора можно подбирать по разным критериям.
1. минимальное отклонение битовой частоты приема
2. минимальное отклонение битовой частоты передачи
3. минимальная ошибка за время приема одного символа
4. минимальная ошибка за время передачи одного символа
В зависимости от выбранного критерия (для п.3 и 4 еще и от формата/длины символа) получаются различающиеся значения для модулятора.

Так вот в этом то и вопрос. Какой критерий в User Guide, какой в п.2 , а какой в п.3?
shasik
Цитата(anv0lk @ Jan 31 2008, 20:57) *
моя реализация нахождения значения регистра.
Оптимизируется по минимуму максимумов отклонений в группах из интересуемого количества бит(максимум 13 бит)

Посмотрел, сравнил со своими результатами. Результаты совпадают для оптимизации передачи. Если необходимо оптимизировать прием, то не катит. Например, для 32768/1200, 11 бит значение UxMCTL=0xA4 (0x94) не самое лучшее.

Вопросы:
1. Имеет ли смысл использовать два значения UxMCTL - одно для передачи, одно для приема или лучше выбрать одно значение оптимальное для приема/передачи?
2. Вообще игра стоит свеч? Попробывал с разными UxMCTL для передачи 100000 байт разница для 32768/1200 с точки зрения вероятности ошибки приема/передачи (в моем случае) незначительная.
anv0lk
прикрутил оптимизацию по ПРИЁМУ, ПЕРЕДАЧЕ, ПРИЕМУ+ПЕРЕДАЧЕ
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.