Ассемблер (ASM) для AVR в вопросах и ответах
- Реклама
А тебя как-то ебёт волнует, что там мусор?
Заслал туда своё значение, мусор затёрся.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Gudd-Head, русокото облико морале ! 
Tell Me The Truth
Не, Свежий, ну скажи, чем тебе мешает мусор в ОЗУ и РОН?
Единственное что они могли сделать во всех АВРках, это чтобы стек после ресета настраивался сам.
Единственное что они могли сделать во всех АВРках, это чтобы стек после ресета настраивался сам.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Да уж. FreshMan мертвого кота вопросами за#@$т!
Ржал с последних ответов Gudd-Head'а))) Молодец!
РВВ выходят наружу микроконтроллера, поэтому переводятся в самое безопасное для остальной схемы состояние - высокоимпедансное. Остальное - забота программиста.
РВВ выходят наружу микроконтроллера, поэтому переводятся в самое безопасное для остальной схемы состояние - высокоимпедансное. Остальное - забота программиста.
Ставим плюсы: )
- Реклама
FreshMan, ты просто не в курсе, что этому эффекту можно найти множество применений, например управление девайсом кнопкой на RESET'е 
И ещё открою страшный секрет: удаляя файл с компа на жёстком диске ничего физически не удаляется, файл лежит цел целёхонек, только место помечено как свободное
И ещё открою страшный секрет: удаляя файл с компа на жёстком диске ничего физически не удаляется, файл лежит цел целёхонек, только место помечено как свободное
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
РОН и РВВ не принадлежат к ОЗУ. Они расположены в отдельных регистрах, но могут быть адресованы как часть ОЗУ. За счет этого и достигается быстродействие 1MISP/MHz. Насчет безопасности ibiza11 верно сказал, тем более что в реальности это наверняка общая асинхронная линия RESET. А занулять память возможно только по одной ячейке. Можно прикинуть сколько это займет по времени, особенно учитывая что на практике никогда не нужно.FreshMan писал(а): но как же так, ведь и РОН и РВВ принадлежат к ОЗУ
но РВВ мы обнуляем жостко, а РОН шиш с маслом
как сие возможно ?![]()
Не стоит. Во-первых в разных RTOS для каждой задачи используется свой стек со своим адресом, во-вторых для некоторых применений имеет смысл адресовать стек с 0x00FF, для простоты адресации ОЗУ (XH=0x01; XL=адрес).Единственное что они могли сделать во всех АВРках, это чтобы стек после ресета настраивался сам.
Спойлер
Разумеется это можно делать только если эти адреса не заняты под системные нужды. Ну там, m8, где ОЗУ фактически начинается с 0x0060, если не ошибаюсь.Замечу, не во всех.Gudd-Head писал(а):Единственное что они могли сделать во всех АВРках, это чтобы стек после ресета настраивался сам.
В той же mega8a до сих пор нет. Так что стек лучше настраивать вручную.
Да ну? Лучше когда там $0000, что ли? И при первом же push'е сваливается в $FFFF?COKPOWEHEU писал(а):Не стоит.
Я имел в виду МОГЛИ БЫ.akl писал(а):В той же mega8a до сих пор нет.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
Да я знаю что там этого не сделано
Я про то что делать это и не надо, тем более что у разных контроллеров разный объем ОЗУ, соответственно разный адрес ее конца. Да и нагляднее так: если уж руками выставил стек, может будешь помнить что туда писать что попало не стоит. А если автоматически сгенерировалось, как в ЯВУ, например, так там и к памяти просто так не обратишься.
COKPOWEHEU писал(а):тем более что у разных контроллеров разный объем ОЗУ, соответственно разный адрес ее конца
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
Да? Не знал. Но все равно лучше перестраховаться и указать стек явно.
И не только у неё, во всех многих новых камнях.COKPOWEHEU писал(а):Да? Не знал.
Лучше перестраховаться и почитать самый последний ДШ. Или вы перестраховываетесь и после ресета всю периферию отключаете и порты в Z-состояние переводите?COKPOWEHEU писал(а):Но все равно лучше перестраховаться и указать стек явно.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
Конечно инициализирую. Не отслеживать же чем этот ресет был вызван, началом работы, сбросом или там собакой.
Слово "переносимость" знакомо?
Слово "переносимость" знакомо?
и снова о старом:
rcall годится при обьеме памяти до 8к
call годится при обьеме памяти до 64к
а что же используется в тех МК где память перевалила за рубеж 64к ?
rcall годится при обьеме памяти до 8к
call годится при обьеме памяти до 64к
а что же используется в тех МК где память перевалила за рубеж 64к ?
Tell Me The Truth
А там используют iCall и/или "удлинители". Как правило, контроллеры с таким объемом флеша не содержат столько кода, объем этот преимущественно используется для размещения ресурсов(таблиц преобразования, картинок, шрифтов, звуков).
Что rcall/call, что rjmp/jmp применяется к месту. Если в МК 64 кило флеша, это не значит, что все прыжки будут с начала в конец. Подавляющее большинство - всего на несколько слов, может только раз или два во всём проекте пригодится прыгнуть дальше.
и шо тогда делать?ploop писал(а):может только раз или два во всём проекте пригодится прыгнуть дальше.
Tell Me The Truth
прыгать два (или больше) раза:
jmp m1
...
m_1: rjmp m_2
m1: jmp m2
m_2:
...
m2:
jmp m1
...
m_1: rjmp m_2
m1: jmp m2
m_2:
...
m2:
Последний раз редактировалось a_skr Пт сен 06, 2013 10:35:25, всего редактировалось 1 раз.
Использовать rjmp/rcall и не париться. Если вдруг размер прыжка превысит их возможности - компилятор выдаст ошибку, сотрёшь буквочку R, и волосы станут мягкими и шелковистыми.и шо тогда делать?


