AVR Assembler

Обсуждаем контроллеры компании Atmel.
Ответить
Друг Кота
Аватара пользователя
Сообщения: 15674
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

У топикстартера
tavrasm,
а большинство местных мастеров ассемблера работают под AVRASM2
(АВР студио 4.19 или более поздняя 7/микрочип студия).
Оттого возможны весьма существенные разночтения - не изучать же детально описание tavrasm для разовой консультации...
8)
относительно GAS GCC это вообще "отдельно садомазохистская тема"
:tea:
Реклама
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Пт июл 14, 2023 19:07:53

Сообщение Иван Михайлович »

[uquote="Demiurg",url="/forum/viewtopic.php?p=4448506#p4448506"]ТС. Повторяю. Array это адрес. PC это счётчик команд. Текущая строка. Чревато ошибкой. Я сразу понял про что вы. Но, это ненадежный способ. Но не понял ваших мотивов использовать такой костыльный способ.[/uquote]

У меня есть небольшой проект выходного дня, некий отладчик по USART. Практического смысла, возможно, не имеет, но мне просто интересно. Задумок по нему очень много, реализовано пока далеко не всё. Не буду вдаваться в подробности парсига, после обработки принятых по USART данных есть номер элемента в массиве адресов, после чтения которого выполняется косвенный переход.
Адресов в массиве в виде:
Table_Vectors_Registers_Array:

.dw R0_Array
.dw R1_Array
.dw R2_Array
.dw R3_Array
.dw R4_Array
.dw R5_Array
.dw R6_Array
...................
больше сотни. Считать их вручную - сдохнуть можно.
.equ Count_Register_Const = PC-Table_Vectors_Registers_Array - решает эту проблему. Данная константа нужна для парсинга данных. Этот способ придумал не я, подсмотрел на каком-то забугорном форуме, концов уже не найти.
Если у Вас есть способ, как это можно сделать по другому, поделитесь, пожалуйста, возьму на вооружение :kill:

Вот несколько скриншотов, что умеет делать моя сырая прога, но это не весь реализованный функционал на данный момент)
Вложения
Reg_State_2.png
Проверка состояния любого регистра
(32.39 КБ) 46 скачиваний
Reg_State.png
Состояние РОН
(53.12 КБ) 42 скачивания
EEPROM_State.png
Состояние EEPROM
(39.22 КБ) 40 скачиваний
Ram_State.png
Состояние RAM
(40.85 КБ) 50 скачиваний
Последний раз редактировалось Иван Михайлович Ср июл 19, 2023 12:22:05, всего редактировалось 1 раз.
Окстись! Открой DataSheet и просветись!
Реклама
Друг Кота
Аватара пользователя
Сообщения: 15674
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Всего-то обмен с терминалкой в ПК?
8)
Я чуток получше, но на MCS51, делал (включая командный режим)...
https://radiokot.ru/forum/viewtopic.php?f=62&t=156720
На АВРках или МК с достаточным ОЗУ или меги с внешним ОЗУ-накопителем аналогом могут быть.
Смысл построчно каждый байт DW прописывать-то(вместо одной строки)?
Это ведь простая таблица векторов размером в слово (а не побайтовые таблицы смещения/скоростных перекодировщиков).
:roll:
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Пт июл 14, 2023 19:07:53

Сообщение Иван Михайлович »

[uquote="BOB51",url="/forum/viewtopic.php?p=4448725#p4448725"]Смысл построчно каждый байт DW прописывать-то(вместо одной строки)?
Это ведь простая таблица векторов размером в слово (а не побайтовые таблицы смещения/скоростных перекодировщиков).
:roll:[/uquote]
Командный режим тоже есть)
Для удобства восприятия информации) памяти в обоих случаях расходуется одинаково)
Окстись! Открой DataSheet и просветись!
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 15674
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

