Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 23.07.2009, 15:50  
chipic128
Прописка
 
Регистрация: 13.02.2005
Сообщений: 250
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
chipic128 на пути к лучшему
По умолчанию переменную в стек на AVR

Как можно сохранить и потом использовать переменную помещенную в стек?

т.е. как записать в определенную ячейку стека и потом считать оттуда данные?
Реклама:
__________________
Що згорить - то не зігниє!

(c)ChiP
chipic128 вне форума  
Непрочитано 23.07.2009, 15:58  
nml
Супер-модератор
 
Аватар для nml
 
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,378
Сказал спасибо: 1,955
Сказали Спасибо 1,328 раз(а) в 578 сообщении(ях)
nml на пути к лучшему
По умолчанию Re: переменную в стек на AVR

Сообщение от chipic128
Как можно сохранить и потом использовать переменную помещенную в стек?
т.е. как записать в определенную ячейку стека и потом считать оттуда данные?
О каком языке программирования идет речь? Если Си - то никак (ну если только программный свой стек сделать).

Если асм - то все зависит от системы команд процессора. В АВРках - только через РОН.

Определенной ячейки стека не бывает. В стек можно что-то поместить, и можно вынуть в обратном порядке. Стек - это обойма с патронами, если образно.
nml вне форума  
Непрочитано 23.07.2009, 16:04  
dimonbest
Гражданин KAZUS.RU
 
Аватар для dimonbest
 
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
dimonbest на пути к лучшему
По умолчанию Re: переменную в стек на AVR

Сообщение от chipic128
Как можно сохранить и потом использовать переменную помещенную в стек?

т.е. как записать в определенную ячейку стека и потом считать оттуда данные?
А смысл?
dimonbest вне форума  
Непрочитано 23.07.2009, 17:04  
chipic128
Прописка
 
Регистрация: 13.02.2005
Сообщений: 250
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
chipic128 на пути к лучшему
По умолчанию

т.е. поместить туда и потом если надо забрать невозможно, Речь идет о ASM

а смысл в том что нужно хранить переменную, которая очень редко используется, а РОН маловато, жаль их тартить на пустяки...

я думал что можно записать как в память данных (сначала пишу адрес в XYZ а потом операция записи, чтения...) ну нет так нет... жаль, но все же придется тратить драгоценные РОН
__________________
Що згорить - то не зігниє!

(c)ChiP
chipic128 вне форума  
Непрочитано 23.07.2009, 17:10  
TEHb
Почётный гражданин KAZUS.RU
 
Аватар для TEHb
 
Регистрация: 27.06.2005
Сообщений: 1,389
Сказал спасибо: 19
Сказали Спасибо 210 раз(а) в 156 сообщении(ях)
TEHb на пути к лучшему
По умолчанию

А зачем в стек? Выделить просто адрес в памяти для хранения переменной. На асм без проблем.
TEHb вне форума  
Непрочитано 23.07.2009, 18:49  
nml
Супер-модератор
 
Аватар для nml
 
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,378
Сказал спасибо: 1,955
Сказали Спасибо 1,328 раз(а) в 578 сообщении(ях)
nml на пути к лучшему
По умолчанию

Сообщение от chipic128
я думал что можно записать как в память данных (сначала пишу адрес в XYZ а потом операция записи, чтения...)
Именно так и надо делать. Стек - совсем для других целей.
так,
Код:
  st Z,R16 - запишет R16 в память, адресуемую Z парой
  ld R16,Y+ - прочтет в R16 -только по Y паре указателей и после чтения эту пару указателей инкрементирует
  st R16,addr - прямое чтение. Занимает больше памяти программ
Короче, читайте систему команд. В РОН производится обработка, ну и хранятся наиболее часто используемые переменные, если РОН хватает.
nml вне форума  
Непрочитано 23.07.2009, 22:44  
chipic128
Прописка
 
Регистрация: 13.02.2005
Сообщений: 250
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
chipic128 на пути к лучшему
По умолчанию

Код:
st Z,R16 - запишет R16 в память, адресуемую Z парой 
  ld R16,Y+ - прочтет в R16 -только по Y паре указателей и после чтения эту пару указателей инкрементирует 
  st R16,addr - прямое чтение. Занимает больше памяти программ
в память, но пространство етой памяти пересекается с пространством стека???

ОЗУ - ето та память о которой идет речь? стек тоже вроде в озу? правильно ли я понял
__________________
Що згорить - то не зігниє!

(c)ChiP
chipic128 вне форума  
Непрочитано 23.07.2009, 23:04  
nml
Супер-модератор
 
Аватар для nml
 
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,378
Сказал спасибо: 1,955
Сказали Спасибо 1,328 раз(а) в 578 сообщении(ях)
nml на пути к лучшему
По умолчанию

Сообщение от chipic128
в память, но пространство етой памяти пересекается с пространством стека???
ОЗУ - ето та память о которой идет речь? стек тоже вроде в озу? правильно ли я понял
А на то и программист, чтобы не пересекались. Обычно при старте программы указатель стека на конец ОЗУ е (она же память данных). А переменные в начале.

Стек, ессно, в ОЗУ. Он используется для хранения адресов возврата (подпрограммы, прерывания). Ну и если осторожно - можно там ВРЕМЕННО сохранять что требуется. Но это надо делать предельно аккуратно, достаточно что-то сунуть в стек и вовремя не вытащить - программа рухнет.
nml вне форума  
Непрочитано 24.07.2009, 22:03  
chipic128
Прописка
 
Регистрация: 13.02.2005
Сообщений: 250
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
chipic128 на пути к лучшему
По умолчанию

Тогда если я обявил вершыну стека RAMEND, то сфои данные можно закидать в RAMEND-1... или сначала блока памяти?, т.е. стек пишется сначала или с конца?
__________________
Що згорить - то не зігниє!

(c)ChiP
chipic128 вне форума  
Непрочитано 24.07.2009, 23:36  
lsa
Почётный гражданин KAZUS.RU
 
Аватар для lsa
 
Регистрация: 22.06.2004
Адрес: Харьков
Сообщений: 1,488
Сказал спасибо: 3,207
Сказали Спасибо 3,010 раз(а) в 686 сообщении(ях)
lsa на пути к лучшему
По умолчанию

RAMEND для различных МК имеет разное значение.
Для Attiny2313 имеем 32 регистра, 64 адреса пространства ВВ и еще 128 байт ОЗУ (см. рис. из даташита).
Обычно стек начинается с адреса 0xDF (RAMEND).
Если в стек положить 2 байта, адрес вершины стека станет 0xDD и т.д.
Свои переменные лучше размещать с адреса 0x60 и дальше 0x61, 0x62....

-- Прилагается рисунок: --
lsa вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Собираем глюки и "подводные камни" AVR и AVR Studi Don_Ambrosio Коллекция глюков 27 14.11.2010 12:24
PP стек SIEMENS Developer_ Автоматика и аппаратура связи 0 03.09.2008 17:25
Как уменьшить размер памяти под стек? greafuger Микроконтроллеры, АЦП, память и т.д 1 03.04.2008 08:23
CVAVR передача в функцию PORTА.X как переменную woroba Микроконтроллеры, АЦП, память и т.д 5 10.12.2007 12:49
Можно ли очистить стек? RETAS Микроконтроллеры, АЦП, память и т.д 14 09.03.2006 16:16


Часовой пояс GMT +4, время: 21:40.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot