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

 
 
> Программирование на ассемблере для МК 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
Ответов
adc
сообщение Dec 5 2007, 13:23
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 409
Регистрация: 29-10-07
Пользователь №: 31 836



А из нулевого регистра данных все нормально читается (также записываю ручками после останова):
Код
.device ATmega128         ;
.INCLUDE    "m128def.inc"  ;
.cseg            
.org 0x0000
ldi    r16,5
out    UDR0,r16    
clr    r16
in    r16,UDR0//перед выполнением в симуляторе записываю значение в UDR0
nop

странно?!


--------------------
Умный программист пишет тупым кодом гениальные вещи, а не наоборот...
Go to the top of the page
 
+Quote Post
Палыч
сообщение Dec 5 2007, 13:41
Сообщение #3


Гуру
******

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



Цитата(adc @ Dec 5 2007, 16:23) *
А из нулевого регистра данных все нормально читается (также записываю ручками после останова) странно?!


Да, действительно: для UDR0 - работает, а для UDR1 - нет. Ну, чтож... Еще один баг симулятора AVRStudio... Это лишнее подтверждение того, что отлаживаться лучше всего - в железе



Кстати, если открыть окно Memory->Extended I/O, то по адресу 9С будет глухой ноль. При попытке туда, что-либо занести - получаем изменение UDR1 в окне Workspace->I/O, но в Memory->Extended I/O остается ноль...
Go to the top of the page
 
+Quote Post
adc
сообщение Dec 5 2007, 14:44
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 409
Регистрация: 29-10-07
Пользователь №: 31 836



Цитата(Палыч @ Dec 5 2007, 16:41) *
Кстати, если открыть окно Memory->Extended I/O, то по адресу 9С будет глухой ноль. При попытке туда, что-либо занести - получаем изменение UDR1 в окне Workspace->I/O, но в Memory->Extended I/O остается ноль...

Пробовал. Меняется и там и там. При записи в Workspace->I/O, меняется в Memory->Extended I/O и на оборот. (Вер:AVRStudio 4.13 SP1 Build 557)


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



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

 


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


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