ilgizmulukov Опубликовано 29 января, 2008 Жалоба Поделиться Опубликовано 29 января, 2008 Микроконтроллёры AVR построенны по Гарвардской архитектуре,т.е. у них есть две памяти:данных и команд.Я понимаю назначение памяти команд,но вот как-то не совсем назначение памяти данных.Объясните пожалуйста или может подскажите где почитать? Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 29 января, 2008 Жалоба Поделиться Опубликовано 29 января, 2008 ilgizmulukov: Устройство микроконтроллеров AVR Объяснять особенно нечего. В памяти данных - данные, в памяти команд - команды. Данные делятся на два сорта - часто меняющиеся (входные, промежуточные, выходные) и постоянные (всякие коэффициенты и константы, используемые в ходе вычислений). Поэтому память данных делят на оперативную и энергонезависимую, в последней хранятся коэффициенты и другие постоянные, они не стираются при выключении контроллера, но эта память имеет ограниченное количество циклов перезаписи. Ссылка на комментарий Поделиться на другие сайты Поделиться
ilgizmulukov Опубликовано 30 января, 2008 Автор Жалоба Поделиться Опубликовано 30 января, 2008 Т.е. к примеру команда MOV R7,#0 в данном случае 0 будет храниться в памяти данных и всё остальное в таком роде тоже? Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 30 января, 2008 Жалоба Поделиться Опубликовано 30 января, 2008 Команда - нет. Команда хранится в памяти команд. Константы внутри команды считаются не отдельными данными, а частью команды. Ссылка на комментарий Поделиться на другие сайты Поделиться
Old men Опубликовано 30 января, 2008 Жалоба Поделиться Опубликовано 30 января, 2008 Можно и в этом случае записать константу в память данных, но потом ее надо будет оттуда сложно выковыривать. Наиболее наглядный, IMHO, такой пример - контроллер занимается подсчетом событий (все равно каких) в течении длительного времени. Проработав рабочий день, его отключают из сети, а накопленные данные записывают в энергонезависимое ОЗУ, на следующий день счет продолжается. Если подсчитываются разные события, то константа может служить маской, по которой события сортируются Ссылка на комментарий Поделиться на другие сайты Поделиться
ilgizmulukov Опубликовано 30 января, 2008 Автор Жалоба Поделиться Опубликовано 30 января, 2008 Ну как я тогда это всё понял все объявленные переменные будут храниться в памяти данных,а константы могут быть и там и там? Ссылка на комментарий Поделиться на другие сайты Поделиться
Old men Опубликовано 30 января, 2008 Жалоба Поделиться Опубликовано 30 января, 2008 В общем-то да, но в команде намного удобнее задавать константу в теле команды, чем переписывать ее из ячейки в регистр, а потом совершать действие. Я (может быть это и не оптимально :g: ) записываю константы в памяти команд только в подпрограммах, чтобы обращение к подпрограмме уже вводило в основную программу нужные значения или коэффициенты для расчетов. Чтобы яснее, скажем перевод из двоичного представления числа в двоично-десятичное. Обращаясь к подпрограмме перевода я знаю, что у меня там есть проверка на переполнение, выполненная в виде добавления 6 к значению регистра и проверке флага переноса. То есть 6 записано в команде и может считаться константой, но это не та константа, которую я вызываю по метке, а именно константа в теле команды. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения