Пятница, 19.04.2024, 14:18
Микроконтроллерная техника AVR
Главная Регистрация Вход
Приветствую Вас, Гость · RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Микроконтроллеры » Вопросы по МК » Снижение скорости UART в м.к. AVR (Не могу установить нужную скорость UART)
Снижение скорости UART в м.к. AVR
КоняевДата: Пятница, 25.03.2011, 22:31 | Сообщение # 1
Рядовой
Группа: Пользователи
Сообщений: 5
Репутация: 0
Статус: Offline
Возникла проблема - необходимо передать поток байтов по шине UART на относительно большое растояние (около 50м) при наличии рядом расположенных сетевых проводов. Было принято решение использовать низкую скорость передачи в 300 бод/сек. При частоте кварца 4МГц для МК Мега8 в регистр UBRR необходимо занести число 835
гдето так проходит инициализация:

init_uart:
ldi t0,low(832) ;скорость передачи 300 бод/сек
out UBRRL,t0
ldi t0,high(832)
out UBRRH,t0
ldi t0,(1<<RXEN)|(1<<TXEN); включение приема передачи
out UCSRB,t0
ldi t0,(1<<URSEL)|(3<<UCSZ0);формат 8n1
out UCSRC,t0
ret

Пробую симуляцию в Протеусе выясняется что регистр UBRRH равен 0 а скорость обмена определяется только регистром UBRRL
Пробую сделать симуляцию этой части программы в AVR Studio 4 - примерно тот-же эффект, только одновременно меняются данные в регистрах UBRRH и UCSRC
Не могу понять - это БОКа программ или я чего-то не понимаю. Кучу книг перечитал, но там все одно и тоже даже в даташитах.
Может кто чего подскажет!!! cry

 
HiSERДата: Суббота, 26.03.2011, 01:38 | Сообщение # 2
Продвинутый автор!
Группа: Проверенные
Сообщений: 254
Репутация: 11
Статус: Offline
что такое t0? или это просто синоним регистра: r0-r31?

Про 16и битные регистры, сначала надо записывать старший байт потом младший байт, у тебя на оборот.
В даташите про это написано.

 
КоняевДата: Воскресенье, 27.03.2011, 22:36 | Сообщение # 3
Рядовой
Группа: Пользователи
Сообщений: 5
Репутация: 0
Статус: Offline
t0 это регистр R16
бошьшое спасибо, спорить не буду, обязательно попробую.

Добавлено (27.03.2011, 22:36)
---------------------------------------------
Попробовал переставить строки - ничего не помогло, как было так и осталось без изменений.
Не хочется паять сложную плату для того что-бы проверить истину, хотелось бы для начала проверить теоретически.
Может кто подскажет другой симулятор для AVR-ов. sad

 
HiSERДата: Вторник, 29.03.2011, 02:28 | Сообщение # 4
Продвинутый автор!
Группа: Проверенные
Сообщений: 254
Репутация: 11
Статус: Offline
Самый лучший симулятор, это само железо...
 
КоняевДата: Суббота, 23.04.2011, 10:39 | Сообщение # 5
Рядовой
Группа: Пользователи
Сообщений: 5
Репутация: 0
Статус: Offline
Опыты с программами ничего не дали, но зато есть более оригинальное решение- можно вместо RS232 для передачи на большие расстояния использовать интерфес RS485. Те-же два проводка для приема и передачи, дальность передачи до 1000м при скорости в 10Мбит/сек. На счет скорости есть небольшое сомнение, но для связи модулей на расстоянии до 50м и скорости 1200бод можно смело связаться и с ПК и с микроконтроллером. Да и значение UBRR вписывается в один байт микроконтроллера.
Правда необходимо капиталовложение на приобретение преобразователей интерфейса для каждого модуля в отдельности. cool
 
Форум » Микроконтроллеры » Вопросы по МК » Снижение скорости UART в м.к. AVR (Не могу установить нужную скорость UART)
  • Страница 1 из 1
  • 1
Поиск:

Хостинг от uCoz