Страница 1 из 1

Скорость передачи данных через UART AT90S8535

Добавлено: Сб апр 21, 2007 19:29:34
Яна
Подскажите, пожалуйста, как настроить таймер на скорость вывода данных 19200 бит/с через последовательный порт, какие там коэффициенты пересчёта и т.д.

Добавлено: Сб апр 21, 2007 19:57:12
tych
Настраивать и рассчитывать удобно мастером CVAVR.

Книги по микроконтроллерам - библиотека:
http://www.roboforum.ru/viewtopic.htm?t=2031

Добавлено: Сб апр 21, 2007 22:07:32
Яна
Спасибо, я почитала, но я это всё знаю уже...:(
Хочу ещё добавить, что если я устанавливаю скорость передачи данных менее 19200 бит/с, то все данные выводятся нормально, а если делаю вот так:
ldi tmp, 2 ;19200 бит/с, если частота кварца = 1Гц
out UBRR,tmp
ldi tmp,0b00001101 ;Инициализация UART
out UCR,tmp ;TXEN=1,RXEN=0,СHR9=1,TXB8=1

Т.е. устанавливаю скорость как раз 19200 бит/с, то выводятся данные неправильно и появляется сообщение об ошибке со странным символом: +8%. Кто знает, как это исправить???

Добавлено: Вс апр 22, 2007 14:59:34
Mamonth
Рекомендую книгу: А.В. Евстигнеева "Микроконтроллеры AVR семейства Classic (Tiny и Mega) и конечно же даташит на МК. Это библия.

BAUD = (Fsck)/(16*(UBR+1))

BAUD - скорость
Fsck - тактовая частота
UBR- содержимое регистра контроллера скорости передачи

Для различных тактовых частот, будет разное значение в регистре UBR. Кроме того, на некоторых тактовых частотах будут появляться ошибки. 2% ошибок - допустимый максимум. Но на практике больше 1% вообще использовать не рекомендуют.

В даташите в разделе USART есть табличка, где уже все рассчитано. Смотрите!

Добавлено: Чт апр 26, 2007 21:40:51
Яна
Спасибо большое за ответ, теперь всё работает правильно! :)