Например TDA7294

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

Текущее время: Вс сен 28, 2025 02:35:05

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


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



Начать новую тему Ответить на тему  [ Сообщений: 7956 ]     ... , , , 302, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Сб апр 15, 2017 14:48:25 
Друг Кота

Карма: 64
Рейтинг сообщений: 1015
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4349
Откуда: Ижевск
Рейтинг сообщения: 0
Alek Lem писал(а):
...
Это как раз и имелось ввиду, т.к. ещё не встречал архитектуры с порядком следования байт отличным от формата младший-старший. Например, код команды LPM Load Program Memory 0x95C8 в листинге видится как 0xC895.
СпойлерИзображение
Вложение:
LPM.png [18.91 KiB]
Скачиваний: 615
Директива .DB позволяет нарушить этот формат, в отличие от директивы .DW Можете попробовать.


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

Карма: 16
Рейтинг сообщений: 94
Зарегистрирован: Вс дек 28, 2014 18:35:34
Сообщений: 526
Откуда: Луганск
Рейтинг сообщения: 0
akl, спасибо.

Z_h_e писал(а):
Alek Lem писал(а):
Ведь адрес ROM умеет отсчитывать, на сколько я знаю, только счетчик команд (регистр адреса).
Счетчик команд ничего не считывает, он хранит адрес для выборки команд.
Я и не писал, что он что-то считывает...Он считает -- поэтому и "счетчик" :-)

Z_h_e писал(а):
Но это вопросы архитектуры камня, известные лишь разрабам и программиста в принципе волновать не должно.
Ок, не буду морочить голову. Теперь вопрос более прикладной. Командой .db заносится массив чисел, который в процессе работы программы, выгружается, например, в порты. Но с тем же успехом, я мог бы занести этот массив в ячейки ОЗУ (которые идут после адресов РОН и РВВ) и считывать массив оттуда.


Последний раз редактировалось Alek Lem Сб апр 15, 2017 14:53:46, всего редактировалось 1 раз.

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

Карма: 64
Рейтинг сообщений: 1015
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4349
Откуда: Ижевск
Рейтинг сообщения: 2
Зачем ОЗУ, предначенном для врЕменного хранения данных использовать для хранения констант.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Сб апр 15, 2017 14:57:02 
Вымогатель припоя
Аватар пользователя

Карма: 16
Рейтинг сообщений: 94
Зарегистрирован: Вс дек 28, 2014 18:35:34
Сообщений: 526
Откуда: Луганск
Рейтинг сообщения: 0
Ясно, для экономии ОЗУ и единообразия логики работы с данными. Просто я сперва решил, что косвенная адресация -- это необходимость, а оказалось, что для удобства.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Сб апр 15, 2017 15:08:04 
Встал на лапы

Карма: 3
Рейтинг сообщений: 7
Зарегистрирован: Чт сен 10, 2015 06:59:03
Сообщений: 106
Откуда: Гродно, BY
Рейтинг сообщения: 0
Из ОЗУ выборка быстрее


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

Карма: 64
Рейтинг сообщений: 1015
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4349
Откуда: Ижевск
Рейтинг сообщения: 0
Да, быстрее, но всю скорость съест загрузка.


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

Карма: 3
Рейтинг сообщений: 7
Зарегистрирован: Чт сен 10, 2015 06:59:03
Сообщений: 106
Откуда: Гродно, BY
Рейтинг сообщения: 0
Так и остальное надо оптимизировать.
Копейка - рубль бережет.


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

Карма: 96
Рейтинг сообщений: 1472
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15176
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Если речь о неизменных константах - предпочтение ПЗУ, если в процессе работы программы данные изменяются - предпочтение массиву в ОЗУ. При том, что в некоторых ситуациях размещение будет равноценным (просто прийдется использовать иные наборы команд для доступа и использования данных).
8)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Сб апр 15, 2017 16:15:51 
Встал на лапы

Карма: 3
Рейтинг сообщений: 7
Зарегистрирован: Чт сен 10, 2015 06:59:03
Сообщений: 106
Откуда: Гродно, BY
Рейтинг сообщения: 0
Здесь я полностью согласен, если не критично время выполнения.


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

