Страница 67 из 117 ПерваяПервая ... 1757656667686977 ... ПоследняяПоследняя
Показано с 661 по 670 из 1349

Тема: Hardella IDE

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    Если присмотреться, то видно, что PRU_STEPPER на этапе разгона/торможения тоже выполняет операцию деления.
    А на пальцах не объясните как в PRU_STEPPER выполняется операция деления ?

  2. #2

    По умолчанию

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    либо деления/умножения делать в "быстром таймере"
    PRU тактируется с частотой 1 Мгц (1 мкс), а прерывание по быстрому таймеру чаще 100 мкс лучше не делать. Т.е. частоты несоизмеримы. По этой причине каждую микросекунду корректировать Т не получится.
    Последний раз редактировалось Вольд; 11.03.2017 в 16:54.

  3. #3

    По умолчанию

    Цитата Сообщение от Вольд Посмотреть сообщение
    PRU тактируется с частотой 1 Мгц (1 мкс), а прерывание по быстрому таймеру чаще 100 мкс лучше не делать. Т.е. частоты несоизмеримы. По этой причине каждую микросекунду корректировать Т не получится.
    А обязательно ли корректировать каждую микросекунду?

    Можно раз в 100мкс обновлять "новую цель" и чтобы PRU шпарило к ней.
    Либо просто "раз в 100мкс вычислять новый интервал между импульсами", либо "раз в 100мкс вычислять новый интервал + прибавку к нему". При этом PRU будет каждые 100мкс получать более-менее правильные значения, а между делом линейно наращивать/сокращать интервал на полученное же значение.

    Тогда деление в PRU не понадобится, а достаточно будет простого t1 := t1+dt;

  4. #4

    По умолчанию

    Вот исходная формула: T = T0/(1+T0*a*t);, ее можно привести к виду: T = T0 + ΣdT.
    T0 - текущий период известен, t - время разгона/торможения известно (изначально жестко задано), n - количество тактов известно (т.к. t известно), dT - приращение на каждом такте известно. Т.е. на каждом такте прибавляем к T0 накопленную сумму, суммируем от 0 до n. В основной программе один раз раcчитывается и передается в PRU dT и n
    Последний раз редактировалось Вольд; 11.03.2017 в 17:34.

  5. #5

    По умолчанию

    Цитата Сообщение от Вольд Посмотреть сообщение
    T = T0 + n * dT - вот она заветная формула. T0 - текущий период известен, t - время разгона/торможения известно, n - количество тактов известно, dT - приращение на каждом такте известно.
    "Проблема" в том, что для правильной физики процесса формула должна быть не для задержек, а для частоты.
    Т.е. частота должна расти линейно, а задержки будут расти как разница корней.

    Другое дело, что если обновлять T0 раз в 100мкс, то никто не заметит подлога и наверняка будет всех устраивать.


    PS. В моём блоке PRU_STEPPER реализована корректировка длительности каждого импульса только из-за того, что так было _проще_ сделать. Да, да. Именно проще всю программу написать в PRU, т.к. тогда её гораздо проще отлаживать. По крайней мере мне. Запускаешь на эмуляторе и всё видишь.

    Если же делать половину программы в "100мкс таймере" и "половину в PRU", то отлаживать становится сложнее, т.к. у меня нет "эмулятора КДС кода".
    Например: в КДС программе можно и нужно использовать нормальные деления REAL'ов. А мой эмулятор делался для PRU, в котором дробных вообще нет.

  6. #6

    По умолчанию

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    "Проблема" в том, что для правильной физики процесса формула должна быть не для задержек, а для частоты.
    Т.е. частота должна расти линейно, а задержки будут расти как разница корней.
    Ничего не понял. Какая разница корней ? Я же все формулы выложил. Нет там никаких корней, а только одни суммирования.
    Последний раз редактировалось Вольд; 11.03.2017 в 18:02.

  7. #7

    По умолчанию

    Цитата Сообщение от Вольд Посмотреть сообщение
    Ничего не понял. Какая разница корней ? Я же все формулы выложил. Нет там никаких корней, а только одни суммирования.
    Линейное изменение T это приближенная формула.

    При точном "равноускоренном движении" S=a*t*t/2, и, значит, t = sqrt(2*s/a). Т.е. tn-tn-1 = sqrt(2*n/a) - sqrt(2*(n-1)/a), где tn это время, когда должен возникнуть n-ый импульс, а tn-tn-1 это длительность n-го импульса.

  8. #8
    Пользователь Аватар для rovki
    Регистрация
    03.01.2010
    Адрес
    Чехов
    Сообщений
    12,150

    По умолчанию

    Цитата Сообщение от Вольд Посмотреть сообщение
    T = T0 + n * dT - вот она заветная формула. T0 - текущий период известен, t - время разгона/торможения известно, n - количество тактов известно, dT - приращение на каждом такте известно. Т.е. на каждом такте прибавляем к T0 накопленную сумму.
    А что сразу не было заметно ,что кусочная апроксимация проще вычисления (деления, итд) кривой ???Я думал для продвинутых это очевидно
    электронщик до мозга костей и не только

  9. #9

    По умолчанию

    Цитата Сообщение от rovki Посмотреть сообщение
    А что сразу не было заметно ,что кусочная апроксимация проще вычисления (деления, итд) кривой ???Я думал для продвинутых это очевидно
    О каких кривых речь ? Решено, что разгон и торможение только с постоянным ускорением. От разгона по нелинейной зависимости давно отказался, а следовательно никакие аппроксимации не нужны.

    rovki, может вы в ОЛ и для PRU программу наваляете за 5 минут ?
    Последний раз редактировалось Вольд; 11.03.2017 в 18:10.

  10. #10
    Пользователь Аватар для rovki
    Регистрация
    03.01.2010
    Адрес
    Чехов
    Сообщений
    12,150

    По умолчанию

    Цитата Сообщение от Вольд Посмотреть сообщение
    О каких кривых речь ? Решено, что разгон и торможение только с постоянным ускорением. От разгона по нелинейной зависимости давно отказался, а следовательно никакие аппроксимации не нужны.

    rovki, может вы в ОЛ и для PRU программу наваляете за 5 минут ?
    Кривая это график функции ,наприме 1/x .Можно делить ,а можно разложить на куски линейные разложить (апроксимация)
    электронщик до мозга костей и не только

Страница 67 из 117 ПерваяПервая ... 1757656667686977 ... ПоследняяПоследняя

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •