lomy 0 15 ноября, 2019 Опубликовано 15 ноября, 2019 · Жалоба Здравствуйте! Вопрос по использованию аналогового компаратора. Микроконтроллер STM32L476, периферия COMP2. В компараторе задействован Input+ соответственно на него подается аналоговый сигнал, Input- на нем установлено ¾ Internal VRef и включен External Output, в моем случае это 57 нога контроллера на нее выводится сигнал полученный с компаратора. Инициализация MX_COMP2_Init(); проходит нормально. Столкнулся с тем, что при старте компаратора HAL_COMP_Start(&hcomp2); он кратковременно срабатывает на время 40 мкс., выдает высокий потенциал. Это происходит только один раз при старте, дальше он работает абсолютно корректно, но если его остановить HAL_COMP_Stop(&hcomp2); и запустить заново, то при старте он опять сработает. Время всегда одинаковое 40 мкс. При работе использую библиотеку HAL, с помощью отладчика нашел место, где переключается порт: /* Enable the selected comparator */ SET_BIT(hcomp->Instance->CSR, COMP_CSR_EN); Это установка бита EN, им можно управлять напрямую без HAL результат тот же, при установке EN компаратор разово срабатывает. Может, кто подскажет, как запустить компаратор, что бы не было этого импульса, иначе в программу приходится вставлять кучу костылей, которые проверяют, что появившийся импульс пришел не от запуска компаратора. Заранее спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 15 ноября, 2019 Опубликовано 15 ноября, 2019 · Жалоба Очевидно, нужно сначала 1) COMP_CSR_EN, затем 2) задержка на переходные процессы, затем 3) сконфигурировать 57 ногу как Alternate Function. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lomy 0 15 ноября, 2019 Опубликовано 15 ноября, 2019 · Жалоба 1 час назад, scifi сказал: Очевидно, нужно сначала 1) COMP_CSR_EN, затем 2) задержка на переходные процессы, затем 3) сконфигурировать 57 ногу как Alternate Function. Да 57 нога так и настроена. А на счет задержки, хотелось бы как то по другому сделать, т.к. у меня используется прерывание от компаратора в котором запускается АЦП и таймеры. Получается так, что компаратор запустился и сразу же вызывается прерывание. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 18 ноября, 2019 Опубликовано 18 ноября, 2019 · Жалоба On 11/15/2019 at 7:26 PM, lomy said: Да 57 нога так и настроена. Это прекрасно. Но имелось в виду "надо поменять порядок инициализации". On 11/15/2019 at 7:26 PM, lomy said: А на счет задержки, хотелось бы как то по другому сделать, т.к. у меня используется прерывание от компаратора в котором запускается АЦП и таймеры. Получается так, что компаратор запустился и сразу же вызывается прерывание. Очевидно, здесь тоже надо поменять порядок инициализации. Сначала COMP, а затем, после завершения переходных процессов при его включении, настраиваем прерывание. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lomy 0 18 ноября, 2019 Опубликовано 18 ноября, 2019 · Жалоба Хорошо, попробую. Спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться