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

 
 
> Программирование на ассемблере для МК ATmega128, Требуется консультация
AKV
сообщение Dec 5 2007, 10:27
Сообщение #1





Группа: Новичок
Сообщений: 5
Регистрация: 5-12-07
Пользователь №: 32 990



Пишу программу для обмена информацией между МК и компьютером по интерфейсу RS-232.
Прием информации МК выполнен по прерыванию "прием завершен".
Для чтения содержимого буфера используется команда
lds r16,UDR1
(поскольку регистр UDR1 расположен в адресном пространстве дополнительных регистров ввода-вывода, работать с ним с помощью команд in, out евозможно).
При тестировании программы в отладчике после записи данных в регистр UDR1 и выполнении вышеуказанной команды, в регистр r16 записывается 0.
Скажите пожалуйста, почему это происходит и как нужно пересылать данные из UDR1, чтобы они правильно записывались в нужный регистр.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Палыч
сообщение Dec 5 2007, 10:41
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



ИМХО, fuse M103C остался запрограммирован
Go to the top of the page
 
+Quote Post
AKV
сообщение Dec 5 2007, 11:14
Сообщение #3





Группа: Новичок
Сообщений: 5
Регистрация: 5-12-07
Пользователь №: 32 990



Цитата(Палыч @ Dec 5 2007, 13:41) *
ИМХО, fuse M103C остался запрограммирован

Тогда, подскажите, где в отладчике AVR Studio 4 можно сбросить этот бит.
Насколько мне известно Fuse Bit программируются при прошивке микроконтроллера.
При создании проекта и в самом начале программы выбрано .device ATmega128.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Dec 5 2007, 12:11
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Так Вы прогоняете программу в симуляторе AVRStudio?



Справа в Workspace->I/O разверните USART1 и измените UDR1 непосредственно перед выполнением команды

lds r16,UDR1

Т.е. ставите на эту команду останов (breakpoint), когда симулятор дошагает до этой команды и остановится - меняете UDR1 и продолжаете выполнение программы (Run или Step).

C этими UDR при отладке - всегда путаница и косяки из-за того, что два регистра (на вывод и на ввод) имеею один адрес и имя.
Go to the top of the page
 
+Quote Post
AKV
сообщение Dec 5 2007, 13:05
Сообщение #5





Группа: Новичок
Сообщений: 5
Регистрация: 5-12-07
Пользователь №: 32 990



Цитата(Палыч @ Dec 5 2007, 15:11) *
Так Вы прогоняете программу в симуляторе AVRStudio?



Справа в Workspace->I/O разверните USART1 и измените UDR1 непосредственно перед выполнением команды

lds r16,UDR1

Т.е. ставите на эту команду останов (breakpoint), когда симулятор дошагает до этой команды и остановится - меняете UDR1 и продолжаете выполнение программы (Run или Step).

C этими UDR при отладке - всегда путаница и косяки из-за того, что два регистра (на вывод и на ввод) имеею один адрес и имя.


Вообще-то я так уже много раз делал и получал описанный выше результат.
Go to the top of the page
 
+Quote Post



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

 


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


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