Карма: 153
Рейтинг сообщений: 2925
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 18831
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
Alek Lem писал(а):
Я спрашивал, как именно происходит отсчет адреса в ROM побайтно командой plm ? Ведь адрес ROM умеет отсчитывать, на сколько я знаю, только счетчик команд (регистр адреса).
не надо путать счетчик команд и указатель адреса (в данном случае регистровую пару Z).
указатель адреса адресует побайтно.
тем более, что есть команды длиной больше 1 слова. поэтому счетчик команд считает команды, а не слова.

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


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

Карма: 29
Рейтинг сообщений: 651
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2708
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Starichok51 писал(а):
тем более, что есть команды длиной больше 1 слова. поэтому счетчик команд считает команды, а не слова.
Я не соглашусь с такой формулировкой. Организация памяти программ в AVR n*16. Я не видел подробной схемы организации памяти и шин AVR, но все указывает на то (по моему разумению) что шина данных для памяти программ 16 битная, возможность (физическая) чтения данных побайтно отсутствует. Считайте что ячейки памяти 16 битные. Записи побайтной тоже нет.

Т.е. счетчик команд адресует именно слова (а не считает команды) и не потому что нет команд однобайтных, а потому что ячейки памяти 16 битные. Изменение счетчика команд производит декодер команд.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Сб апр 15, 2017 20:16:46 
Модератор
Аватар пользователя

Карма: 153
Рейтинг сообщений: 2925
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 18831
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
Z_h_e писал(а):
возможность (физическая) чтения данных побайтно отсутствует.
присутствует.
меня не волнует, как команда lpm выбирает всего один байт из программной памяти. скорее всего, точно также, как из ОЗУ - побайтно, а не из слова.
а что нет записи в программную память - это всем известно.

да, счетчик команд выбирает слова. но сколько слов он выберет, зависит от длины команды. именно поэтому он считает КОМАНДЫ, а не слова.
и в отладчике ты НИКОГДА не сможешь сделать точку останова внутри двухсловной команды.

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


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

Карма: 29
Рейтинг сообщений: 651
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2708
Откуда: г. Чайковский
Рейтинг сообщения: 3
Медали: 1
Получил миской по аватаре (1)
Starichok51 писал(а):
присутствует.
меня не волнует, как команда lpm выбирает всего один байт из программной памяти. скорее всего, точно также, как из ОЗУ - побайтно, а не из слова.
То что программиста не должен волновать этот вопрос, я обозначал. В ДШ указано что организация памяти программ 16 битная. Равно как при 8ми битной организации, не читает ядро ниблами, так и тут не читает байтами. Кроме того, не кажется странным, что МК выбирает 16битную команду за один такт, а один байт данных читает аж за три? Точно также биториентированные команды не работают с битами по факту. Выборка байта из СОЗУ и модификация бита, запись байта обратно или Вы думаете для каждого бита есть свой адрес ? Это ж какая шина адреса должна быть?
Starichok51 писал(а):
да, счетчик команд выбирает слова. но сколько слов он выберет, зависит от длины команды. именно поэтому он считает КОМАНДЫ, а не слова.
Счетчик ничего не выбирает, это всего-лишь указаетель. Этим занимается декодер команд и значение программного счетчика тоже меняет декодер команд, в зависимости от команды и ее результата.
Starichok51 писал(а):
отладчике ты НИКОГДА не сможешь сделать точку останова внутри двухсловной команды
Конечно нельзя, первый раз вижу что такое можно даже обсуджать.
Starichok51 писал(а):
а что нет записи в программную память - это всем известно.
Есть, но только по словно, опять же из-за 16 битной организации флеш, перед этим стирая страницы.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


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

Карма: 96
Рейтинг сообщений: 1472
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15176
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Побайтовое чтение данных (не команд!!) для АВРок обычное дело.
Только вот... Всегда внимательно надо смотреть как на исходное содержимое указателя в Z, так и на применяемое смещение. В смысле когда непосредственно используем, а когда со смещением на один бит.
Вечное нервотрепство - НО...
ДАНЬ МК с ФИКСИРОВАННЫМ РАЗМЕРОМ КОМАНД.
Счетчик команд всегда кратен размеру команды, а доступ к данным (в основном) байту.
Разница при обращении к ПЗУ в табличном режиме заметна в случаях:
обращение к ПЗУ как к содержимому символьной строки данных (побайтовое считывание)
обращение к ПЗУ как к скоростному шифратору/дешифратору кода (побайтовое считывание)
обращение к ПЗУ как к таблице векторов (вычисляемый прерход) - пословное соответствие в случае, когда в таблице расставлены вектора (смещение вырабатывает программа) и побайтовое чтение, когда таблица содержит смещение к вектору (программа задает условие выбора смещения. том числе относительно текущего счетчика команд). Вот в последнем случае действительно мозготрепка и повышенное внимание к содержимому требуется - какой способ применить зависит от конкретики задачи.
:dont_know:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Ср апр 19, 2017 04:29:36 
Опытный кот
Аватар пользователя

Карма: 13
Рейтинг сообщений: 163
Зарегистрирован: Сб дек 22, 2012 08:17:42
Сообщений: 744
Откуда: Караганда, Казахстан
Рейтинг сообщения: 0
Вообще-то AVR-овцы конкретно лопухнулись с командами LPM. По-хорошему, надо было вместо одной LPM сделать две команды - что-то, вроде LPLB (загрузить младший байт из программной памяти) и LPHB (старший) и не морочить голову программистской общественности. Да, несколько сложнее организовать подпрограмму последовательного чтения вроде getch(), зато никаких проблем с адресами. Адрес в программной памяти был бы всегда словным, и никаких вопросов, включая и 128-К контроллеры.

_________________
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Ср апр 19, 2017 05:16:38 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 651
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2708
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
А по-моему было бы не удобно считывать некий массив данных разными командами. Возможно не хватает команды LPW (считать слово), но не вместо LPM, а плюсом.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Ср апр 19, 2017 05:53:02 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1472
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15176
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Это изначальный коммерческий "кусманчик сыра" в мышеловке (насчет "какова организация памяти") - все шустро смотрят на написанное в даташите количество килобайт...
И лишь после "прочтения с пристрастием" начинается понимание, что эта цифирь... "не совсем то"...
8)
Насчет команд LPM - все весьма удобно.
Кому чего добавить хочется - имеем макросы самодельные (как пожелаем назвать/матюкнуть - так и будет).
Это особенность архитектуры с минимальным набором команд (да и не только -макросы всюду имеются).
Гораздо хуже некоторая разница в функционале определения значения в Z между командами
LPM и IJMP/ICALL, также использующими Z в качестве указателя адреса.
Хотя... и это в принципе преодолимо...
:roll:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вс апр 30, 2017 19:22:24 
Это не хвост, это антенна

Карма: 4
Рейтинг сообщений: 139
Зарегистрирован: Ср июн 25, 2008 15:19:44
Сообщений: 1480
Рейтинг сообщения: 0
akl писал(а):
Директива .DB позволяет нарушить этот формат, в отличие от директивы .DW Можете попробовать.

Код:
//----------
#define tab_h(x) HIGH(x), LOW(x)
#define tab_l(x) LOW(x), HIGH(x)
//----------

Tab_Jmp_KBD_DRV:
.equ   MAX_FSM_KBD_DRV_STATES   = 5 // Êîëè÷åñòâî ñîñòîÿíèé àâòîìàòà.

.equ   _KEYS_INIT            = 0
.db      tab_h(Keys_Init)

.equ   _KEYS_NONE            = 1
.db      tab_h(Keys_None)

.equ   _KEYS_DOWN            = 2
.db      tab_h(Keys_Down)

.equ   _KEYS_WAIT_UP         = 3
.db      tab_h(Keys_Wait_Up)

.equ   _KEYS_UP            = 4
.db      tab_h(Keys_Up)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вс май 14, 2017 14:00:20 
Встал на лапы

Карма: 3
Рейтинг сообщений: 7
Зарегистрирован: Чт сен 10, 2015 06:59:03
Сообщений: 106
Откуда: Гродно, BY
Рейтинг сообщения: 0
Кто предложит расчет логарифма 16 бит на асме ?


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

Карма: 62
Рейтинг сообщений: 885
Зарегистрирован: Вт апр 24, 2007 07:45:40
Сообщений: 6122
Откуда: Minsk
Рейтинг сообщения: 0
Вопрос из серии "на деревню - дедушке" . Двоичный, десятичный, натуральный ? Логарифм имеет практический смысл для float арифметики, а какая float на 16 битах ?

_________________
Изображение


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

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


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

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


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

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


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