Зарегистрирован: Вт май 05, 2009 10:43:42 Сообщений: 1087 Откуда: Россия
Рейтинг сообщения:0
Приветствую всех! Нужна помощь тех, кто знает как работать с этими библиотеками. Возникла задача - считать синусы и косинусы, если использовать библиотеку math.h и функции cosf sinf, то без оптимизации кода по скорости на каждое вычисление синуса и косинуса требуется 240 тактов процессора, если с оптимизацией, то 160. Хочу быстрее Вернее надо.
Среда IAR 6.5
Посоветовали пользоваться библиотекой arm_math, но для этого надо подключить файлы arm_math.h system_ARMCM4.c Подключил. В результате при компиляции вываливается ошибка Fatal Error[Pe1696]: cannot open source file "ARMCM4.h" D:\ARM\CortexM4F\CortexM4_TestBoard\inc\Sys\system_ARMCM4.c 25
Копался в поисковиках очень долго, единственное вменяемое viewtopic.php?f=59&t=105037, "задефайнил" ARM_MATH_CM4 не помогло.
В приложении сам проект во всеми используемыми файлами
Зарегистрирован: Вт май 05, 2009 10:43:42 Сообщений: 1087 Откуда: Россия
Рейтинг сообщения:0
Спасибо! Все заработало. Выиграл еще 10 тактов стало 150 Думаю, быстрее уже не выйдет, к сожалению. Но это уже кудал лучше чем на ядре без FPU, где вычисления были в 5!!! раз медленнее.
Cat, собственно все есть в справке на CMSIS , конкретно CMSIS DSP Software Library .
Советую также обновить IAR и CMSIS , первый знамо где лежит второе качается с сайта ARM совершенно бесплатно . Ну и по организации проекта - хэдеры нет нужды подключать к проекту , достаточно прописать пути в препроцессоре и включить их в исходнике.
Ну и SPL ... Не стоит она того чтоб тратить на нее свое время...
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
int32_t sin_table[256]; //0xFFFF0000 соответствует -1, 0x0000FFFF соотв. +1
void InitSinTab(void) // тут прошу прощения, с нецелочисленной математикой на си не занимался, так что инициализация не скомпелится, но смысл должен быть понятен { for (int i=0;i<256;i++) sin_table[i] = 65535*sin(i*2*pi/256); } // а тут идет чисто целочисленная математика int32_t my_sin (int32_t A) // аргумент A=65536 соответствует 2пи, ноль есть ноль. Очень удобно { // приводить к условиям 0<A<2пи и А>=0 не надо! int32_t s1 = sin_table[ (A>>8) & 0xFF]; int32_t s2 = sin_table[ ((A+1)>>8) & 0xFF]; return s1+((A & 0xFF)*(s2-s1))/256; }
PS/ Если кому интересно - могу провести анализ погрешности.
Зарегистрирован: Вт май 05, 2009 10:43:42 Сообщений: 1087 Откуда: Россия
Рейтинг сообщения:0
Задача, для которой нужна такая точность - делаю свой автономный контроллер ЧПУ, готовые варианты не устраивают либо по цене, либо по реализации. Чего-то среднего купить нельзя. Таблица синусов не влезет ни в какую память, когда надо отрисовать дугу радиусом скажем метр, и длиной пару метров при разрешении 0,01 мм.
Зарегистрирован: Вт май 05, 2009 10:43:42 Сообщений: 1087 Откуда: Россия
Рейтинг сообщения:0
es131245 писал(а):
А задача не позволяет к компу подключить?
Как раз иду по пути избавления от расчетов и управления на компьютере, дабы избавиться от глюков и тормозов винды. С компьютера по LAN будет отправляться G-код, производиться настройка и мониторинг работы. Все. Windows, Linux не являются промышленными системами реального времени. К тому же можно быть уверенным в ПО и железе лишь тогда, когда сам его проектируешь.
Задрали тупняки и сбои при обсчете и отправке по USB криволинейных траекторий. Последняя капля наступила, когда виндовое приложение (комплект от Planet CNC) глюкануло, станок включил шпиндель с очень острой фрезой на максимальную мощность и отправил механику по произвольному вектору на предельной скорости , еле успел руку убрать и дернуть рубильник, а то бы без руки уже ходил.
Все это происходило при остановленном станке, менял заготовку. Теперь я чет очкую
Задача, для которой нужна такая точность - делаю свой автономный контроллер ЧПУ, готовые варианты не устраивают либо по цене, либо по реализации.
А советские старые ЧПУ и нюхом не слыхивали о фпу и имели точность повыше.
_________________ Разработал: -BLDC -ФУОЗ/МПСЗ -SMART BMS -ECU/EDC на STM32F4(43%)+CPLD(57%) -Моноинжектор на ATSAMD20G16 -контроллер эффектов для RGB LED ленты -умные часы/обратный счет/секундомер -устройство измерения емкости АКБ
А советские старые ЧПУ и нюхом не слыхивали о фпу и имели точность повыше.
аналоговые, прямоточные, оптико-лазерные ЭВМ на 580ик80? Если бы ТЕ программисты работали сегодня, то местная школота этого сайта была бы на помойке и побиралась бы среди пивных ларьков.
кста, раньше для БПФ, тригонометрию высчитывали на компе (на фортране или С) и загружали в ПЗУ типа 573рф2 или рт, чтобы контроллер этой фигнёй не страдал, а перемножением занимался уже аппаратный умножитель типа 588вр2,3 и т.д. Т.е. перед работой процессор перегружал из ПЗУ коэффициенты синуса в статическую память (раньше на ЭСЛ к1500ру417 или подобное, потом на импортной кэш-статике типа 61256). А пока умножитель просчитывал результат, контроллер сортировал данные , т.к. порядок выходных данных в некоторых алгоритмах БПФ был сильно запутан, вот контроллер и занимался этой сортировкой одновременно, пока умножитель считает. Параллелизм.
Зарегистрирован: Вт май 05, 2009 10:43:42 Сообщений: 1087 Откуда: Россия
Рейтинг сообщения:0
Я раньше везде пихал МК, куда только можно, сейчас, когда количество знаний и опыта растет, стараюсь по максимуму делать автоматику аналоговой, предельно простой, или же беру ПЛИС. Видимо старею.
Я раньше везде пихал МК, куда только можно, сейчас, когда количество знаний и опыта растет, стараюсь по максимуму делать автоматику аналоговой, предельно простой, или же беру ПЛИС. Видимо старею.
ну тут рядом тема "яркость подсветки от освещённости" решается путём фотодиода, усилителя, ацп, софта, таблиц перекодировки, шим, ключа, светодиода (схему не видел, но наверняка на полевике с изолированным затвором, ибо современным "программистам" страшно паять биполярники, да и не умеют они их пользовать от слова "вабще"). А раньше? фото-диод, транзистор, лампочка
Зарегистрирован: Вт май 05, 2009 10:43:42 Сообщений: 1087 Откуда: Россия
Рейтинг сообщения:0
У светодиода далеко не линейная зависимость яркости от напряжения питания, я бы все же оставил шим, но сделал так - фотодиод+TL594+необходимая маленькая обвеска+подстроечник+ключ(если маломощный полевик серии IRLL с малой емкостью затвора, то без драйвера). Все. Встроенных ОУ ошибки более чем достаточно.
Только ТССС... не палите контору. Пусть занимаются секасом дальше.
У светодиода далеко не линейная зависимость яркости от напряжения питания
э кхм. ну как бы я вам не открою секрет, если скажу тоже самое про лампу накаливания Как известно, одни из лучших генераторов синуса - как раз "на лампочках". Как раз благодаря нелинейности. Так что баш на баш. Но светодиод - это же "хай тек"!!
Зарегистрирован: Вт май 05, 2009 10:43:42 Сообщений: 1087 Откуда: Россия
Рейтинг сообщения:0
Ну тут две беды - частота и надежность. Лампочка скоро перегорит Хотя может я просто не в теме и есть специальные вечные лампочки для таких применений. Как насчет частот выдаваемого синуса
П.С. Для меня этот способ генерации синуса - маленькое открытие. Это я все по старинке - таблица+ЦАП
Причём заметьте, высококачественного синуса, для измерений КНИ. Лампочки обычно брали СМН, сверхминиатюрные накаливания, вроде должен быть срок приличный. Частоты звуковые обычно, до 20 кГц. Интересно, что лампочки использовались в 2 разных случаях: 1. Для формирования синуса (лампочки с маленькой нитью). 2. Для АРУ, точнее для регулировки уровня выходного сигнала на разных частотах, так как для инерционных ламп с массивной нитью частота не имеет значения. Но в обоих случаях используется эффект нелинейности сопротивления.
Зарегистрирован: Вт май 05, 2009 10:43:42 Сообщений: 1087 Откуда: Россия
Рейтинг сообщения:0
Буду знать, спасибо. Хотя недавно доделал блок регулировки выходного тока на гальваническую установку, советскую, там два здоровых таких шкафа - один - трехфазный трансформатор с диодным мостом, второй - регулятор тока и напряжения на индуктивностях. Работает, скажем так, не очень, вроде регулирует, но стабильность и прочие параметры не на высоте, для капризных операций не подходит.
Пришлось второй шкафчик отправить на помойку, и делать маленький (по сравнению с ним) DC-DC преобразователь на 12 В 400А(частота преобразования 100 кГц). Современные технологии таки иногда рулят. Пока еще в боевом применении на максимальных токах не пробовали, но предварительные тесты показывают высочайшее качество выходного напряжения. Ни пульсаций тебе, + точно поддерживается заданный ток. Скоро будет запущено на проектную мощность.
регулировки выходного тока на гальваническую установку, советскую, там два здоровых таких шкафа - один - трехфазный трансформатор с диодным мостом, второй - регулятор тока и напряжения на индуктивностях.
ну всему своё время.
Cat писал(а):
Пришлось второй шкафчик отправить на помойку, и делать маленький (по сравнению с ним) DC-DC преобразователь на 12 В 400А(частота преобразования 100 кГц). Современные технологии таки иногда рулят. Скоро будет запущено на проектную мощность.
Охренеть. аккуратнее там. Чем моделировали? Я так понимаю, там главные потери - динамические на переключателях?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 37
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения