реклама на сайте
подробности

 
 
> Проблема с UART у ATMEGA8515, В симуляторе AVR_Studio 4.07 и 4.06
DmitriyX
сообщение Mar 4 2005, 18:51
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 73
Регистрация: 21-12-04
Пользователь №: 1 581



Пытаюсь промоделировать работу UART в AVR STUDIO на ATMEGA8515.
При настройка UARTа пытаюсь записать значения в управляющие регистры UCSRC(Настройка) и UBRRH (верхний байт делителя частоты УАРТа).
В документации написано, что упомянутые выше регистры делят один байт памяти, но в них можно писать раздельно. Если старший бит (URSEL) записываемого значения = 1, то запись идет в UCSRC, а если = 0, то в UBRRH. Чего только не перепробовал, но при отладке в симуляторе данные пишутся в оба регистра одновременно независимо от значения URSEL.
Ниже привожу фрагмент программы, которым настраиваю UART. После первых двух строчек в обоих регистрах НЕ 0, а после четвертной строки в обоих регистрах 0.

ldi temp_reg,(1<<URSEL)|(1<<USBS)|(3<<UCSZ0)
out UCSRC,temp_reg

ldi temp_reg,0
out UBRRH,temp_reg

Кто-нибудь сталкивался с такой проблемой? Может быть есть какой-то сигнал, позволяющий разрешать запись в регистры с общей ячейкой памяти? Или что-то еще нужно настроить?

Спасибо огромное заранее за любую информацию!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Olegovich
сообщение Mar 15 2005, 10:32
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 131
Регистрация: 3-03-05
Из: Санкт-Петербург
Пользователь №: 3 037



Цитата(DmitriyX @ Mar 4 2005, 21:51)
  ldi temp_reg,(1<<URSEL)|(1<<USBS)|(3<<UCSZ0)
  out UCSRC,temp_reg
 
  ldi temp_reg,0
  out UBRRH,temp_reg

Кто-нибудь сталкивался с такой проблемой? Может быть есть какой-то сигнал, позволяющий разрешать запись в регистры с общей ячейкой памяти? Или что-то еще нужно настроить?

Спасибо огромное заранее за любую информацию!
*


У меня глюк такой же, и на самом деле UART не работает так, как надо, если
его инициализировать подобным образом.
Дело в том, что контроллерах Atmega8515, Atmega8535, Atmega16 регистры
UBRRH и UCSRC контроля USART имеют один и тож же адрес.
В описании говорится, что для того, чтобы производить запись
в тот или иной регистр, необходимо соответствующим образом
выставлять 7-й бит.
ОДНАКО: при такой записи вне зависимости
от значения седьмого бита запись производится в оба регистра
одновременно.
Рекомендуется не трогать данные регистры. (я обошелся - мне не нужен был такой формат).
А если этого не избежать - то получается ГЛЮК!!! И никуда не деться...
По опыту, значение регистра UBRRH по умолчанию равно 0х00,
регистра UCSRC = 0х06.

Причем на mega16 этого глюка нет!!!
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 07:58
Рейтинг@Mail.ru


Страница сгенерированна за 0.01328 секунд с 7
ELECTRONIX ©2004-2016