dimka76 63 22 августа, 2022 Опубликовано 22 августа, 2022 · Жалоба On 8/22/2022 at 8:22 AM, NefoRalt said: По хорошему, надо, чтобы АЦП (синий сигнал), измерял столько же раз, сколько раз появляется импульс (желтый сигнал). Или даже в два раза чаще. Как-будто у вас АЦП слишком медленно делает преобразования. Проверьте настройки тактирования АЦП, проверьте настройки выборки АЦП. On 8/22/2022 at 8:32 AM, haker_fox said: Непонятно. Раз у Вас АЦП запускается теперь по измерительному сигналу, почему это происходит только раз в 10 мс? Я раз в 50 mS насчитал Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
NefoRalt 0 22 августа, 2022 Опубликовано 22 августа, 2022 · Жалоба 7 минут назад, haker_fox сказал: Непонятно. Раз у Вас АЦП запускается теперь по измерительному сигналу, почему это происходит только раз в 10 мс? Преобразование одного канала (даже нескольких) происходит гораздо быстрее... Куда тратится это время, на что? Есть еще передача по ЮСАРТУ, но я не уверен, что это из-за него. Других вариантов пока нет. snprintf(trans_str, 61, "%d, %d, %d, %d, %d, %d, %d, %d, %d, %d;\n", dark1[0], dark1[1], dark1[2], dark1[3], dark1[4], dark1[5], dark1[6], dark1[7], dark1[8], dark1[9] ); HAL_UART_Transmit_DMA(&huart1, (uint8_t*)trans_str, strlen(trans_str)); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 22 августа, 2022 Опубликовано 22 августа, 2022 · Жалоба 8 minutes ago, dimka76 said: Я раз в 50 mS насчитал Господи) Я ошибся, мне кажется, что там вообще 5 мс) Клетка же 1 мс внизу в экране... Я не люблю риголовские осциллы, у них как-то ИМХО не всё чётко обозначено... 1 minute ago, NefoRalt said: Есть еще передача по ЮСАРТУ Если она по прерываниям, то сделайте прерывание УСАПП приоритетом ниже и используйте FIFO TX/RX, чтобы ничего не пропускать. Прерывания от АЦП важнее. Но как-то уж сильно ровно получается время задержки. Не уверен, что это УСАПП... А если он не по прерываниям, то вообще мешать не должен. Если, конечно, не блокирует прерывания. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 63 22 августа, 2022 Опубликовано 22 августа, 2022 · Жалоба On 8/22/2022 at 8:43 AM, NefoRalt said: Есть еще передача по ЮСАРТУ, но я не уверен, что это из-за него. Других вариантов пока нет. Для отладки уберите выдачу в UART, отключите DMA. Пускай АЦП делает однократное измерение. Убедитесь, что АЦП запускается на каждый измеряемый импульс. On 8/22/2022 at 8:44 AM, haker_fox said: Господи) Я ошибся, мне кажется, что там вообще 5 мс) Клетка же 1 мс внизу в экране... Точно, 5 mS ))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
NefoRalt 0 22 августа, 2022 Опубликовано 22 августа, 2022 · Жалоба 8 минут назад, dimka76 сказал: Проверьте настройки тактирования АЦП, проверьте настройки выборки АЦП. Разрешение АЦП - 12 бит, скорость сэмплирования - 4,5 циклов, работает на частоте 12 МГц. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 22 августа, 2022 Опубликовано 22 августа, 2022 · Жалоба 3 minutes ago, NefoRalt said: Разрешение АЦП - 12 бит, скорость сэмплирования - 4,5 циклов, работает на частоте 12 МГц. Там ещё выборка, ЕМНИП, 12.5 циклов. В итоге выходит 1.5 мкс. Примерно. Могу ошибаться, в доку лень лезть. Но точно меньше 1 мс. Много меньше) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
NefoRalt 0 22 августа, 2022 Опубликовано 22 августа, 2022 · Жалоба 38 минут назад, haker_fox сказал: Если она по прерываниям, то сделайте прерывание УСАПП приоритетом ниже и используйте FIFO TX/RX, чтобы ничего не пропускать. Прерывания от АЦП важнее. Но как-то уж сильно ровно получается время задержки. Не уверен, что это УСАПП... А если он не по прерываниям, то вообще мешать не должен. Если, конечно, не блокирует прерывания. 35 минут назад, dimka76 сказал: Для отладки уберите выдачу в UART, отключите DMA. Пускай АЦП делает однократное измерение. Отключил ЮАРТ, но это ничего не изменило 30 минут назад, haker_fox сказал: Там ещё выборка, ЕМНИП, 12.5 циклов. В итоге выходит 1.5 мкс. Примерно. Могу ошибаться, в доку лень лезть. Но точно меньше 1 мс. Много меньше) 1,4 мкс, если быть точным) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 22 августа, 2022 Опубликовано 22 августа, 2022 · Жалоба 1 hour ago, NefoRalt said: 1,4 мкс, если быть точным) Если быть точным, то (12.5 + 4.5) / 12e6 = 1.41666 .... мкс. Да, лучше округлить до 1.4 мкс, согласен. Я бухнул окруление "на так") 1 hour ago, NefoRalt said: Отключил ЮАРТ, но это ничего не изменило Трудно что-то дальше посоветовать. Пока в голову ничего не приходит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 63 22 августа, 2022 Опубликовано 22 августа, 2022 · Жалоба On 8/22/2022 at 9:23 AM, NefoRalt said: Отключил ЮАРТ, но это ничего не изменило 1. У вас в main алгоритмическая ошибка. 1.1. После завершения очередного преобразования АЦП выставляется переменная flag и по ней останавливается DMA. Получается у вас происходит одиночное преобразование, а не многократное. 1.2. Пока преобразование не завершилось - переменная flag в нуле, и при этом DMA перевключается, если можно так выразиться ))) 2. Отчего у вас сейчас стартует DMA ? От какого сигнала ? 3. От какого сигнала стартует АЦП ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
NefoRalt 0 23 августа, 2022 Опубликовано 23 августа, 2022 · Жалоба 20 часов назад, dimka76 сказал: 2. Отчего у вас сейчас стартует DMA ? От какого сигнала ? 3. От какого сигнала стартует АЦП ? АЦП, по идее, запускается от таймера, а ДМА следует за АЦП Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 63 23 августа, 2022 Опубликовано 23 августа, 2022 · Жалоба On 8/23/2022 at 7:32 AM, NefoRalt said: АЦП, по идее, запускается от таймера, а ДМА следует за АЦП ОТ какого таймера ? От того, что генерирует тестовые импульсы ? В вашем случае надо, чтобы АЦП запускался либо от того таймера, который генерирует тестовые импульсы, либо от внешнего прерывания ножки, которая генерирует тестовые импульсы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
NefoRalt 0 23 августа, 2022 Опубликовано 23 августа, 2022 · Жалоба 1 час назад, dimka76 сказал: ОТ какого таймера ? От того, что генерирует тестовые импульсы ? Да, от него. Решил полностью отчистить main. Оставил только запуск таймера и ацп-дма. Результат тот же Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 23 августа, 2022 Опубликовано 23 августа, 2022 · Жалоба 23 minutes ago, NefoRalt said: Оставил только запуск таймера и ацп-дма. Результат тот же Я уже запутался во всём, что Вы написали))) Может быть изобразить графически что от чего запускается и все пути прохождения сигнала. Хотя бы от руки и фото сюда. На диаграммке желательно все сигналы, названия модулей микроконтроллера и нормы времени прописать... Я и сам так делаю в своей профессиональной Деятельности. Иногда, рисуя такую диаграмму, находишь ошибку или ошибку концепции. 32 minutes ago, NefoRalt said: Оставил только запуск таймера и ацп-дма. Результат тот же Проверяйте настройки в самих регистрах. Они доступны через отладчик. Сравнивайте с тем, что должно быть по Reference Manual. Возможно, что в Вашей библиотеке кроется ошибка или Вы неправильно интерпретировали работу с ней. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 227 23 августа, 2022 Опубликовано 23 августа, 2022 · Жалоба В 17.08.2022 в 12:28, NefoRalt сказал: За длительность одного импульса (100 мкс) сделать 10 измерений напряжения Либо добавить аналоговый компаратор, который будет обнаруживать импульс и запускать делитель до 100 кГц на таймере (reset и gated), который в течение этого импульса 10 раз запустит АЦП с нужной фазой, которую можно будет подкрутить регистром компаратора этого таймера, либо АЦП на этих 100 кГц должен работать постоянно, а импульс по данным с него обнаруживать его оконным компаратором (AWD), но тогда фаза будет произвольной и усреднение будет с ошибкой. Вообще, всё это нагромождение сильно похоже на обработку сигнала с датчика тока — обычными решениями такое делается на порядки проще. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться