-
- В каком смысле "запускать по завершению"? Разве АЦП сам по кругу не
бегает? Там через код зацикливание? - SciFi(03.11.2021 17:26)
- яж выше написал, в коде "проверили флаг готовности данных, сбросили
флаг, запустили новое" это хоть в отладке, хоть в работе, хаотично
ломает прием по cdc.. яб использовал инжектированные каналы, но их
всего 4, а у меня 5 - Aleksey_75(03.11.2021 17:30)
- Зачем "закат солнца вручную"? Образуется непредсказуемость. Я бы оставил автозапуск без автоматического сканирования каналов. По готовности очередного отсчёта, входим в прерывание. Забираем готовый отсчёт и вручную устанавливаем номер канала для послеследующего канала (следующий канал уже зафиксирован из прошлого прерывания). Так получаете стабильную выборку и, в то же время, произвольную последовательность каналов. - Nikolay_Po(03.11.2021 19:50)
- Процессорного времени хватает на обработку USB? Может, проц занят
только ожиданием флага АЦП? - SciFi(03.11.2021 17:54)
- С этим все норм, проверил, из main, раз в 5 мс. Да и усб на
прерываниях, не может друг другу мешать - Aleksey_75(03.11.2021 17:57)
- Я делаю так: В обработчиках прерываний, в прологе, устанавливаю диагностический выход в единицу. А в main(), в конце цикла, сбрасываю тот же выход в ноль. И смотрю осциллографом на ножке, как загружен процессор. Сразу видны проблемы со скоростью, если есть. - Nikolay_Po(03.11.2021 22:56)
- И вот это "из main, раз в 5 мс" вообще не понимаю. Опять же, если
"усб на прерываниях, не может друг другу мешать", значит, можно в
main() вставить "while (1) {}", и всё будет работать? Советую
проверить. - SciFi(03.11.2021 20:08)
- так в main Aleksey_75(134 знак., 03.11.2021 23:10 - 23:37)
- Завязывай писать if (что-тотам == true) RxTx(1 знак., 04.11.2021 15:45, ссылка)
- чуток в сторону, но true часто всё, что не false. а читается конструкция вааще странно. я бы предположил, что от get_systick() получаем число, но никак не bool - Vit(04.11.2021 07:43)
- Если каждые 5 мс, тогда непонятно, зачем "проверили флаг готовности
данных, сбросили флаг, запустили новое". Можно просто "запустить
новое", ведь старое за 5 мс точно закончилось? - SciFi(03.11.2021 23:27)
- привычка выработанная годами, как и проверка указателя на NULL )) ну это не сильно важно - Aleksey_75(03.11.2021 23:36)
- так в main Aleksey_75(134 знак., 03.11.2021 23:10 - 23:37)
- Всё равно хочется исключить влияние изменения прошивки при
комментировании. Тогда "static int volatile test;" и участок с
проверкой и перезапуском АЦП обернуть "if (test) { ... }". Потом
отладчиком переключаем test и смотрим, остался ли эффект. - SciFi(03.11.2021 18:00)
- Через пару часов буду за компом проверю отпишусь - Aleksey_75(03.11.2021 18:15)
- С этим все норм, проверил, из main, раз в 5 мс. Да и усб на
прерываниях, не может друг другу мешать - Aleksey_75(03.11.2021 17:57)
- яж выше написал, в коде "проверили флаг готовности данных, сбросили
флаг, запустили новое" это хоть в отладке, хоть в работе, хаотично
ломает прием по cdc.. яб использовал инжектированные каналы, но их
всего 4, а у меня 5 - Aleksey_75(03.11.2021 17:30)
- В каком смысле "запускать по завершению"? Разве АЦП сам по кругу не
бегает? Там через код зацикливание? - SciFi(03.11.2021 17:26)