А не проще "база + смещение" (Z+N и IJMP/ICALL)?
При вычисляемом (принимаемом) смещении (или готовом 2-байтовым адресом в теле команды)?
8)
Да и целая тема по АВР ассемблеру уже есть:
https://radiokot.ru/forum/viewtopic.php?f=57&t=5931
:wink:
Реклама
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Пт июл 14, 2023 19:07:53

Сообщение Иван Михайлович »

Именно так и реализованно.
Чтение 2 байт "адрес массива+номер адреса необходимой подпрограммы" и icall)
Окстись! Открой DataSheet и просветись!
Реклама
Друг Кота
Аватара пользователя
Сообщения: 15674
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Но в таком случае размер массива векторов не требуется.
Достаточно указания имен точек входа...
8)
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Пт июл 14, 2023 19:07:53

Сообщение Иван Михайлович »

А как тогда парсеру понять, что мы прочли последний адрес массива?
Там ведь какой принцип работы:

на каждый адрес массива
.dw R0_Array
.dw R1_Array
.dw R2_Array
.dw R3_Array

идёт массив данных и адреса
R0_Array:
.db "R0 ",0x00
R1_Array:
.db "R1 ",0x01
R2_Array:
.db "R2 ",0x02
R3_Array:
.db "R3 ",0x03

этот массив сравнивается побайтно с буфером в RAM (куда складывались данные из USART) и если он совпал, то номер элемента из массива адресов сохраняется куда-то для последующей работы. По этому алгоритму нужно знать, сколько адресов в массиве, чтобы не улететь чёрт знает куда)
Окстись! Открой DataSheet и просветись!
Это не хвост, это антенна
Сообщения: 1492
Зарегистрирован: Ср июн 25, 2008 15:19:44

Сообщение Demiurg »

Иван Михайлович, вы забыли главный закон инженера. Обьект. Свойства объекта. А это определенный склад ума. Так что фора есть.

Я давно уже на асме толком не писал. Лет 10. Так. Баловство. Я тогда на си перешёл. Окончательно и бесповоротно.

Мой способ тоже костыльный. Но. Ошибок не будет.
Вложения
size_2.jpg
(170.01 КБ) 60 скачиваний
size_1.jpg
(190.18 КБ) 67 скачиваний
Последний раз редактировалось Demiurg Ср июл 19, 2023 16:30:45, всего редактировалось 1 раз.
Контактная информация:
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Пт июл 14, 2023 19:07:53

Сообщение Иван Михайлович »

Способ очень похож, но более понятен, спасибо!
Окстись! Открой DataSheet и просветись!
Друг Кота
Аватара пользователя
Сообщения: 15674
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

А зачем все эти навороты?
Строку файла intel hex8 даже 51я на 1МГц успевает и развернуть и проверить и разместить во внешнем ОЗУ накопителе (при скорости обмена 9600). При том, что еще и эхо возвращает в окно терминала...
:roll:
Последний раз редактировалось BOB51 Ср июл 19, 2023 16:00:24, всего редактировалось 1 раз.
Это не хвост, это антенна
Сообщения: 1492
Зарегистрирован: Ср июн 25, 2008 15:19:44

Сообщение Demiurg »

Рад был помочь. От PC в вашем случае уходите. Чревато.
Контактная информация:
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Пт июл 14, 2023 19:07:53

Сообщение Иван Михайлович »

[uquote="BOB51",url="/forum/viewtopic.php?p=4448858#p4448858"]А зачем все эти навороты?[/uquote]

Разве это навороты? :))
Просто алгоритм, который мне в голову пришёл
Последний раз редактировалось Иван Михайлович Ср июл 19, 2023 16:07:23, всего редактировалось 1 раз.
Окстись! Открой DataSheet и просветись!
Это не хвост, это антенна
Сообщения: 1492
Зарегистрирован: Ср июн 25, 2008 15:19:44

Сообщение Demiurg »

Считаю тему закрытой. На асме определения размера массива способов больше нет. Одна из причин ухода на си.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 15674
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Если бы одна из таблиц (смещение) была в ОЗУ, а уж вектора в ПЗУ тогда еще оправдано.
Но обе в ПЗУ запихивать - это излишне.
8)
Но то уже "отклонение от темы".
потопаю дрематки.
:sleep:
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Пт июл 14, 2023 19:07:53

Сообщение Иван Михайлович »

[uquote="BOB51",url="/forum/viewtopic.php?p=4448868#p4448868"]Если бы одна из таблиц (смещение) была в ОЗУ, а уж вектора в ПЗУ тогда еще оправдано.
Но обе в ПЗУ запихивать - это излишне.
8)[/uquote]
Я не очень понял, это как?
Окстись! Открой DataSheet и просветись!
Это не хвост, это антенна
Сообщения: 1492
Зарегистрирован: Ср июн 25, 2008 15:19:44

Сообщение Demiurg »

Иван Михайлович, Что то ваши способы мне не нравятся. Если будут в дальнейшем вопросы, затруднения. Пишите в личку. Либо подробнейше поясняйте ваши мотивы.

И я вас не сразу понял. Почему. Зачем. А главное, на куа так через (_._).

Я делал нечто подобное. Вынос состояния регистров, ячеек памяти МК. Периферии МК. Состояние регистров периферийных модулей. Ртк, АЦП и так далее. И делал это по другому.

Добавлено after 3 minutes 4 seconds:
1. В дефайнах компилятора все регистры МК уже как то обозначены и пронумерованы.
2. Отсюда. Вы делаете лишнюю работу по нумерации регистров и это чревато ошибками при переходе на другие МК. Задача инженера ИСКЛЮЧИТЬ челоческий фактор и ошибки ещё даже на этапе помыслов.

Понимаете?
Контактная информация:
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Пт июл 14, 2023 19:07:53

Сообщение Иван Михайлович »

[uquote="Demiurg",url="/forum/viewtopic.php?p=4448875#p4448875"]1. В дефайнах компилятора все регистры МК уже как то обозначены и пронумерованы.
2. Отсюда. Вы делаете лишнюю работу по нумерации регистров и это чревато ошибками при переходе на другие МК. Задача инженера ИСКЛЮЧИТЬ челоческий фактор и ошибки ещё даже на этапе помыслов.

Понимаете?[/uquote]
Понимаю, пронумерованы они не просто так. Я привёл лишь примеры массивов первых регистров (хотя в программе они расписаны вплоть до UDR0), но далеко не все регистры пронумерованы последовательно, некоторые адреса в принципе могут быть зарезервированы.
Переход на другие мк и чреватость ошибок осознаю, я уже писал, что это тема выходного дня. Я художник, я видел так :))
Окстись! Открой DataSheet и просветись!
Это не хвост, это антенна
Сообщения: 1492
Зарегистрирован: Ср июн 25, 2008 15:19:44

Сообщение Demiurg »

Модераторы. Просьба оторвать уши Мартину. За то что влез со своими сапогами из навоза в мой рейтинг. Я вас давно просил. Отключите к едреней фене у меня функцию кармы и рейтинга. Мне это не интересно. Зато любая сволочь рада при своей неправоте нагадить мне в рейтинг и в карму.

Добавлено after 27 minutes 46 seconds:
Про художника не нужно. Если у вас нетрадиционные взгляды (не глумление! я сказал как есть) на вещи и они приносят результат, это только приветствуется. Но привносение хаоса в инженерные вещи не приветствуется.
Контактная информация:
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Пт июл 14, 2023 19:07:53

Сообщение Иван Михайлович »

[uquote="Demiurg",url="/forum/viewtopic.php?p=4448884#p4448884"]нетрадиционные взгляды[/uquote]
Я бы назвал их не стандартными
Окстись! Открой DataSheet и просветись!
Ответить

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