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

_pv

Свой
  • Постов

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

  • Посещение

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

    16

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


  1. может, а lto может увидеть, что никто больше ничего в переменную glb из секции zero bss не пишет, ни в одной единице трансляции, и посчитать что там всегда 0.
  2. как бы да, но нет, foo() никогда не будет вызвана так как и glb и sv проинициализованны нулями, соответственно менять glb больше некому, а в коротком примере ничего больше и нет. не буду утверждать что оптимизатор у иара столь прозорливый и сгенерил приведённый странный код поэтому, а не из-за бага, но впринципе, в том коротком примере выкинуть всё право имел.
  3. в "упрощённой" версии и glb и sv всегда равны 0, не понятно почему целиком всё не выкинул, а только присвоение "соптимизировал".
  4. на их сайте 30 дневная демоверсия вроде была? руками функции можно в математике поперебирать. или в gnuplotе https://gnuplot.sourceforge.net/demo_6.0/fit.html
  5. tablecurve2d умел перебирать кучу разных функций для аппроксимации и потом выбирать по точности/вычислительной сложности
  6. для нескольких определённых частот ДПФ будет быстрее ФФТ, да и как раз на лету считается без буферизации вообще, в отличии от. И того же Гёрцеля можно попробовать скрестить с примитивным БИХ фильтром, чтобы он старые отсчёты "забывал" экспоненциально и просто на каждом новом отсчёте за нескольких умножений уточнять значение фазы за последние N милисекунд. сигнал узкополосный и вычислять весь пустой спектр через ффт, а не на 2-3 частотах около единственного максимума, чтобы найти фазу смысла особого нет.
  7. для дальномера частоту ТС скорее всего сам себе и генерирует, так что должна быть известна. при неизвестной частоте МНК делать как-то совсем не проще, а частота если известна, то вроде как вообще без разницы - результат будет одинаковый, но Гёрцель тригонометрию всю через одно единственное умножение считает. а если частота известна "примерно", можно тем же Гёрцелем несколько точек вокруг посчитать, через них какую-нибудь параболу провести, найти где у неё максимум на самом деле и на этой частоте уже считать фазу.
  8. встроенных АЦП для 10кГц и 30дБ вроде как должно хватить с запасом. при известной частоте косинусное преобразование делается парой целочисленных умножений на отсчёт. см. "Алгоритм Гёрцеля" с компараторами ухудшение точности от уровня шума зависит, так как весь период превращается в одну единственную точку (перехода через 0), и соответственно все шумы делённые на производную сигнала прямиком попадают как ошибка фазы для всего периода. если же фаза считается умножением на синус/косинус через ДПФ, то шумы заметно давятся им как узкополосным фильтром и на фазу влияния оказывают меньше.
  9. bne ещё не за 1 такт выполняется, а iar этот пустой цикл без наличия volatile выкинет целиком скорее всего, при хоть какой-то включенной оптимизации.
  10. это при правильно настроенных, PRFTEN по умолчанию выключен у STM32G070. в ram перенести этот десяток nopов всё равно надёжней.
  11. Поправить как нить можно в данном контексте? собственно второе и лечит первое, вызванное тем что МК на большой частоте не успевает читать флэш что даже кэш на несколько слов не помогает и соответственно добавляет паузы.
  12. flash wait states, исполнение из ram
  13. при 4 ветках видимо "дешевле" развернуть в сравнения, если сделать switch побольше и ещё и оптимизацию по скорости включить вроде должен нормально сделать, но опять же без особых гарантий что при смене параметров оптимизации не сломается.
  14. листинг в студию. clang для арма из предложенного jcxz свича сам делает ровно такую же последовательность нопов и инкремент pc.
  15. это clang аргумент в r0 передаёт, и вроде ничего больше не делает, судя по godbolt.org, что именно там делает iar в прологе если фунция не naked объявлена это в листинг смотреть надо. инструкция nop вроде как два байта занимает, и почему при сдвиге на нечётный адрес он вообще в какой-нибудь hard fault не улетает я не очень понимаю. jcxz на первой странице нормальный вариант на С через switch привёл. Да, за компилятором в листинг поглядывать надо, потому что при разных уровнях оптимизации он вероятно может и в цепочку ifов скомпилировать, но такие вещи либо целиком на ассемблере, либо бороться с оптимизатоциями компилятора без каких-либо гарантий.
  16. слишком просто и даже переносимо получается. надо сделать что-нибудь вроде void delay(int cycles){ __asm__("add pc, r0"); __asm__("nop"); __asm__("nop"); __asm__("nop"); __asm__("nop"); //... } чтобы потом всё раком встало при "не правильном" переданном значении аргумента функции.
  17. 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
  18. "их железо" от обычных ПК с виндой только корпусом отличается, на дин рейку. Но да в ядро они влезли. XP/7/10, 11 пока вроде не осилили, пересели на freebsd.
  19. не удивительно, "Олег за всё берется смело..., а если за labview берется то просто тратит меньше сил" у beckhoffа с их twincatом вроде вполне получилось, правда тоже недавно рантайм ещё и TwinCAT/BSD выкатили, но со средой разработки win only, на базе msvs :)
  20. у этого 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 выглядит ну совсем не лучше
  21. в виндах тоже есть варианты типа TwinCAT, но не бесплатно и не "без доп.драйверов на уровне ядра"
  22. Как-то очень давно в 7 или даже XP, опрашивал параллельным ещё портом какой-то микрометр с ~2кГц последовательным интерфейсом, через тупой опрос inp(), драйверами параллельного порта от avreal. Путём спихивания процесса руками через SetProcessAffinityMask на какое-нибудь ядро с номером повыше, чтобы там ему никто не мешал, работало вполне стабильно, но какой там именно был джиттер не проверял. Без этого, просто изменением приоритета, было хуже. Можно наверное ещё где-то шедулеру посоветовать определённые ядра не использовать другими процессами, чтобы там только он один крутился. я бы вот сюда ещё бы посмотрел: https://learn.microsoft.com/en-us/windows/win32/procthread/multimedia-class-scheduler-service
  23. 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/
  24. Многофазность на момент (особенно если его в саженях*пуд измерять) не особо влияет, разве что на плавность хода и количество шагов на оборот. У двухфазного в тех же габаритах момент даже больше: 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) денег совсем дурных стоят.
×
×
  • Создать...