Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: работа с UART
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
ra9ftm2
Такая проблема:

кварц 4,9152 мгц. Нужно работать на скорости 57600 бод. Получились такие настройки: UBRR=4;%ERR=6.25. Почему-то не работает. Точнее работает, но с ошибками.

Беру обычный терминал, смотрю что делается:
на 57600 1N8 вообще какая-то несуразица выходит. Если ставлю 7 бит в терминалке. Кое-что выходит и комп принимает (частично).

Долго мучался, решил снизить скорость. Получилось UBRR=31;%ERR=0.00. Сразу вижу на экране терминала те байты, которые нужны.

Но мне нужно на 57600. Что посоветуете? На сколько влияет процент расчета ошибки скорости (%ERR)?

Вывод осуществляется на ассемблере:

uart_tx:
sbis USR, UDRE
rjmp uart_tx
out UDR, tmp1
ret

Вызывается как rcall uart_tx, предварительно записав в tmp1 нужный байт.
По времени выводить это все не кретично, поэтому я не стал заморачиваться с буферами и т.п.
defunct
Цитата(ra9ftm2 @ Mar 5 2006, 23:56) *
Такая проблема:

кварц 4,9152 мгц. Нужно работать на скорости 57600 бод. Получились такие настройки: UBRR=4;%ERR=6.25. Почему-то не работает. Точнее работает, но с ошибками.

Ну вы сразу и ответили на свой вопрос, проблема в ERR=6.25%, что значит за 10 переданных бит (один байт +старт +стоп) будет ошибка 62.5%, для корректной работы не годится! Суммарная ошибка для передаваемого кадра (старт+данные+стоп) должна быть не более 20%, соответственно ERR должна быть менее 2% для 8-ми битной посылки без четности с одним стопом.
Меняйте либо кварц, либо скорость обмена.
BVU
Рекомендуемые тактовые частоты микроконтроллера для UART всегда приводяться в DataSheet (там и погрешности приводяться ...), так что с выбором кварцевого резонатора проблем быть не должно.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.