Например TDA7294

Форум РадиоКот • Просмотр темы - умножение 32 битных чисел со знаком написать на ассемблере.
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вс май 05, 2024 09:09:01

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


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



Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: умножение 32 битных чисел со знаком написать на ассемблере.
СообщениеДобавлено: Чт мар 05, 2020 11:32:20 
Нашел транзистор. Понюхал.

Зарегистрирован: Чт ноя 06, 2014 15:37:50
Сообщений: 182
Откуда: Кубинка, Московская обл.
Рейтинг сообщения: 0
Всем привет. пишу на алгоритм билдере (но это не принципиально сейчас).
Пишу программу для работы с датчиком температуры, давления и влажности BME280. Так вот, свалилась проблемка. Необходимо производить умножение с 32 битными числами да еще и со знаком. С обычным умножением справился, а вот со знаковым - затормозил... Обычное умножение реализовано на основе операций умножения описанных в апноуте AVR201. А вот со знаковым забуксовал. Может кто делал это на ассемблере? Контроллер атмега8, желательно использование аппаратного перемножителя, так как есть ограничение на время обработки...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: умножение 32 битных чисел со знаком написать на ассембле
СообщениеДобавлено: Чт мар 05, 2020 12:28:07 
Модератор
Аватар пользователя

Карма: 153
Рейтинг сообщений: 2809
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 18107
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
всё очень просто.
1. проверяешь старший бит числа на знак.
2. если число отрицательное ставишь флаг знака, иначе флаг знака сброшен.
3. находишь дополнение отрицательного числа до положительного числа.
4. умножаешь положительные числа.
5. смотришь флаг знака.
6. если флаг установлен, находишь дополнение результата умножения до отрицательного числа.

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: умножение 32 битных чисел со знаком написать на ассембле
СообщениеДобавлено: Чт мар 05, 2020 12:45:19 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
Может кто делал это на ассемблере?

Чен делал
http://elm-chan.org/cc_e.html
см. AVR assembler libraries->32bit x 32bit multiply(signed/unsigned)
не аппаратное - но там используется обычное умножение - можно свое подсунуть


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: умножение 32 битных чисел со знаком написать на ассембле
СообщениеДобавлено: Чт мар 05, 2020 12:50:07 
Нашел транзистор. Понюхал.

Зарегистрирован: Чт ноя 06, 2014 15:37:50
Сообщений: 182
Откуда: Кубинка, Московская обл.
Рейтинг сообщения: 0
спасибо, буду пробовать.


Вернуться наверх
 
Особенности хранения литиевых аккумуляторов и батареек

Потеря емкости аккумулятора напрямую зависит от условий хранения и эксплуатации. При неправильном хранении даже самый лучший литиевый источник тока с превосходными характеристиками может не оправдать ожиданий. Технология, основанная на рекомендациях таких известных производителей литиевых источников тока, как компании FANSO и EVE Energy, поможет организовать правильный процесс хранения батареек и аккумуляторов.

Подробнее>>
 Заголовок сообщения: Re: умножение 32 битных чисел со знаком написать на ассембле
СообщениеДобавлено: Чт мар 05, 2020 18:12:43 
Посмотрите, в архиве есть какие-то вычисления на АВ… может пригодятся.
Цитата автора (victor_b_k VRTP):
Цитата:
Кстати, у меня есть наработки по вычислениям с плавающей запятой в более подходящем для микроконтроллеров формате. При этом число занимает не четыре, а три байта. Точность представления чисел более пяти десятичных знаков. Правда из за сокращенного формата диапазон представляемых чисел составляет +/- 1000000 (примерно). Но в реальной жизни редко приходится оперировать большими числами при работе с реальным оборудованием, ведь обычно разрядность обрабатываемых величин (поступающих от разного рода датчиков) не превышает 16 разрядов. А уменьшение формата позволяет сэкономить память и сократить время вычислений.

Вложение:
demo.zip


Вернуться наверх
   
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: умножение 32 битных чисел со знаком написать на ассембле
СообщениеДобавлено: Чт мар 05, 2020 20:58:24 
Модератор
Аватар пользователя

Карма: 153
Рейтинг сообщений: 2809
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 18107
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
ох, любители плавающей запятой ...
плавающая запятая нужна тогда и только тогда, когда один и тот же параметр может изменяться от очень малой величины до очень большой величины.
господа, кто-нибудь реально в устройствах на МК видел такой огромный диапазон изменения чисел? например, от 0,000001 до 1000000?
лично я не видел никогда.
в том то и дело, что реальные числа - от АЦП, от датчиков и всё прочее - ВСЕГДА укладывают во вполне представимое целое число. чаще всего в 16 бит (два байта).
поэтому спрашивается - а зачем тут нужна плавающая точка?
даже, если нужны дробные числа, всегда можно их представить целым числом, а положение точки держать в уме, и выводить точку в нужном месте на экран.
а плавающая точка нужна только "малограмотным", которые не могут сообразить, что любое дробное число можно представить целым числом и точкой в нужной позиции.

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: умножение 32 битных чисел со знаком написать на ассембле
СообщениеДобавлено: Сб мар 07, 2020 10:23:41 
Друг Кота
Аватар пользователя

Карма: 62
Рейтинг сообщений: 837
Зарегистрирован: Вт апр 24, 2007 07:45:40
Сообщений: 5607
Откуда: Minsk
Рейтинг сообщения: 3
а плавающая точка нужна только "малограмотным", которые не могут сообразить, что любое дробное число можно представить целым числом и точкой в нужной позиции.

Как всякое слишком категоричное утверждение - оно в общем случае неверно. Не стану расписывать свои давние разработки, но приходилось делать не только "плавучку", но и массу функций: экспонента, корень, тригонометрические. И не ради понтов и выпендрёжа, а нужно было в реальном времени считать тепловую модель электродвигателя, защищая его, родимого, то ли по 8, то ли по 12 уставкам. "Возьми Си и не парься?" Так в этом МК не было даже сдвига вправо, какой там Си! Утаптывал, борясь за каждый байт. "Так кто виноват, что ты взял неправильный контроллер" - скажет тот, кто никогда не работал на заказчика-частника, у которого каждый цент на учёте. Попробуйте, вам понравится (вряд ли).
Но труды того стоили. Некоторые дивайсы исправно несут службу до сих пор, и это не мигание диодами в кубиках, а реальное производство, кующее рубли.
Хотя справедливости ради стоит согласиться, что в очень многих случаях без плавучки можно и нужно обойтись. Но подросло поколение АйрДуньщиков, очень далёких от понимания архитектуры МК и даже в далёком приближении понятия не имеющих об форматах данных.
Ну вот, началось старческое брюзжание :) Пойду глотну коньячку, если ещё осталось от днюхи

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: умножение 32 битных чисел со знаком написать на ассембле
СообщениеДобавлено: Сб мар 07, 2020 10:36:44 
Модератор
Аватар пользователя

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

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: умножение 32 битных чисел со знаком написать на ассембле
СообщениеДобавлено: Сб мар 07, 2020 10:42:20 
Друг Кота
Аватар пользователя

Карма: 62
Рейтинг сообщений: 837
Зарегистрирован: Вт апр 24, 2007 07:45:40
Сообщений: 5607
Откуда: Minsk
Рейтинг сообщения: 0
хотя, у Атмел для корня квадратного есть целочисленный алгоритм.

Это было бы прекрасно, если бы и остальные формулы в расчёте были в целых числах, а так что в ём проку? Я - не Атмел, но и у меня реализован алгоритм корня. И в части мантиссы - он совершенно целочисленный :)

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: умножение 32 битных чисел со знаком написать на ассембле
СообщениеДобавлено: Сб мар 07, 2020 11:19:10 
Модератор
Аватар пользователя

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

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: умножение 32 битных чисел со знаком написать на ассембле
СообщениеДобавлено: Сб мар 07, 2020 11:48:09 
Друг Кота
Аватар пользователя

Карма: 62
Рейтинг сообщений: 837
Зарегистрирован: Вт апр 24, 2007 07:45:40
Сообщений: 5607
Откуда: Minsk
Рейтинг сообщения: 1
Я шёл к цели кратчайшим путём, не заботясь о том, насколько "кошерны" с точки зрения ортодоксов мои решения. Например, плавучка у меня была 3-байтная: знак/порядок + 2 байта мантиссы, даже без скрытого разряда. Компромисс меж точностью и быстродействием. Точность устраивала, а микросекунды всегда были в дефиците. Real time, мать её...
Мы, мне кажется, уже пришли к консексусу относительно беспредметности спора "нужно-не нужно" без рассмотрения конкретного набора алгоритмов, параметров, значений.

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


Последний раз редактировалось Jack_A Сб мар 07, 2020 21:48:33, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: умножение 32 битных чисел со знаком написать на ассембле
СообщениеДобавлено: Сб мар 07, 2020 13:13:55 
Нашел транзистор. Понюхал.

Зарегистрирован: Чт ноя 06, 2014 15:37:50
Сообщений: 182
Откуда: Кубинка, Московская обл.
Рейтинг сообщения: 0
Спасибо за наводки, получилось, по крайней мере с калькулятором ответы совпадют :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: умножение 32 битных чисел со знаком написать на ассембле
СообщениеДобавлено: Сб мар 07, 2020 13:21:15 
Модератор
Аватар пользователя

Карма: 153
Рейтинг сообщений: 2809
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 18107
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
Jack_A писал(а):
Мы, мне кажется, уже пришли к консексусу ...
а некоторые депутаты достигали консенсуса по несколько раз за одно заседание ...

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


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

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


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

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


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

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


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