DmitriyX 0 4 марта, 2005 Опубликовано 4 марта, 2005 · Жалоба Пытаюсь промоделировать работу 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 Кто-нибудь сталкивался с такой проблемой? Может быть есть какой-то сигнал, позволяющий разрешать запись в регистры с общей ячейкой памяти? Или что-то еще нужно настроить? Спасибо огромное заранее за любую информацию! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TriD 0 5 марта, 2005 Опубликовано 5 марта, 2005 · Жалоба Возможно, что симулятор просто не поддерживает симуляцию этой операции (почитайте хелп к студии, там должны быть указаны ограничения на симуляцию). ИМХО, 4-я студия достаточно глючный продукт (хотя с последней версией не работал), я использую 3.56. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorKossak 0 7 марта, 2005 Опубликовано 7 марта, 2005 · Жалоба Попробуйте AVRStudio 4.11. У меня с ATmega128 подобных проблем не было. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Olegovich 0 15 марта, 2005 Опубликовано 15 марта, 2005 · Жалоба ldi temp_reg,(1<<URSEL)|(1<<USBS)|(3<<UCSZ0) out UCSRC,temp_reg ldi temp_reg,0 out UBRRH,temp_reg Кто-нибудь сталкивался с такой проблемой? Может быть есть какой-то сигнал, позволяющий разрешать запись в регистры с общей ячейкой памяти? Или что-то еще нужно настроить? Спасибо огромное заранее за любую информацию! <{POST_SNAPBACK}> У меня глюк такой же, и на самом деле UART не работает так, как надо, если его инициализировать подобным образом. Дело в том, что контроллерах Atmega8515, Atmega8535, Atmega16 регистры UBRRH и UCSRC контроля USART имеют один и тож же адрес. В описании говорится, что для того, чтобы производить запись в тот или иной регистр, необходимо соответствующим образом выставлять 7-й бит. ОДНАКО: при такой записи вне зависимости от значения седьмого бита запись производится в оба регистра одновременно. Рекомендуется не трогать данные регистры. (я обошелся - мне не нужен был такой формат). А если этого не избежать - то получается ГЛЮК!!! И никуда не деться... По опыту, значение регистра UBRRH по умолчанию равно 0х00, регистра UCSRC = 0х06. Причем на mega16 этого глюка нет!!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться