Обсуждаем контроллеры компании Atmel.
Вс сен 05, 2021 20:27:23
- Я правильно понимаю, что "Рабочие регистры" - это внутренняя память ЦПУ МК? И АЛУ непосредственно может работать только с рабочими регистрами? А рабочие регистры уже обмениваются информацией с ОЗУ (SRAM)?
- Физически, рабочие регистры - это часть общей ОЗУ? Или это отдельная ОЗУ в ЦПУ МК?
Вс сен 05, 2021 20:35:16
Рабочие регистры это рабочие регистры, 32 ячейки памяти ядра, ни с какой другой памятью они не связаны.
Но есть специальные команды вроде ld, st, lds, sts специально для пересылки ОЗУ-регистры и lpm/spm для флеш-регистр r0.
Регистры это НЕ часть ОЗУ, но доступ к ним через операции работы с памятью возможен. Физически они устроены по-другому.
Вс сен 05, 2021 20:37:53
https://yandex.ru/search/?lr=166645&cli ... 1%80%D0%B0 Просто море информации. Хотите, чтобы её за Вас прочитали и тут пересказали ?
Вс сен 05, 2021 20:41:56
Аlex, нет. Хочу обсуждать ее вместе. Так запоминается легче и чаще всего раскрываются какие-то сложные для понимания нюансы. Это запрещено?
Вс сен 05, 2021 20:46:00
я считаю, что это часть общего ОЗУ.
например, в МК АТмега8 рабочие регистры и прочие служебные регистры занимают адреса с 0х00 до 0х5F.
ОЗУ пользователя начинается с адреса 0х60.
и команды обращения к оперативной памяти (lds и sts) работают со всеми регистрами также, как с ячейками SRAM.
и в даташите все регистры и SRAM изображены на общей диаграмме со сплошной адресацией от нуля до "потолка" SRAM.
ВСЕ регистры еще имеют собственное название "Регистровый файл".
Вс сен 05, 2021 21:07:34
Аlex, нет. Хочу обсуждать ее вместе.
Что тут обсуждать ?
Ответ на заданный Вами вопрос ищется за 10 секунд в интернете. Полагаю, поиск на все остальные вопросы займёт времени не более, чем на этот.
Добавлено after 1 minute 52 seconds:Starichok51, вопрос был про физическое расположение РОН и SRAM. Физически, это разные области. Адресация тут не при чём.
Вс сен 05, 2021 21:40:12
возможно, я не правильно понял вопрос.
Вс сен 05, 2021 21:56:57
Аlex писал(а):Что тут обсуждать ?
Да мы уже обсуждаем.
Вопрос был не только про физическую память. Вопрос был еще про то, может ли АЛУ МК напрямую работать с другой памятью напрямую, кроме "Регистрового файла"? Т.е. правильно ли, что биты данных для любых арифметических и логических операций в ЦПУ берутся только из "Регистрового файла"?
Добавлено after 7 minutes 21 second:Т.е. я хочу понять для чего были реализованы РОН. Почему, например, для этих целей не использовать ячейки памяти SRAM?
Добавлено after 1 minute 49 seconds:Может они работают быстрее? Что-то типа буфера ЦПУ?
Вс сен 05, 2021 22:10:18
я считаю, что это часть общего ОЗУ.
Это не так. Регистры
отображаются на память, но не являются ей. В контроллерах постарше на память отображается вообще все: и регистры периферии (РОН кстати уже не отображаются), и флешка, и внешняя память, и даже виртуальные устройства.
может ли АЛУ МК напрямую работать с другой памятью напрямую
Именно AVR нет, но есть другие ядра вроде PIC, которые умеют складывать РОН с оперативкой.
Добавлено after 1 minute 35 seconds:Может они работают быстрее? Что-то типа буфера ЦПУ?
Вместо чтения литературы угадать пытаетесь? Это очень неэффективный способ.
Даже разработка своего ядра эффективнее.
Вс сен 05, 2021 22:13:43
COKPOWEHEU писал(а):Вместо чтения литературы угадать пытаетесь?
Нет, делаю все параллельно. Если что-то непонятно, задаю вопрос здесь.
Пн сен 06, 2021 08:35:08
Kalisnik, подавляющее число команд (инструкций) в AVR состоит из одного слова (2 байта).
и в одном слове невозможно сделать такое множество комбинаций из нулей и единиц, чтобы АЛУ работало и с РОН и с ОЗУ "полномасштабно".
для работы с ОЗУ команды состоят уже из двух слов - нужно еще указать в команде адрес ячейки ОЗУ.
понятно, что команда из двух слов выполняется в 2 раза медленнее, чем команда из одного слова. то есть, работа с ОЗУ медленнее, чем с РОН.
а адрес ячейки ОЗУ занимает заметно больше 1 байта. и оставшихся бит в первом байте команды недостаточно, чтобы создать большой набор операций с ячейками ОЗУ.
поэтому для работы с ОЗУ существуют только команды различных вариантов пересылки между РОН и конкретной ячейкой.
Пн сен 06, 2021 10:05:29
РОН-ы? Они всегда относились к периферии. А где расположены - зависит от МК. В последних МК AVR вообще всё находится в едином адресном пространстве, что делает работу с ними в разы приятнее.
Теперь запись в EEPROM выглядит так:
- Код:
void EEPROM_write_word (uint8_t eeprom_adr, uint16_t* eeprom_data)
{
uint16_t* eeprom;
eeprom = (uint16_t*)(EEPROM_START + eeprom_adr);
*eeprom = *eeprom_data;
while (NVMCTRL.STATUS & NVMCTRL_EEBUSY_bm);
CCP = CCP_SPM_gc;
NVMCTRL.CTRLA = NVMCTRL_CMD_PAGEERASEWRITE_gc;
}
Аналогично можно "чиркануть" во flash.
Штудируйте даташит - там вся информация есть.
Пн сен 06, 2021 10:41:01
Starichok51, спасибо. Теперь стало понятнее.
Пн сен 06, 2021 19:42:49
Для начало стоило бы разобраться что такое АЛУ, и что входит в состав АЛУ, а уж потом приплетать сюда ОЗУ flash и EEPROM.
parovoZZ писал(а):РОН-ы? Они всегда относились к периферии.
Ни когда они не относились к периферии.
parovoZZ писал(а):Штудируйте даташит - там вся информация есть.
Начните хотя бы с КР1830ВЕ31.
Пн сен 06, 2021 23:10:32
Даже в даташите показано, что РОН-ы не входят в состав АЛУ. Хоть они и связаны напрямую, но таки они отдельно.
Вт сен 07, 2021 08:18:01
а никто тут и не говорил такую глупость, что РОН входят в состав АЛУ.
Вт сен 07, 2021 08:48:04
А еще, AVR нехорош тем, что большинство инструкций не работают с регистрами 0-15, только с регистрами 16-31. Видимо потому, что Flash, для ускорения работы, сделана 16 разрядной и, поделена на страницы 16 байт. Вообщем архитектура очень примитивна, а периферия и контроллер прерываний изобилует грубыми ляпами.
Вт сен 07, 2021 09:15:40
а Си так вообще пофиг где РОНы находятся
Вт сен 07, 2021 10:13:36
Си то пофиг (а быстродействие уменьшается) но, вот прерывания от ШИМ теряются, если их больше одного запрограммировать. Например, установлены прерывания по переполнению и по совпадению. Прерывание по переполнению не вызывается вовсе, если установлено прерывание по совпадению. Все писалось на Си. Интересно, это ляп периферии или ляп контроллера прерываний? Вектора то разные.
Вт сен 07, 2021 11:30:17
а что говорит даташит?
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.