Перейти к содержанию
    

_pv

Свой
  • Постов

    4 410
  • Зарегистрирован

  • Посещение

  • Победитель дней

    18

Весь контент _pv


  1. tablecurve2d умел перебирать кучу разных функций для аппроксимации и потом выбирать по точности/вычислительной сложности
  2. для нескольких определённых частот ДПФ будет быстрее ФФТ, да и как раз на лету считается без буферизации вообще, в отличии от. И того же Гёрцеля можно попробовать скрестить с примитивным БИХ фильтром, чтобы он старые отсчёты "забывал" экспоненциально и просто на каждом новом отсчёте за нескольких умножений уточнять значение фазы за последние N милисекунд. сигнал узкополосный и вычислять весь пустой спектр через ффт, а не на 2-3 частотах около единственного максимума, чтобы найти фазу смысла особого нет.
  3. для дальномера частоту ТС скорее всего сам себе и генерирует, так что должна быть известна. при неизвестной частоте МНК делать как-то совсем не проще, а частота если известна, то вроде как вообще без разницы - результат будет одинаковый, но Гёрцель тригонометрию всю через одно единственное умножение считает. а если частота известна "примерно", можно тем же Гёрцелем несколько точек вокруг посчитать, через них какую-нибудь параболу провести, найти где у неё максимум на самом деле и на этой частоте уже считать фазу.
  4. встроенных АЦП для 10кГц и 30дБ вроде как должно хватить с запасом. при известной частоте косинусное преобразование делается парой целочисленных умножений на отсчёт. см. "Алгоритм Гёрцеля" с компараторами ухудшение точности от уровня шума зависит, так как весь период превращается в одну единственную точку (перехода через 0), и соответственно все шумы делённые на производную сигнала прямиком попадают как ошибка фазы для всего периода. если же фаза считается умножением на синус/косинус через ДПФ, то шумы заметно давятся им как узкополосным фильтром и на фазу влияния оказывают меньше.
  5. bne ещё не за 1 такт выполняется, а iar этот пустой цикл без наличия volatile выкинет целиком скорее всего, при хоть какой-то включенной оптимизации.
  6. это при правильно настроенных, PRFTEN по умолчанию выключен у STM32G070. в ram перенести этот десяток nopов всё равно надёжней.
  7. Поправить как нить можно в данном контексте? собственно второе и лечит первое, вызванное тем что МК на большой частоте не успевает читать флэш что даже кэш на несколько слов не помогает и соответственно добавляет паузы.
  8. flash wait states, исполнение из ram
  9. при 4 ветках видимо "дешевле" развернуть в сравнения, если сделать switch побольше и ещё и оптимизацию по скорости включить вроде должен нормально сделать, но опять же без особых гарантий что при смене параметров оптимизации не сломается.
  10. листинг в студию. clang для арма из предложенного jcxz свича сам делает ровно такую же последовательность нопов и инкремент pc.
  11. это clang аргумент в r0 передаёт, и вроде ничего больше не делает, судя по godbolt.org, что именно там делает iar в прологе если фунция не naked объявлена это в листинг смотреть надо. инструкция nop вроде как два байта занимает, и почему при сдвиге на нечётный адрес он вообще в какой-нибудь hard fault не улетает я не очень понимаю. jcxz на первой странице нормальный вариант на С через switch привёл. Да, за компилятором в листинг поглядывать надо, потому что при разных уровнях оптимизации он вероятно может и в цепочку ifов скомпилировать, но такие вещи либо целиком на ассемблере, либо бороться с оптимизатоциями компилятора без каких-либо гарантий.
  12. слишком просто и даже переносимо получается. надо сделать что-нибудь вроде void delay(int cycles){ __asm__("add pc, r0"); __asm__("nop"); __asm__("nop"); __asm__("nop"); __asm__("nop"); //... } чтобы потом всё раком встало при "не правильном" переданном значении аргумента функции.
  13. Supermium An up-to-date Chromium-based web browser compatible with Windows XP, 2003, Vista, 7, 8.x, and newer. July 10th, 2024: 124.0.6367.245
  14. "их железо" от обычных ПК с виндой только корпусом отличается, на дин рейку. Но да в ядро они влезли. XP/7/10, 11 пока вроде не осилили, пересели на freebsd.
  15. не удивительно, "Олег за всё берется смело..., а если за labview берется то просто тратит меньше сил" у beckhoffа с их twincatом вроде вполне получилось, правда тоже недавно рантайм ещё и TwinCAT/BSD выкатили, но со средой разработки win only, на базе msvs :)
  16. у этого C4 ноги вероятно отсюда растут: http://www.iro.umontreal.ca/~felipe/IFT2030-Automne2002/Complements/tinyc.c этот гораздо примитивнее, так как задачи уметь собирать самого себя не ставилось, и доработать ему "парсер" добавив нужные команды и до понимания параметров после команды через пробел проще будет. если хочется именно tcl есть https://github.com/zserge/partcl, сам не использовал, просто под руку попался. но вот "set x 4; puts [+ [* $x 10] 2]" с пробелами, по сравнению со скобочками у C выглядит ну совсем не лучше
  17. в виндах тоже есть варианты типа TwinCAT, но не бесплатно и не "без доп.драйверов на уровне ядра"
  18. Как-то очень давно в 7 или даже XP, опрашивал параллельным ещё портом какой-то микрометр с ~2кГц последовательным интерфейсом, через тупой опрос inp(), драйверами параллельного порта от avreal. Путём спихивания процесса руками через SetProcessAffinityMask на какое-нибудь ядро с номером повыше, чтобы там ему никто не мешал, работало вполне стабильно, но какой там именно был джиттер не проверял. Без этого, просто изменением приоритета, было хуже. Можно наверное ещё где-то шедулеру посоветовать определённые ядра не использовать другими процессами, чтобы там только он один крутился. я бы вот сюда ещё бы посмотрел: https://learn.microsoft.com/en-us/windows/win32/procthread/multimedia-class-scheduler-service
  19. 2008 вроде бы самая адекватная была насколько помню, дольше всех прожила, https://download.microsoft.com/download/E/8/E/E8EEB394-7F42-4963-A2D8-29559B738298/VS2008ExpressWithSP1ENUX1504728.iso не надо так, хотя бы codeblocks какой-нибудь, хоть и страшненький, но более менее рабочий из коробки: https://www.codeblocks.org/downloads/binaries/#imagesoswindows48pnglogo-microsoft-windows codeblocks-20.03mingw - с компилятором з.ы. а для "сложной консольной программы, которая читает из одного текстового файла и пишет в другой", и плюсы-то не особо нужны, хватит поди tinycc, и встроенного редактора в FARе. ну или http://www.smorgasbordet.com/pellesc/
  20. Многофазность на момент (особенно если его в саженях*пуд измерять) не особо влияет, разве что на плавность хода и количество шагов на оборот. У двухфазного в тех же габаритах момент даже больше: https://www.oyostepper.com/goods-53-Nema-17-Stepper-Motor-Bipolar-18-deg-65Ncm-92ozin-21A-336V-42x42x60mm-4-Wires.html https://www.oyostepper.com/goods-1374-Nema-17-Stepper-Motor-5-Phase-05Nm-072deg-18A-42x42x60mm-5-Wires.html Редуктор какой попало тоже может не подойти, у китайских планетарных градуса 3 люфта спокойно наберётся особенно под нагрузкой, что с плечом в 12 дюймов легко даст полвершка ошибки позиционирования. А "безлюфтовые" волновые редукторы (типа harmonic drive) денег совсем дурных стоят.
  21. для компилятора в данном случае '245' - int и в char физически не влазит, для сравнения. если физически битики 11110101 поместить в uint8_t это будет 245, а если в int8_t, то -11, что совсем не равно 245, о чем компилятор и сообщает. и если привести сравнение к одному соответствующему типу, (int8_t)245, сделав из неё -11, или наоборот (uint8_t)char_var, компилятор спокойно сравнит одинаковые наборы битов 11110101, без разницы "знаковые" они или нет. +1, он к тому же ещё на некоторых платформах не всегда 8 бит бывает. указатель это лишь всего лишь адрес, (void*) chars
  22. https://www.magneticsgroup.com/wp-content/uploads/2019/09/effui-rodsall-FOR-WEB.pdf https://fair-rite.com/rod-permeability-calculator/ https://www.sci-hub.wf/10.2528/pierl16110203
  23. Как именно считать не подскажу, хотя такая геометрия и честно аналитически считается, проще в femm/Radia засунуть и численно поля посмотреть. Но для "воздушного зазора" в такой цилиндрической геометрии как минимум ещё коэффициент типа 1/2PI нужен так как обратно по воздуху магнитный поток во все стороны по кругу, а с учётом того, что не только с торцов седречника, то ещё немного меньше.
  24. да вроде почти кто угодно может 500х400мм делать, по диагонали влезет, правда, не сказать что очень уж эффективное использование доступной площади 🙂
×
×
  • Создать...