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

adnega

Свой
  • Постов

    3 594
  • Зарегистрирован

  • Посещение

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

    3

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


  1. Использую GD32E103 и ST-Link/v2. Защиту устанавливает загрузчик. Снимаю защиту так [$(PG)=ST-LINK_CLI.exe]: unlock: $(PG) -c -w32 0x40022004 0x45670123 -w32 0x40022004 0xCDEF89AB -w32 0x40022008 0x45670123 -w32 0x40022008 0xCDEF89AB -w32 0x40022010 0x00000220 \ -w32 0x40022010 0x00000260 -w32 0x40022010 0x00000200 -w32 0x40022010 0x00000210 -w32 0x1ffff800 0xFFFF00A5 -w32 0x40022010 0x00000200 Программа местами поругивается, но снятию защиты это не мешает. Правда, если ноги SWD переопределены, то предварительно нужно зайти в заводской загрузчик (BOOT+RESET). PS. От GD-Link отказался, т.к. не знаю как на нем обновить прошивку и включить управление выходом RESET.
  2. Для полного погружения можно ниточки привязать от точки (нескольких точек) на окружности до всех нулей-полюсов. Потом точки на окружности сдвинуть в соответствии с изменением Fs - ниточки утянут нули-полюса куда-то в новое место. Это будет больше похоже на правду, но вряд ли такое получится для всех точек окружности. Можно попробовать две точки по краям фильтра...
  3. Почему? Т.е. если нужно преобразовать условно из 40 кГц в 40,001 кГц, то сдвигаем на 1,000025 * π - более чем в три раза?!
  4. Да, по частоте на первый взгляд сдвинется, но в АЧХ в области пропускания будут сильные колебания. Я не знаю простой трансформации, чтобы сохранить прежние расстояния до нулей и полюсов на новой диаграмме. Наверное, можно попробовать ввести частотную зависимость всех коэффициентов, а потом как-то обратить в многочлены, то там скорее всего тригонометрические функции будут которые нужно будет в ряд раскладывать и т.п. Наверное, проще все по правильному сразу сделать без хитрения. Кста, будут интересно сравнить новую и старую диаграммы - скорее всего ничего общего на них не будет ((
  5. Если у вас задачка учебная, то можно поэкспериментировать, но я все больше уверен, что ничего хорошего от сдвига точек не получится. Каких-то широкоизвестных приемов (для изменения Fs) я не припомню, и, думаю, вряд ли они есть, т.к. для безразмерного (деленного на Fs) фильтра это будет совсем другой фильтр. Если есть возможность пересчитать новый фильтр, то нужно пересчитывать - благо из временной области в частотную можно туда-сюда отображать. Лучше потратить усилия в этом направлении.
  6. +180/1.21 и -180/1.21 Стоп. Это для точек с углом 180. У вас фильтр уж очень простой - решение тоже может быть простым. А что если z заменить на z*1.21 или z/1.21?
  7. Нужно пробовать, т.к. при этом преобразовании тоже не все гладко. Что делать с точками, которые лежат на оси X? Расщеплять на две комплексно-сопряженные?
  8. Частота Fs увеличилась, но вам нужно частоту фильтра оставить прежней, поэтому она в безразмерном (деленном на Fs) виде как бы уменьшилась, т.е. характерные точки как бы стянулись к нулю по частоте.
  9. Да. Но это лишь один из вариантов решения, т.к. у вас ничего кроме коэффициентов нет. Того же спада АЧХ у вас скорее всего не будет, т.к. порядок фильтра не изменяется. Если вы хотите те же характеристики спада АЧХ, то нужно пересчитывать фильтр полностью, т.к. может потребоваться увеличивать порядок фильтра (коэффициентов станет больше). Дык, вроде делить на 1.21
  10. По вашим коэффициентам можно построить ноль-полюсную диаграмму для вашей частоты. При изменении Fs угол всех точек должен пропорционально измениться и получится новая ноль-полюсная диаграмма. Превратить ее в коэффициенты a и b. Я бы так попробовал.
  11. LDM/STM в inline asm

    Нашел старенький, но ответ.
  12. LDM/STM в inline asm

    Это понятно. Но как компилятору объяснить, что порядок в reg_list имеет значение? GCC выдает предупреждение, но как заставить соблюдать порядок номеров регистров?
  13. LDM/STM в inline asm

    А так попробовать: u32 *p0 = ..., *p1 = ...; uint i = ...; u32 j0, j1, j2, j3; asm( "p01: LDR %0, [%4, #8 * 1] \n" " LDR %1, [%4, #8 * 2] \n" " LDR %2, [%4, #8 * 3] \n" " LDR %3, [%4, #8 * 4]! \n" " SUBS %6, %6, #4 \n" " STMIA %5!, {%0,%1,%2,%3} \n" " BNE p01" : "=r"(j0), "=&r"(j1), "=&r"(j2), "=&r"(j3) : "r"(p0), "r"(p1), "r"(i) : "cc", "memory"); j0 = j0; j1 = j1; j2 = j2; j3 = j3;
  14. LDM/STM в inline asm

    Стоп. Тут же IAR ерунду пишет: 0xC778 STMIA R7!, {R6,R5,R4,R3}
  15. LDM/STM в inline asm

    Вариант_2 вас устроил только на половину. Может, LDRD/STRD добавит вторую половину. Я так понимаю проблему: вы хотите явно использовать имена регистров, но при этом хотите, чтоб компилятор о их использовании знал, и какие-то дополнительные вещи делал на автомате? Не совсем понятно, чем вариант_1 плох? Почему важен именно порядок регистров?
  16. LDM/STM в inline asm

    А можно попробовать LDRD/STRD ?
  17. LDM/STM в inline asm

    А так получится (указать явно имена регистров)? void vPortStartFirstTask( void ) { __asm volatile( " ldr r0, =0xE000ED08 \n" /* Use the NVIC offset register to locate the stack. */ " ldr r0, [r0] \n" " ldr r0, [r0] \n" " msr msp, r0 \n" /* Set the msp back to the start of the stack. */ " cpsie i \n" /* Globally enable interrupts. */ " svc 0 \n" /* System call to start first task. */ " nop \n" ); } Это довольно опасные инструкции. Например, у вас могут быть данные не выровненные - тогда их нельзя использовать.
  18. LDM/STM в inline asm

    А что запрещает сделать .s-файл и запускать из Си реализованную там функцию? Зачем вы мешаете компилятору делать свою работу?
  19. Не проще массу умножить на расстояние до центра масс?
  20. Вроде, для каждой задачи должен быть свой инструмент. Для пайки посуды есть мощные паяльники в виде топора.
  21. А как вы поняли что стирается именно нулевой сектор?
  22. Stm32F407 SPI+DMA

    Один канал или несколько? Сколько? А что линкер разместил по этим адресам? АЦП 12-битный. Вы в 8 битном режиме от него данные получаете? Без исходника ничего не понятно. Сомнительное решение.
  23. Чтоб что-то сделать с флешь нужно как минимум разлочить работу с ней. По мне так это тоже самое, что MPU разлочить. Да, в нештатной ситуации MPU может дать дополнительную информацию о проблеме, а неразлоченный контроллер флешь (зависнет?) не даст эту самую флешь повредить. А так как ТС уверяет, что флешь стирается даже с локом сектора, то: - выполняется полный код снятия защиты с сектора, стирание сектора, и уж точно разблокирование контроллера флешь по всем правилам (т.е. и MPU тоже будет временно отключен); - либо никакого стирания флешь нет (опять же MPU тут не поможет).
×
×
  • Создать...