Ассемблер не СИ и не какой другой "более высокоуровневый" язык - здесь не так легко формулы высшей математики применять - надо до уровня примитива "единичек-ноликов" опускаться или спецалгоритмы жестко привязанные к конкретной задачке применять. Особо ежли имеем дело с ограниченными ресурсами МК в отношении объемов памяти.
может пригодится в примерах Алгоритм Билдера есть библиотека Геннадия Кабардина. Cодержит: - пример реализации алгоритмов вычисления натурального логарифма http://algrom.net/lib-r.html
Цитата:
Состав пакета: 1) Каталог «Stack_machine» содержит файлы с модулями, обеспечивающим работу с вещественными числами в среде стековой машины, и программу «fish.alp», в которой показан пример реализаций функций Ln и Exp. 2) Файл «описание_Stack_machine.doc» содержит описание функций для работы с вещественными числами и в среде стековой машины. 3) Каталог «Ln_Exp» модель реализации функций Ln и Exp в Delphi, которая переносится в программу «fish.alp». 4) Файл « Из Википедии.doc» содержит алгоритм нахождения Ln для любого целого положительного числа. 5) Программа «Test3Float.exe» позволяет преобразовать вещественное число из шестнадцатеричного представления в десятичное.
А почему логарифм не имеет смысла для целых чисел?
Да потому что и для целых чисел логарифм будет вещественным. Точнее, не будет никаким, потому что если, к примеру, в Дельфи попытаемся вычислить ln(n), где n - целое, то компилятор выдаст ошибку - несоответствие типов. Или же автоматически приведет тип int к extended. Ну нет в библиотеке логарифмов от целых. Например, log2 (7) - сколько будет ? А log2 (7.0) - пожалуйста. Ну а "масштабирование" для других оснований - это в чистом виде плавающая арифметика.
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пн май 15, 2017 09:42:44
Встал на лапы
Карма: 3
Рейтинг сообщений: 7
Зарегистрирован: Чт сен 10, 2015 06:59:03 Сообщений: 106 Откуда: Гродно, BY
Рейтинг сообщения:0
Согласен, неверно выразился. Имел ввиду число с фиксированной точкой типа 1.15 в диапазоне от 1 до 2 (почти), результат для LOG2 в диапазоне от 0 до 1.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Опять же непонятен формат представления аргумента и результата. Покажи на паре примеров - что на входе и что хочется на выходе. Чувствуется, что число разных значений будет небольшим и сведется к кратенькой таблице, без всяких алгоритмов и п/п . Какая точность нужна? Хотя раз речь о 2 байтах - какая уж там точность... И результат не от 0, а от 0,20163 . Для дела надо или для баловства (зачета) ?
Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пн май 15, 2017 12:24:38
Встал на лапы
Карма: 3
Рейтинг сообщений: 7
Зарегистрирован: Чт сен 10, 2015 06:59:03 Сообщений: 106 Откуда: Гродно, BY
Рейтинг сообщения:0
Аргумент от $8000 до $FFFF, на выходе логарифм. Доработка милливольтметра для непосредственного отсчета в дБ. Кратенькая таблица на получится, а после последнего зачета прошло более 40 лет.
Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пн май 15, 2017 13:29:23
Собутыльник Кота
Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04 Сообщений: 2694 Откуда: г. Чайковский
Рейтинг сообщения:0 Медали: 1
Есть такая наука под названием Вычислительные методы. Сложные математические операции заменяются более простыми формулами. С помощью итераций приближаешься к ответу, чем их больше, тем точнее ответ. Наверняка там и для логарифма есть.
_________________ Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Какая точность нужна? Хотя раз речь о 2 байтах - какая уж там точность.
Ежели писать на нормальном макроассемблере, думаю, без труда получите требуемую точность. Вот пример. Логарифм вызывается одной командой. Аргумент и результат логарифма - двухбайтные переменные Точность - 0,5 %, диапазон - в 64 раза (от 1024 до 64000 с копейками). Думаю, без проблем можно получить и большую точность, скажем, 0,1 %, только нужен доступ к соответствующей расчётной программе. Думаю, в основном, ответы по теме логарифма не связаны с профессионалами, пишущими на макроассемблере.
Давно такого потока сознания на форуме не наблюдал... Особенно впечатлило :
Цитата:
только нужен доступ к соответствующей расчётной программе.
Так вроде ТС и ищет эту "соответствующую расчётную программу" Или:
Цитата:
Логарифм вызывается одной командой.
я даже подозреваю, эта команда CALL - вызов соответствующей подпрограммы. Вот и выдал бы человек, учитывая его космических высот квалификацию, текст проги - на посрамление нам, неразумным. trofim2 - $8000 - это 1, $FFFF - это 2 ? Логарифм $0000 ... $FFFF - это 0..1 ? Согласен с Z_h_e : таблица на несколько опорных точек, в промежутках - апроксимация. И насколько я понял, тут нужен не логарифм, а антилогарифм: для заданного отсчета в дБ ищем точку, куда его поместить на линейной шкале.
_________________
Последний раз редактировалось Jack_A Вт май 16, 2017 09:08:08, всего редактировалось 1 раз.
Что-то не могу понять - какого МК это ассемблер и что он делает в теме про AVR?
Цитата:
Логарифм получил с достаточной, для меня, точностью.
Кстати, точность -- по заявлению авторов -- или алгоритм откомпилирован и проверен в симуляторе, подтвердив заявленную точность ? Ну, успехов, земляк Прибор с цифровым отсчетом ? Ну тогда точно нужен логарифм, а не анти- . Признаю. К слову: код оформлен ужасно, точнее, никак не оформлен, потому читать его захочет только очень мазохист.
Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вт май 16, 2017 16:26:05
Встал на лапы
Карма: 3
Рейтинг сообщений: 7
Зарегистрирован: Чт сен 10, 2015 06:59:03 Сообщений: 106 Откуда: Гродно, BY
Рейтинг сообщения:0
В макросах pushw и popw поменять порядок, сохранять в стеке сначала младший, потом старший. Это позволяет сохраняя регистровую пару с адресом, по ret выходить в нужную точку.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 49
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения