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

 
 
> Mega128 и обращение к памяти.
add
сообщение Aug 24 2006, 08:59
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 345
Регистрация: 10-10-05
Пользователь №: 9 459



Вопросик по обращению к памяти:
при обращении к памяти контроллеров до 64к делал так (asm):

ldi zl,low(mas*2)
ldi zh,high(mas*2)
lpm
;и т.д.

.
.
.
mas:
.db 0xff,0xaa
.
.
В меге128 есть еще регистр RAMPZ (определяет к какой из 64к обращатся).
Возможно ли по метке (в этом случае "mas:") загрузить байт в озу из flash?
Компилятор ведь может определить в любое место flash массив "mas"...
Как в этом случае можно обращатся по ссылке к памяти?
Зарание сапсибо за ответы!


--------------------
Если задачу можно решить, то не надо тревожиться. А если нельзя решить, то тревожиться бесполезно.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 10)
aesok
сообщение Aug 24 2006, 09:15
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484



Цитата(add @ Aug 24 2006, 12:59) *
Компилятор ведь может определить в любое место flash массив "mas"...
Как в этом случае можно обращатся по ссылке к памяти?
Зарание сапсибо за ответы!


В разных компиляторах по разному. Какой компилятор вы используете?

Анатолий.


Цитата(add @ Aug 24 2006, 12:59) *
Компилятор ведь может определить в любое место flash массив "mas"...
Как в этом случае можно обращатся по ссылке к памяти?
Зарание сапсибо за ответы!


В разных компиляторах по разному. Какой компилятор вы используете?

Анатолий.
Go to the top of the page
 
+Quote Post
add
сообщение Aug 24 2006, 09:25
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 345
Регистрация: 10-10-05
Пользователь №: 9 459



Цитата
В разных компиляторах по разному. Какой компилятор вы используете?

?! в avr studio (avrasm v2)... несовсем понятен вопрос?
есть альтернатива задать адрес так к примеру :
.org 0x01000а
но несовсем удобно так работать....


--------------------
Если задачу можно решить, то не надо тревожиться. А если нельзя решить, то тревожиться бесполезно.
Go to the top of the page
 
+Quote Post
DS
сообщение Aug 24 2006, 11:39
Сообщение #4


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



Цитата(add @ Aug 24 2006, 13:25) *
Цитата
В разных компиляторах по разному. Какой компилятор вы используете?

?! в avr studio (avrasm v2)... несовсем понятен вопрос?
есть альтернатива задать адрес так к примеру :
.org 0x01000а
но несовсем удобно так работать....


Похоже, только руками контролировать RAMPZ. Ассемблер генерит на lpm только эту команду, по определению, не меняя никаких регистров. Мало того, lpm Z+ при переходе границы не меняет RAMPZ.


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
add
сообщение Aug 24 2006, 12:14
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 345
Регистрация: 10-10-05
Пользователь №: 9 459



Цитата
Мало того, lpm Z+ при переходе границы не меняет RAMPZ

Есть замечательная команда ELPM Rd,Z+ c учетом RAMPZ :-)
Но вопрос остается открытым....


--------------------
Если задачу можно решить, то не надо тревожиться. А если нельзя решить, то тревожиться бесполезно.
Go to the top of the page
 
+Quote Post
DS
сообщение Aug 24 2006, 12:34
Сообщение #6


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



Цитата(add @ Aug 24 2006, 16:14) *
Цитата
Мало того, lpm Z+ при переходе границы не меняет RAMPZ

Есть замечательная команда ELPM Rd,Z+ c учетом RAMPZ :-)
Но вопрос остается открытым....


Я имел в виду, что ассемблер не разбирается с состоянием RAMPZ, что в команде есть, то и будет выполняться. Надо при загрузке Z в таких случаях грузить и RAMPZ. Т.е. добавляете еще две команды
к ldi zl, ldi zh каждый раз. А вместо lpm , соответственно - elpm. Тогда можно будет не думать каждый раз об адресе.


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
add
сообщение Aug 24 2006, 13:03
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 345
Регистрация: 10-10-05
Пользователь №: 9 459



Цитата
Тогда можно будет не думать каждый раз об адресе.

я вопрошал о том как загрузить адрес метки (к примеру "mas:") (см.выше) в регистры zl:zh:RAMPZ ?!
т.е. как определить значение метки , чтобы загрузить в регистры?

Сообщение отредактировал add - Aug 24 2006, 13:05


--------------------
Если задачу можно решить, то не надо тревожиться. А если нельзя решить, то тревожиться бесполезно.
Go to the top of the page
 
+Quote Post
DS
сообщение Aug 24 2006, 13:48
Сообщение #8


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



Логическими операциями и сдвигами над меткой - это же число. В ассемблере же можно логические выражения и сдвиги использовать, чтобы сформировать из метки, которая есть число, значение, загружаемое в RAMPZ.

.include "m128def.inc"

.org 0
ldi r16, a>>15
out rampz, r16
ldi zl, low(a*2)
ldi zh, high(a*2)
elpm r1, Z


.org 0x8010
a: .dw 100

Ну вот типа так.


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
add
сообщение Aug 24 2006, 13:53
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 345
Регистрация: 10-10-05
Пользователь №: 9 459



Цитата
Логическими операциями и сдвигами над меткой - это же число.

как это число располовинитьдля регистров zl:zh и RAMPZ?
и собственно как его получить, условным асемблированием?


--------------------
Если задачу можно решить, то не надо тревожиться. А если нельзя решить, то тревожиться бесполезно.
Go to the top of the page
 
+Quote Post
DS
сообщение Aug 24 2006, 14:13
Сообщение #10


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



Цитата(add @ Aug 24 2006, 17:53) *
Цитата
Логическими операциями и сдвигами над меткой - это же число.

как это число располовинитьдля регистров zl:zh и RAMPZ?
и собственно как его получить, условным асемблированием?

Выше привел. Пока проверял, Вы этот пост уже написали.


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
add
сообщение Aug 24 2006, 15:03
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 345
Регистрация: 10-10-05
Пользователь №: 9 459



DS_ Пасиба! открыли глаза...проверил, дествительно все так работает..


--------------------
Если задачу можно решить, то не надо тревожиться. А если нельзя решить, то тревожиться бесполезно.
Go to the top of the page
 
+Quote Post

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

 


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


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