Например TDA7294

Форум РадиоКот • Просмотр темы - Ассемблер (ASM) для AVR в вопросах и ответах
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пн дек 01, 2025 01:38:33

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 7956 ]     ... , , , 380, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт янв 18, 2024 17:59:05 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1493
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15277
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Ну что же Вы такой вредный?
Допустим я сделал какое-то специфическое размещение данных в памяти, скомпилировал исходник и определил, что нужная мне ячейка имеет адрес 0x0120.
Но по каким-то причинам (схемотехнические хитрости - как та же внешняя память программ/данных или еще чего поизвратнее) поручить компилятору автоматическое вычисление этого адреса невозможно.
Вот тогда я и буду использовать
.EQU name = 0x0120
для доступа к той ячейке.
Довольно типовое решение к примеру в моей котуинке (биос + подгружаемые во внешнюю совмеенную память программ/данных целевых программ устройства)...
8)


Последний раз редактировалось BOB51 Чт янв 18, 2024 19:46:42, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт янв 18, 2024 18:37:23 
Потрогал лапой паяльник

Зарегистрирован: Пн окт 26, 2020 08:37:51
Сообщений: 302
Откуда: г.Волгоград
Рейтинг сообщения: 0
Ух уж эти перепалки "Друзей Кота" про длину своих "хвостов". Почище Санта-Барбары.

_________________
ФУОЗ на платформе Ардуино: viewtopic.php?p=4366626#p4366626
ВК - "ФУОЗ на микроконтроллере Atmega328P (МПСЗ)"


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт янв 18, 2024 18:50:28 
Держит паяльник хвостом

Карма: -2
Рейтинг сообщений: 35
Зарегистрирован: Пн сен 10, 2018 19:16:28
Сообщений: 923
Рейтинг сообщения: 0
Человеку присуща деликатность, критикуешь других, критикуй себя, фифти-фифти. Сначала признайся в собственной глупости, а потом других дураками называй! На каждого мудреца довольно простоты.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт янв 18, 2024 21:07:01 
Друг Кота
Аватар пользователя

Карма: 139
Рейтинг сообщений: 2918
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 24587
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
Ну что же Вы такой вредный?
Допустим я сделал какое-то специфическое размещение данных в памяти, скомпилировал исходник и определил, что нужная мне ячейка имеет адрес 0x0120.
8)

Для этого, внезапно, есть .org
Это специально созданный гвоздь для прибивания адреса.
И вы это знаете не хуже меня.
Кстати, корректное резервирование памяти позволяет любой АСМ код использовать вместе с Си.
В отличии от...


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пн янв 22, 2024 11:31:33 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 235
Зарегистрирован: Пт янв 29, 2010 10:27:40
Сообщений: 3863
Откуда: Москва
Рейтинг сообщения: 0
Ну вод представьте, есть код:
Спойлер
Код:
   .equ   TX_BUFFER   =0x0100
   .equ   RX_BUFFER   =0x0120
   .equ   TX_PTR      =0x0122
   .equ   RX_PTR      =0x0124
   ..........
   .equ   VAR123412151   =0x1234

или
Спойлер
Код:
   .equ   TX_BUFFER_SIZE   =32
   .equ   RX_BUFFER_SIZE   =32
   .equ   PTR      =2
   .dseg
TX_BUFFER:   .byte   TX_BUFFER_SIZE
RX_BUFFER:   .byte   RX_BUFFER_SIZE
TX_PTR:      .byte   PTR
RX_PTR:      .byte   PTR
.........
VAR123412151:   .byte   1

И тут я решил изменить размер буфера передачи, на один байт... По-моему нижний вариант просто удобнее.
Ну да, я не знаю какой по факту адрес у конкретной переменной, пока в .map или в .lst не посмотрю, но оно не часто и нужно.
ИМХО для каждой директивы свое применение.

_________________
Неправильно собранная из неисправных деталей схема нуждается в отладке и сразу не работает... (С)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пн янв 22, 2024 11:59:07 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Чт июн 17, 2010 07:40:31
Сообщений: 23
Откуда: Россия
Рейтинг сообщения: 0
Сдается мнение, что критикой занимаются пользователи Си.
Я полностью согласен со Старичком, т.к. мы с ним активные Ассемблерщики. А в Ассемблере контроль размера буфера переменных лежит исключительно на программисте, как и расположение их в памяти МК. Тем более при пошаговой отладке знать точное распределение памяти (RAM, EEPROM, Flash) крайне необходимо.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пн янв 22, 2024 12:29:52 
Друг Кота
Аватар пользователя

Карма: 139
Рейтинг сообщений: 2918
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 24587
Откуда: Московская область, Фрязино
Рейтинг сообщения: 2
Сдается мнение, что критикой занимаются пользователи Си.

Мнение НЕ верное. Я занимаюсь критикой, но на Си из полусотни проектов для 8 бит (те, что в серийных изделиях - хоббийные не в счет) написан лишь один. Но поскольку я пишу и на Си (это проекты для АРМов), то у меня есть вполне определенный взгляд на написание кода вообще - независимо от языка.
А в Ассемблере контроль размера буфера переменных лежит исключительно на программисте, как и расположение их в памяти МК.

И как это противоречит использованию .byte? Вы очевидно не понимаете, что никакого "принудительного" размещения в ассемблере нет НИ ПРИ КАКИХ синтаксических оборотах. Просто принципиально нет.
Тем более при пошаговой отладке знать точное распределение памяти (RAM, EEPROM, Flash) крайне необходимо.

И что? Именно директива .byte позволяет получить ВИДИМОСТЬ переменных ПО ИМЕНИ. А адрес и так всегда указан рядом с именем.
Такшта вы просто пытаетесь критиковать "вкус устриц", ни разу их не пробуя... И это действительно факт. Железобетонный.

Добавлено after 6 minutes 40 seconds:
Ну да, я не знаю какой по факту адрес у конкретной переменной, пока в .map или в .lst не посмотрю, но оно не часто и нужно.

С чего бы вы не знаете? И смотреть в map или lst нет никакой необходимости.
В окне Watch адрес рядом с именем обозначен. В тексте кода имя переменной является ее адресом, поэтому и тут нет необходимости обращаться к численному значению.
Ну и достаточно просто обозначить через org начало списка byte.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пн янв 22, 2024 14:20:24 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 235
Зарегистрирован: Пт янв 29, 2010 10:27:40
Сообщений: 3863
Откуда: Москва
Рейтинг сообщения: 0
Gennadiy, а зачем контролировать размещение в памяти переменных, вручную задавая адреса, если среда разработки (в данном случае AVR студия) сама позволяет их расставлять? Я же привел выше пример. Что вы будете делать, если в начале адресов переменных придется изменять их размер или количество? Все следующие адреса вручную пересчитывать и переписывать?
И это не только вопрос удобства. Я (да все, кто более менее большие программы пишет) весь код делю на модули, UART - отдельный asm-файл, SPI - отдельный файл, работа с каким-нибудь дисплеем - отдельный файл, так и к ним еще inc файлы. Например UART.inc с константами для определения/вычисления скорости, размерами буферов, кодами команд, и там же - выделяем области памяти в dseg. И не надо среди всего кода искать то что относится именно к UART. И эту пару модулей, можно в другом проекте использовать с минимальными переделками, не боясь что области памяти друг на друга налезут, т.к. все переменные на этапе компиляции сами в нужное место встанут, в зависимости от того, где .inc в тексте основной программы вписать!
А в случае использования для резервирования .equ? В одном модуле определил адрес массива в 200 байт, а в другом можно случайно одну переменную для какого-нибудь счетчика в середине этого массива определить, и здравствуйте глюки...
Ни кто не запрещает equ для переменных, ну например в целях той-же отладки какой-либо определенной переменной, ну или если нужна какая-либо хитрость, выравнивание, чтобы буфер или массив начинался с адреса хх00, но в 99% случаев этого не нужно.

