Страница 54 из 135 ПерваяПервая ... 444525354555664104 ... ПоследняяПоследняя
Показано с 531 по 540 из 1349

Тема: Hardella IDE

  1. #531

    По умолчанию

    Цитата Сообщение от Newcomer Посмотреть сообщение
    Или прочитать состояние из PRU без перезаписи всех переменных нельзя ? Если так, то может разделить чтение и запись ?

    Cделать MemoryRead() и MemoryWrite(). Это будет более гибкий подход.
    Да, разделение на чтение и запись имеет смысл, но оно само по себе не решит проблему.

    Поясню: сейчас записываются все переменные.
    Допустим, в программе "простое управление выходом + ШД". Как сделать так, чтобы "команда управления выходом передалась, а ШД.enable нет"?
    Делать "MemoryWriteStepperEnable(..); MemoryWriteDirectOut(..)"? (т.е. каждую переменную обменивать через свой вызов?)

    Один только запуск ШД чего будет стоить. Штук 5 параметров передавать через 5 вызовов разных MemoryWrite.
    Гибко? Да. Удобно? Вряд ли.

    Можно, конечно, ввести "группы обмена". Так, чтобы для всех write переменных в одной группы создавался один блок.
    Например, группа переменных для ШД, другая для управления ещё чем-нибудь.

    Но сможет ли это кто-то настроить?
    Вот сейчас даже с простым добавлением @Export проблемы.

  2. #532

    По умолчанию

    Или считается, что при MemoryWrite будут записываться все переменные и "это норма"?

  3. #533

    По умолчанию

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    Или считается, что при MemoryWrite будут записываться все переменные и "это норма"?
    Главное разделить во времени чтение и запись (пишем все, но не читаем ничего, или читаем все, но не пишем ничего). То что будет все скопом писаться и все скопом читаться не является проблемой на мой взгляд.
    Последний раз редактировалось Newcomer; 21.01.2017 в 14:24.

  4. #534

    По умолчанию

    Цитата Сообщение от Newcomer Посмотреть сообщение
    Главное разделить во времени чтение и запись (пишем все, но не читаем ничего, или читаем все, но не пишем ничего). То что будет все скопом писаться и все скопом читаться не является проблемой на мой взгляд.
    А как же случаи "мне только выход обновить, но ШД.enable трогать нельзя"?

  5. #535

    По умолчанию

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    А как же случаи "мне только выход обновить, но ШД.enable трогать нельзя"?
    С enable проблема.

  6. #536

    По умолчанию

    Цитата Сообщение от Newcomer Посмотреть сообщение
    С enable проблема.
    Аналогично: "мне только количество импульсов / скорость поправить, а enable не трогать". В общем, я пока не вижу удобного решения. Возможно, после разделения read/write станет понятнее, но само разделение, по-моему, проблему enable решит только в небольшом количестве случаев.

  7. #537

    По умолчанию

    А можно сделать так, что если значение передаваемой переменной не поменялось, то на приемной стороне соответствующее присвоение не делать. Т.е. то, что изменилось обновляем, а то что не изменилось не трогаем.
    Последний раз редактировалось Newcomer; 21.01.2017 в 15:17.

  8. #538

    По умолчанию

    Еще один интересный вопрос. Достаточно однажды вызвать SteppersConfig_Pru*MemoryTransfer() чтобы в текущем цикле основной программы произошел обмен ?
    Последний раз редактировалось Newcomer; 21.01.2017 в 15:34.

  9. #539

    По умолчанию

    Цитата Сообщение от Newcomer Посмотреть сообщение
    Еще один интересный вопрос. Достаточно однажды вызвать SteppersConfig_Pru*MemoryTransfer() чтобы произошел обмен ?
    Нет, не достаточно. Технически, при обмене могут быть проблемы (возможно, при запуске PRU есть задержка между подачей команды на включение и тем, как PRU начинает выполнять пользовательскую программу).

    Из-за этого, MemoryTransfer внутри выполняет до 100 попыток. Я ни разу не видел, чтобы первых нескольких оказывалось бы недостаточно.

  10. #540

    По умолчанию

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    Нет, не достаточно. Технически, при обмене могут быть проблемы (возможно, при запуске PRU есть задержка между подачей команды на включение и тем, как PRU начинает выполнять пользовательскую программу).

    Из-за этого, MemoryTransfer внутри выполняет до 100 попыток. Я ни разу не видел, чтобы первых нескольких оказывалось бы недостаточно.
    MemoryTransfer надо вызывать 100 раз ? Это какое же время может занять обмен ?

    Какой ужас, это удар под дых.

    Как узнать, что обмен произошел ?
    Последний раз редактировалось Newcomer; 21.01.2017 в 16:06.

Страница 54 из 135 ПерваяПервая ... 444525354555664104 ... ПоследняяПоследняя

Ваши права

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