ATMEGA 8 и ATMEGA168 совместимость?

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
Just_Fluffy
Вымогатель припоя
Сообщения: 532
Зарегистрирован: Ср июн 29, 2022 16:25:45

Re: ATMEGA 8 и ATMEGA168 совместимость?

Сообщение Just_Fluffy »

COKPOWEHEU, терминология понятна вполне. Это было так, к слову. Что у АВРок адресация через отображение на память универсальна для всего регистрового файла.
Белая и Пушистая
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Re: ATMEGA 8 и ATMEGA168 совместимость?

Сообщение COKPOWEHEU »

Да, насколько я помню, там даже РОНы можно адресовать через оперативку.
Я-то к тому говорил, что в MMIO (за пределы in/out) они вылезли не от хорошей жизни. И не самым удобным способом.
Аватара пользователя
Just_Fluffy
Вымогатель припоя
Сообщения: 532
Зарегистрирован: Ср июн 29, 2022 16:25:45

Re: ATMEGA 8 и ATMEGA168 совместимость?

Сообщение Just_Fluffy »

COKPOWEHEU, просто в системе команд для адресации IO атмелы отвели 6 бит всего.... Тем самым себя ограничив... "64 регистра хватит всем"
А для части команд вообще 5 бит адресация IO
Белая и Пушистая
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Re: ATMEGA 8 и ATMEGA168 совместимость?

Сообщение COKPOWEHEU »

Потому что всего 16 бит на команду. Да еще хвастались развесистым ассемблером, более сотни инструкций. Впрочем, в 32-битках тоже адрес периферии в команде не кодируют.
Аватара пользователя
Just_Fluffy
Вымогатель припоя
Сообщения: 532
Зарегистрирован: Ср июн 29, 2022 16:25:45

Re: ATMEGA 8 и ATMEGA168 совместимость?

Сообщение Just_Fluffy »

COKPOWEHEU, и что, разве мало? Вон некоторые на "современном ассемблере" мегапрограммы пишут с собственным отладчиком... И программы, во много раз более компактные, нежели на ЯВУ. Значит хороший ассемблер, надо брать. Просто на этапе разработки системы команд не получилось, видимо, выделить больше 6 бит на адрес периферии. Зато он внутри команды, а не идет отдельным операндом, занимая еще одну ячейку флеша.

Добавлено after 5 minutes 35 seconds:
А "развесистость" меня тоже посмешила. BRBC/BRBS раздуть до 18 ассемблерных мнемоник. То же самое про BSET/BCLR...
Белая и Пушистая
Adrift
Вымогатель припоя
Сообщения: 539
Зарегистрирован: Вт окт 01, 2024 15:22:33

Re: ATMEGA 8 и ATMEGA168 совместимость?

Сообщение Adrift »

[uquote="Just_Fluffy",url="/forum/viewtopic.php?p=4676455#p4676455"]Просто на этапе разработки системы команд не получилось, видимо, выделить больше 6 бит на адрес периферии.[/uquote]
25 лет назад 6 бит могло казаться не так и мало, у первого AVR из периферии самый минимум был, ни UART/SPI, ни даже ОЗУ )
Аватара пользователя
shonty
Мучитель микросхем
Сообщения: 473
Зарегистрирован: Ср янв 11, 2012 18:20:26

Re: ATMEGA 8 и ATMEGA168 совместимость?

Сообщение shonty »

Ну да) просто чипы эволюционировали с развитием условий. Ну и ставили заплатки где можно. Как то выбирались из ситуации)

Добавлено after 1 minute 49 seconds:
..стараясь сохранить приемственность)
Аватара пользователя
Starichok51
Модератор
Сообщения: 19045
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Re: ATMEGA 8 и ATMEGA168 совместимость?

Сообщение Starichok51 »

Just_Fluffy писал(а):BRBC/BRBS раздуть до 18 ассемблерных мнемоник.
там есть условия, которые определяются комбинацией битов в SREG. так что, не всегда достаточно проверить только один бит.
а большое количество мнемоник из-за того, что есть дублирующие мнемоники, имеющие один и тот же код.
например, BRCS и BRLO имеют одинаковый код. но вторая (если меньше) логически более удобна, чем просто "если перенос установлен".

Добавлено after 15 minutes 22 seconds:
и еще.
в этом большом количестве мнемоник есть огромное удобство - мне не нужно помнить номера каждого бита в регистре.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Re: ATMEGA 8 и ATMEGA168 совместимость?

Сообщение COKPOWEHEU »

[uquote="Just_Fluffy",url="/forum/viewtopic.php?p=4676455#p4676455"]COKPOWEHEU, и что, разве мало? Вон некоторые на "современном ассемблере" мегапрограммы пишут с собственным отладчиком... И программы, во много раз более компактные, нежели на ЯВУ. Значит хороший ассемблер, надо брать.[/uquote]
Ну, "во много раз" для программы более-менее вменяемого размера и более-менее вменяемого срока разработки я, конечно, не поверю. Пара десятков процентов от силы. Дальше у человека уже закончится внимательность за всем следить.
[uquote="Just_Fluffy",url="/forum/viewtopic.php?p=4676455#p4676455"]Просто на этапе разработки системы команд не получилось, видимо, выделить больше 6 бит на адрес периферии.[/uquote]
Ну, не так уж они и ошиблись: как раз когда 6 бит закончились, закончилась и популярность 8-битных контроллеров.
[uquote="Just_Fluffy",url="/forum/viewtopic.php?p=4676455#p4676455"]А "развесистость" меня тоже посмешила. BRBC/BRBS раздуть до 18 ассемблерных мнемоник. То же самое про BSET/BCLR...[/uquote]
Чего не сделаешь ради маркетинга. Даже псевдо-команды в список добавлять будешь.
Хм. Даже интересно, сколько у них команд на самом деле, без дублирования.

Добавлено after 42 minutes 43 seconds:
[uquote="COKPOWEHEU",url="/forum/viewtopic.php?p=4676482#p4676482"]Хм. Даже интересно, сколько у них команд на самом деле, без дублирования.[/uquote]
Провел опыт: создал бинарный файл с последовательными 16-битных числами (по 2 штуки каждого на случай lds, sts) и прошелся по нему скриптом:

Код: Выделить всё

$ avr-objdump avr_test.bin -b binary -D -m avr | tail -n +8 | sed 's/[^\t]*\t[^\t]*\t\([0-9a-z.]*\).*/\1/' | sort -u | wc -l
107
Правда, там еще .word затесался, но все равно, более сотни инструкций. Включая такие интересные, как las, lat, xch
Аватара пользователя
Just_Fluffy
Вымогатель припоя
Сообщения: 532
Зарегистрирован: Ср июн 29, 2022 16:25:45

Re: ATMEGA 8 и ATMEGA168 совместимость?

Сообщение Just_Fluffy »

COKPOWEHEU писал(а):Ну, "во много раз" для программы более-менее вменяемого размера и более-менее вменяемого срока разработки я, конечно, не поверю.
В сети встречала утверждение, что грамотно написанная сишная программа дает оверхед 20-30% против грамотного асм-кода.
Но бывают частные случаи, когда функционал простой и можно писать все на регистрах... Либо укладываться в 256 байт ОЗУ, "законстантив" ZH...
Можно еще ради экономии сидеть оптимизировать код, используя различные ухищрения и аппаратные особенности... Особенно, когда программа не умещается во флеш ровно на один байт )))
Еще можно уйти от универсальности программы на ЯВУ, заточив код под какой то один-два МК. Но это частные случаи (как срачик про загрузчики).
Как по мне, асм хорош для каких то критичных ко времени задач. Когда нужно сделать минимальный код, а ЯВУ навешает лишнего согласно своих соглашений. Причем не чистый асм, а ассемблерная вставка.
А в остальном - срок разработки, читаемость и переносимость кода - это не для ассемблера.
Starichok51 писал(а):в этом большом количестве мнемоник есть огромное удобство - мне не нужно помнить номера каждого бита в регистре.
Мне их тоже не нужно помнить ))))))
if (a>0) { action; }
А если мне нужна ассемблерная вставка, то я могу и в справке подсмотреть мнемонику.
Белая и Пушистая
Аватара пользователя
java
Держит паяльник хвостом
Сообщения: 962
Зарегистрирован: Вт янв 04, 2011 13:26:17
Откуда: Лен.Обл.

Re: ATMEGA 8 и ATMEGA168 совместимость?

Сообщение java »

В общем-то всё гораздо проще оказалось, есть плата адруино уно с краватью, только кварц перепаять, с 16 на 8, в програматоре залить восьмую и вставить в кравать вместо 168.
Изображение
Пишу с ошибками и опечатками.На это у меня есть разрешение и справка
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Re: ATMEGA 8 и ATMEGA168 совместимость?

Сообщение COKPOWEHEU »

[uquote="Just_Fluffy",url="/forum/viewtopic.php?p=4676559#p4676559"]Можно еще ради экономии сидеть оптимизировать код, используя различные ухищрения и аппаратные особенности... Особенно, когда программа не умещается во флеш ровно на один байт )))[/uquote]
А представьте себе такую хардкорную оптимизацию под, хотя бы, stm32f103, контроллер 10-20-летнего возраста с 64к флеша.
Just_Fluffy писал(а):Еще можно уйти от универсальности программы на ЯВУ, заточив код под какой то один-два МК.
Можно. Но это будет скорее пример демосцены "смотрите, как я умею", чем реального проекта. Например, вроде такого.
Just_Fluffy писал(а):Как по мне, асм хорош...
...для локальных оптимизаций, для критичного к времени выполнения кода (vusb отличный пример; хотя в более мощных камнях скорость выполнения инструкций уже не гарантируется - кеши, предсказания, да и просто пропускная способность шины команд). Для супер-низкоуровневых вещей вроде переключателя контекста в ОС. Очень хорош для обучения. И, разумеется, при просмотре дизассемблированного кода - реверсе или просто отладке.
Just_Fluffy писал(а):Причем не чистый асм, а ассемблерная вставка.
Отчего же, можно и чистый асм. Очень часто стартап-файлы (тот код, который подготавливает стек, переменные, спецрегистры и прочее к запуску высокоуровневого кода) пишутся именно на чистом асме. На AVR он уже написан и хорошо спрятан, а вот на arm или risc-v его приходится качать у производителя или писать самому. Ну и другие примеры использования библиотек на асме никто не отменял.
Just_Fluffy писал(а):А если мне нужна ассемблерная вставка, то я могу и в справке подсмотреть мнемонику.
Не, не. Когда есть удачная мнемоника это очень удобно. Зачастую получается писать ассемблерный код просто из головы. Не говоря уж о чтении (в т.ч. дизасма).
java писал(а):В общем-то всё гораздо проще оказалось, есть плата адруино уно с краватью, только кварц перепаять, с 16 на 8, в програматоре залить восьмую и вставить в кравать вместо 168.
Ну вот, так и не дали форумчанам блеснуть своими навыками :)
Аватара пользователя
Just_Fluffy
Вымогатель припоя
Сообщения: 532
Зарегистрирован: Ср июн 29, 2022 16:25:45

Re: ATMEGA 8 и ATMEGA168 совместимость?

Сообщение Just_Fluffy »

COKPOWEHEU, не, я асм в целом помню, но в основном помнятся BREQ и BRNE, а остальные ветвления по флагам приходится подглядывать.... Ну не пишу я на асме уже давно... Иногда что то накалякать как вставку... Либо глянуть чужой код...
Белая и Пушистая
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Re: ATMEGA 8 и ATMEGA168 совместимость?

Сообщение COKPOWEHEU »

Ну вот когда в чужом коде встречается brlo или brsh, это же понятнее, чем brbs 0 и brbc 0.
Аватара пользователя
shonty
Мучитель микросхем
Сообщения: 473
Зарегистрирован: Ср янв 11, 2012 18:20:26

Re: ATMEGA 8 и ATMEGA168 совместимость?

Сообщение shonty »

Это из-за отсутствия определений битов SREG. Хотя если самому определить, то типа brbs (1<<bit_T) совсем неплохо выглядит.. да и меньше команд знать..
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15550
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: ATMEGA 8 и ATMEGA168 совместимость?

Сообщение BOB51 »

У АВРок все команды достаточно обоснованы.
Особенности проистекают из структуры ядра и желания подстроиться под ЯВУ уже на уровне ассемблера (avrasm2).
шаблон_команд_AVR_2024.pdf
(266.52 КБ) 53 скачивания
8)
Такая "шпора" быстрее память освежает.
:tea:
Аватара пользователя
shonty
Мучитель микросхем
Сообщения: 473
Зарегистрирован: Ср янв 11, 2012 18:20:26

Re: ATMEGA 8 и ATMEGA168 совместимость?

Сообщение shonty »

BOB51 писал(а):и желания подстроиться под ЯВУ уже на уровне ассемблера
да, обилие команд чтобы абстрагироваться от железа. Их можно просто как макросы воспринимать..

Например, переход контроллером совершается не потому что меньше или больше, а по факту проверки флага sreg. Так как предыдущая команда его устанавливает или очищает.

Это как компромисс между машинным языком и человеческим))
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Re: ATMEGA 8 и ATMEGA168 совместимость?

Сообщение COKPOWEHEU »

[uquote="BOB51",url="/forum/viewtopic.php?p=4676830#p4676830"]Особенности проистекают из структуры ядра и желания подстроиться под ЯВУ уже на уровне ассемблера (avrasm2).[/uquote]
Если бы хотели подстроиться под ЯВУ, сделали бы косвенную адресацию. Вот у меня по адресу Z=0x0124 лежит объект, как обратиться к его полю? Никак - сначала прибавляем к Z смещение, потом обращаемся. Вот у меня на стеке выделено пять локальных переменных, как к ним обратиться? Снова никак - сначала загрузить в регистр SP, потом добавить смещение, и только потом обращаемся.
Для сравнения, в risc-v регистр SP это просто РОН, и есть команды вроде lw reg, 4(sp), sw reg, -6(reg). В ARM вроде тоже что-то подобное есть.
BOB51 писал(а):Такая "шпора" быстрее память освежает.
Только вот со шрифтами там довольно печально. Да и с дизайном тоже. Сравните.
Adrift
Вымогатель припоя
Сообщения: 539
Зарегистрирован: Вт окт 01, 2024 15:22:33

Re: ATMEGA 8 и ATMEGA168 совместимость?

Сообщение Adrift »

[uquote="COKPOWEHEU",url="/forum/viewtopic.php?p=4676847#p4676847"]Вот у меня по адресу Z=0x0124 лежит объект, как обратиться к его полю?[/uquote]
LDD Rd, Z+q ?
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15550
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: ATMEGA 8 и ATMEGA168 совместимость?

Сообщение BOB51 »

Табличное чтение есть, переход ICALL , IJMP есть
сложение/вычитание с индекс-регистрами (ADIW, SBIW) есть,
Обмен регистровых пар MOVW есть.
Чего ещё не хватает то?
8)
Разве что спец команды условного возврата как у I8080/Z80 ...
Так их устроить не так уж и сложно.
Быстродействие вполне позволяет.
:sleep:
Насчет шрифтов и оформления в "шпоре" - это пдфка с *.bmp оригинала 90х годов. Переделывать леньки (пикушки у меня уже в splan7 отрисованы, а 51я и I8080/Z80 вообще вручную с карандашиком - тогда ещё с компами напряг был).
8)
И второе...
"шпаргалки" не заменяют основной документации по системе команд и даташитам МК - это всего лишь возможность быстро "окинуть взглядом" имеющиеся в распоряжении ресурсы.
(возможность выбора более удачного решения из "чуток подзабытого" при перерывах в работе с МК)
:wink:
Последний раз редактировалось BOB51 Ср янв 29, 2025 14:48:13, всего редактировалось 2 раза.
Ответить

Вернуться в «AVR»