КРАМ, я отладкой занимаюсь либо протеусе (пока железка не готова), либо в железке, так вот протеус со списком watch из студии подружить не получается, там приходится адреса вручную вбивать :dont_know:

_________________
Неправильно собранная из неисправных деталей схема нуждается в отладке и сразу не работает... (С)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пн янв 22, 2024 14:49:35 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Чт июн 17, 2010 07:40:31
Сообщений: 23
Откуда: Россия
Рейтинг сообщения: 0
Можно взглянуть на пример использования (запись/чтение/модификация) переменной, созданной с помощью директивы .byte, в Ассме? И да, у меня тоже есть большие проекты критичные ко времени исполнения (real-time), содержащие до 10 массивов, 206 (на данный момент) переменных и флагов различной размерности. Я не представляю, как во всем этом можно было бы ориентироваться (при пошаговой отладке), не пригвоздив каждую к конкретному месту, полагаясь только на среду разработки.
Возможно Ваши примеры направят меня на путь истинный. Без подколов и шуток, покажите преимущество .byte, пожалуйста.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пн янв 22, 2024 15:37:37 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 235
Зарегистрирован: Пт янв 29, 2010 10:27:40
Сообщений: 3863
Откуда: Москва
Рейтинг сообщения: 0
Чтение/запись/модификация будет выглядеть точно также, можете просто переписать весь код определения переменных с .equ на .byte а все что в .cseg - не трогать, оно скомпилируется без ошибок!
Что для .equ ИМЯ=АДРЕС, что для ИМЯ: .byte РАЗМЕР, и там и там компилятор генерирует пару ИМЯ-АДРЕС, только в первом случае адрес задает программист (а он может ошибаться), а во втором его вычисляет компилятор автоматически.

_________________
Неправильно собранная из неисправных деталей схема нуждается в отладке и сразу не работает... (С)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пн янв 22, 2024 16:02:26 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Чт июн 17, 2010 07:40:31
Сообщений: 23
Откуда: Россия
Рейтинг сообщения: 0
Значит, есть желание контролировать память - .equ, нет желания париться с этим вопросом (пусть компилятор сам решает) - .byte. Так? Спасибо.
Тогда в чем весь сыр-бор, устроенный тут? Ведь обработка переменной, длиной отличной от 8 бит, все-равно ляжет на плечи программиста.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пн янв 22, 2024 21:36:39 
Вымогатель припоя
Аватар пользователя

Карма: 10
Рейтинг сообщений: 171
Зарегистрирован: Ср июн 29, 2022 16:25:45
Сообщений: 523
Рейтинг сообщения: 1
Gennadiy, Перечислите случаи, когда вам нужно было "прибивать" переменную гвоздями к конкретному месту в ОЗУ?
Вот когда переменная должна лежать только в этом месте и ни в каком другом?
equ именно это и делает. Но тогда распределение переменных в ОЗУ становится вашей головной болью.
Переносимость кода резко падает. Поскольку в других проектах нужно заново пересчитывать расположение переменных в ОЗУ.
И зачем?
Есть правильный инструмент, поддерживаемый компиляторами и отладчиками. но нужно придумывать что то свое.
Директива equ говорит компилятору, где должна быть переменная.
А директива byte - сколько занимает ваша переменная.
И к той и к другой можно обращаться одинаково - по имени.
Но в случае изменений в проекте, когда надо буферу размерчик добавить, или ввести новую переменную - придется руками пересчитать все equ, которые лежат после новой переменной или обновленного буфера.
В случае byte - компилятор сам подвинет все прозрачно для программы.... И в 99.8% случаев это никак не повлияет на программу.
Остаются редкие случаи, когда на область ОЗУ проецируется какая то периферия или внешнее ОЗУ - там да, нужно явно указать, откуда оно начинается.
Или когда буфер должен начинаться с какого то кратного адреса, что б указатель легче обсчитывать ... Но это блин , настолько редкие случаи....
Откройте любой учебник по асму, прочтите, как резервировать ОЗУ - и радуйтесь жизни :)

_________________
Белая и Пушистая


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пн янв 22, 2024 21:40:20 
Друг Кота
Аватар пользователя

Карма: 139
Рейтинг сообщений: 2918
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 24587
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
Значит, есть желание контролировать память - .equ, нет желания париться с этим вопросом (пусть компилятор сам решает) - .byte. Так? .

Поток сознания.
Компилятор ничего не решает. После привязки через org адреса идут по списку строго последовательно.
Так что по сути программирования никакой разницы нет.
Если не считать того, о чем я сказал ранее.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пн янв 22, 2024 21:59:15 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Чт июн 17, 2010 07:40:31
Сообщений: 23
Откуда: Россия
Рейтинг сообщения: 0
Согласен с Вами, по сути программирования никакой разницы нет. В итоге имеем имя к которому обращаемся в программе. Почему прибиваю? Да потому что в отладчике мне удобнее ориентироваться в данных, которые именно я разложил "по полочкам", а не компилятор.
По Вашим словам "Именно директива .byte позволяет получить ВИДИМОСТЬ переменных ПО ИМЕНИ. А адрес и так всегда указан рядом с именем." Вопрос. Директива .equ
не позволяет сделать то же самое, заменяя имя переменной ее адресом, указанным в листинге? Немного возни с порядком, зато полный контроль за процессом.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пн янв 22, 2024 22:27:49 
Вымогатель припоя
Аватар пользователя

Карма: 10
Рейтинг сообщений: 171
Зарегистрирован: Ср июн 29, 2022 16:25:45
Сообщений: 523
Рейтинг сообщения: 0
Gennadiy, в нормальном отладчике как раз наоборот. Переменные через .byte видны как переменные и их не нужно искать в простыне содержимого памяти. Ну да дело ваше. Кому и *** невеста.

_________________
Белая и Пушистая


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт фев 08, 2024 12:32:43 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2135
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18436
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Купите дракона... Сыт голодного не разумеет

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пт фев 23, 2024 11:53:15 
Модератор
Аватар пользователя

Карма: 153
Рейтинг сообщений: 2926
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 18881
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 5
Медали: 1
Лучший человек Форума 2017 (1)
что нашел на последних страницах перенес в новую тему "Вопросы по отладке".
более ранний базар про отладку выискивать не стал.

_________________
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Сб июн 08, 2024 16:14:03 
Друг Кота
Аватар пользователя

Карма: 59
Рейтинг сообщений: 1572
Зарегистрирован: Вт окт 22, 2013 04:37:23
Сообщений: 3410
Откуда: Казань
Рейтинг сообщения: 0
Если боитесь замучиться, зачем лезть в ассемблер?

_________________
Платы для HLDI - установки лазерной засветки фоторезиста.
Фоторезисты Ordyl Alpha 350 и AM 140.
Жидкое олово для лужения плат (видео) - самое лучшее и только у меня.
Паяльная маска XV501T-4 и KSM-S6189 (5 цветов).
Заказ печатных плат - pcbsmac@gmail.com


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пн июн 10, 2024 08:27:17 
Открыл глаза
Аватар пользователя

Зарегистрирован: Сб дек 01, 2007 12:24:20
Сообщений: 58
Рейтинг сообщения: 0
Микроконтроллер at90s2313 не имеет команды LPM Rd, Z+
Вопрос чем заменить. Подскажите.

_________________
Ну что, ремонтировать будем или пусть работает?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пн июн 10, 2024 09:06:22 
Встал на лапы

Зарегистрирован: Ср дек 25, 2019 21:17:31
Сообщений: 99
Откуда: Саратов
Рейтинг сообщения: 1
Микроконтроллер at90s2313 не имеет команды LPM Rd, Z+
Вопрос чем заменить. Подскажите.

У меня симулятор такую конструкцию проглотил:
lpm ;
//mov (куда надо), R0 ;
ld r16, z+ ; в любой свободный регистр
Без проблем читает с конца флеша.
Как в реальном мк будет - хз, нет такого в наличии..


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 7956 ]     ... , , , 380, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 37


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y