Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: адресация памяти данных в AVR
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
Марк_Я
Господа! Объясните внятно, какой документ у Атмела описывает все виды адресаций ОЗУ в AVR? Я в шоке... Такой бардак в документации я вижу впервые... Даташиты на 8-ю, 16-ую, 32-ю и 64-ю Меги совершенно разные в этой части. Назначения Спешиал Фанкшн Регистров при одинаковых названиях отличаются...

Собственно вопрос в том, как происходит адресация 16 разрядного поля памяти ОЗУ в командах длиной в 16 разрядов. Я понимаю, что не все команды имеют длину в одно слово, но где в ДШ формат команды побитно? Где четко описанный алгоритм косвенной адресации и адресации со смещением? Совершенный "путай-путай"...
=GM=
Смотрите документ doc0856.pdf. И не надо так огульно хаять, разберитесь вначале.
SSerge
AVR Instruction Set

Ещё может быть полезен AVR Assembler User Guide и прочее на странице: http://www.atmel.com/dyn/products/other_do...p?family_id=607
Марк_Я
Сенкс, за ссылку на Инстракшн Сет... Право слово, мне уже скинули в другом запросе, но все равно огромное спасибо.
По поводу огульно.
АВР всем хороши, но что за тех. поддержка? Я пытаюсь как нормальный пользователь скачать с сайта ДОСТОВЕРНУЮ информацию. Не книжки российских авторов, а оригиналы документации. Убиваю два дня на поиски невнятно изложенной инфы. Я же не первый день с МК работаю... Просто решил поиграть с АВР. С ПИКами я уже несколько лет успешно работаю и никаких проблем с документацией... А с МК вообще с 92 года... Так что есть с чем сравнивать. А задача сейчас не сложная - портировать один из работающих проектов на ПИКе в АВР и посмотреть что поимеем в техникоэкономике...
Так что ничего я не хаю огульно... Исключительно за дело...

to Goodefine. Персональное спасибо. Пришлось дублировать вопрос здесь, не сразу получил от Вас ответ. smile.gif

ЗЫ. Мои извинения заведению за неверно выбранный раздел... Обещаю впредь быть поскромнее... rolleyes.gif
mempfis_
Цитата(Марк_Я @ May 11 2009, 23:08) *
АВР всем хороши, но что за тех. поддержка? Я пытаюсь как нормальный пользователь скачать с сайта ДОСТОВЕРНУЮ информацию...


Нормальная техподдержка - сколько с AVR работаю никогда небыло претензий к сайту ATMEL и к документации.
(Вот с usermanual NXP LPC2468 разбирался так там не документация а тихий ужас - ATMEL по сравнению NXP на высоте)
Тут можно скачать документацию
Тут примеры применения (апноуты)
defunct
Цитата(Марк_Я @ May 11 2009, 23:08) *
АВР всем хороши, но что за тех. поддержка? Я пытаюсь как нормальный пользователь скачать с сайта ДОСТОВЕРНУЮ информацию. Не книжки российских авторов, а оригиналы документации. Убиваю два дня на поиски невнятно изложенной инфы.

Лучше бы промолчали, и признали что просто не разобрались какой документ надо скачать....
Уж какой бардак у PIC'ов с памятью и с документацией в сравнении с AVRами Й-ОЙ...

Не смотря на многолетний опыт, при знакомсте в новым сеймейством МК надо начинать с GETTING STARTED.
С вот этого документа, который кратко на 4х страницах рассказывает как начать и какие документы нужны для работы:

http://www.atmel.com/dyn/resources/prod_documents/novice.pdf
ЭнСб
Правильно ли я понимаю, что в МК atmega в ОЗУ адресация побайтная, а в ППЗУ пословная и в векторе прерываний на каждое выделено 2 байта?
Xenia
Цитата(ЭнСб @ Mar 29 2015, 10:26) *
Правильно ли я понимаю, что в МК atmega в ОЗУ адресация побайтная, а в ППЗУ пословная ...

Да и да. У AVR гарвардская архитектура, а потому различие в адресациях ничему не мешает, т.к. они никогда не смешиваются (т.е. не имеют единого адресного пространства).

Цитата(ЭнСб @ Mar 29 2015, 10:26) *
... и в векторе прерываний на каждое выделено 2 байта?

Не всегда. У тех МК, где объем ППЗУ больше 8 Кбайт (4 Кслова), на каждый вектор прерываний приходится не 2 байте (1 слово), а 4 байта (2 слова), т.к. тогда адрес слишком длинный, чтобы его можно было поместить в одно слово команды. Т.е. у инструкции безусловного перехода RJMP для адреса доступны только 12 бит (hex-код команды Cxxx). А если адрес длиннее, то используется инструкция JMP, состоящая из двух слов.

Всё это потому, что вектора прерываний заполняются не адресами, а командами перехода! Т.е. AVR-ки не выбирают адрес перехода из таблицы прерывания, а просто шагают в нее sm.gif.
smalcom
Цитата(ЭнСб @ Mar 29 2015, 10:26) *
Правильно ли я понимаю, что в МК atmega в ОЗУ адресация побайтная, а в ППЗУ пословная и в векторе прерываний на каждое выделено 2 байта?


да. с маленьким дополнением: при помощи LPM можно прочитать отдельный байт ППЗУ.
V_G
Цитата(ЭнСб @ Mar 29 2015, 17:26) *
Правильно ли я понимаю, что в МК atmega в ОЗУ адресация побайтная, а в ППЗУ пословная

Неправильно. И там и там - пословная. Просто благодаря гарвардской архитектуре (упомянутой выше) размерность слова памяти данных - 8 бит, а памяти программ - 16 бит.
Тонкости адресации начинаются при использовании памяти программ для хранения данных, про инструкцию LPM тут уже тоже написали.
Xenia
Цитата(V_G @ Mar 29 2015, 14:52) *
Неправильно. И там и там - пословная. Просто благодаря гарвардской архитектуре (упомянутой выше) размерность слова памяти данных - 8 бит, а памяти программ - 16 бит.
Тонкости адресации начинаются при использовании памяти программ для хранения данных, про инструкцию LPM тут уже тоже написали.


Верно заметили. Т.е. при работе с ППЗУ используется байтная адресация, если нужно читать оттуда константы/данные. Но переходы и вызовы подпрограмм/функций производятся по словному адресу, т.к. переходы по нечетным байтам все равно были бы бессмысленны. Это только на первый взгляд кажется, что здесь возможна путаница, тогда как на самом деле всё предельно логично. sm.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.