USB джойстик с уклоном в файтинги на RP2040

Рано вам отвечать на вопросы связанные с USB…
от нехватки знаний бред и пишите…

цитата из кривого дескриптора

Endpoint Descriptor 83 3 In, Interrupt, 16 ms
|6|bInterval|1|10h|16 ms|

16 ms это сколько раз в секунду?

А если частота проца будет в разы больше и ядер 10шт, данные быстрее с этим дескриптором пойдут? а что будет с функцией которая попытается отправлять чаще?

нельзя так огульно, без измерений )))

Пытаетесь себя классифицировать?

Факт выше - данные из дескриптора.
поясняющий почему работает так а не иначе.
и почему больше 60 раз в секунду не выходит…

но вы продолжаете игнорировать факты и продолжать писать бред

Ну так напишите с правильным дискриптором ! Нам то мозг зачем разрушать этой идеей ?

Дескриптор я беру на себя…
это было написано в 1 посте

Вопрос был про не блокирующие функции АЦП
и про математику не сильно грузящую проц.

Сеньёр же дал вам, джунам, команду разобраться, а вы препираетесь вместо работы.

3 лайка

Ацп на 2040 500 Килосамплей в секунду, даже еслиб он был блокирующим, все равно это явно быстрее чем 16мс на 1 измерение :slight_smile:
А еще данные АДС могут выгружаться по ДМА…

вообще-то именно так.
Читайте что такое ДМА и как с его помощью забирать данные с АЦП и складывать в буфер

Что тут обсуждать без кода ? Сколько мс в дискрипторе прописали, с такой частотой и шпарит запросы репортов …

В вашей модели мультиплексор - идеальный и коммутирует аналоговые пины за пренебрежимо малое время?

даже если я впишу вместо 16мс значение в 1 мс, это максимальное число.
хост будет опрашивать НЕ БЫСТРЕЕ этого числа.
и задача сводится к отправке новой порции как только МОЖНО ОТПРАВИТЬ и данные лучше свежие, а не 1/100 секунды до этого.

Он делает это в промежутке между измерениями - см RoundRobin mode

Пакеты Get report будут приходит 1000 раз в секунду при 1 мс в дескрипторе. Отсылать ответ это уже ваша задача !!!

@Vladislav
Вы за что в этой ветке “топите-то” ? За то что задача невыполнима? - да мы и спорить не будем.

Невыполнима и ладно :slight_smile:

оно самое

ИМХО этот процессор (ковыряясь левой ногой в носу) выдаст и 10000 пакетов !

Однозначно. Мы пока даже не начали говорить о ПИО машине :slight_smile:

Вот только Ардуино не знает, что она должна работать гораздо быстрее.

написал код на основе варианта из библиотеки

void loop() {

  uint64_t i;
  for(i=0; i<25000; i++){

  val = analogRead(26);
  val = map(val, 0, 1023, -32767, 32767);
  gamepad.SetX(val);

  val = analogRead(27);
  val = map(val, 0, 1023, -32767, 32767);
  gamepad.SetY(val);

  val = analogRead(28);
  val = map(val, 0, 1023, -32767, 32767);
  gamepad.SetZ(val);
  }

  digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN)); 
}

частотомер на работе, там же и рс232-USB, поэтому посчитал по секундомеру 50 миганий светодиода.

Вышло что за секунду цикл отрабатывает 37 тыс раз
даже если я результат на 3 умножу 500 Килосамплей в секунду в текущем применении (из коробки) не выходит.

или 370 раз за период в 1/100

вывод - больше скажутся данные просроченные на 1/100 пока процедура висела и жала очереди.

и повод сделать усреднение нескольких измерений

Конечно 500к у вас не выйдет, кто бы сомневался. И что?
Вы только что плакались, что ваш код всего 60 раз в секунду выдает и вы мечтаете о 1000 раз - а тут уже 37 тыс не устраивают?

Вы реально смотреть на вещи умеете? Или как баба - сколько не дай - все мало?

Технический подход к задаче - это определить какая частота вам нужна. Если же вы говорите что-то типа “чем больше - тем лучше” - вы не программист, вы балабол.

А вы читать умеете?
я реально признал, что думал что хуже будет, а тут и усреднить успеваю

и код с глюками - не мой…

причем это вы работаете через функцию ардуино. Она РаундРобин(скорее всего)не использует.
Работайте через Pico SDK - будет еще в 2-3 раза быстрее.
Вы про функцию чтения всего порта зачем спрашивали - просто так, покрасоваться? Она из СДК, а в ардуино такого нет.

Я уже два дня спрашиваю КАК, меня через 2 дня услышали и сказали делать так как я еще 2 дня назад хотел, но не сказали КАК.

Два дня пример клянчу.