Такая проблема:
кварц 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 нужный байт.
По времени выводить это все не кретично, поэтому я не стал заморачиваться с буферами и т.п.