#1 Re: Апаратні питання » Обработка прерывания дальномера VL53L0X » 2022-02-20 10:19:20

Feanor_fs пише:

Возможно, я не на 100% понял ситуацию, но что если при обработке прерывания не выполнять измерение, а только поднивать флаг, о необходимости измерить.
Затем, в основном цикле, проверяется флаг, и если он поднят, проводится измерение, и флаг сбрасывается.

Похоже вы на 100% ситуацию не поняли. Как я понимаю вы с этим датчиком не работали.  Датчик может работать в двух режимах однократного измерения с помощью функции GetDistance и непрерывного, но как запустить второй вариант и какой функцией библиотеки читать значения в описании к самой библиотеки ничего не сказано, а в даташит на api датчика инфы крайне мало и ничего не понятно.
GetDistance нельзя использовать в обработчике прерывания, эта функция запускает процесс измерения и ждет его окончания. Естественно по окончанию происходит новое прерывание и так до бесконечности программа выходит из обработчика и сразу в него заходит.

#2 Апаратні питання » Обработка прерывания дальномера VL53L0X » 2022-02-19 11:56:42

lem123
відповідей: 3

Использую плату Blue Pill и датчик расстояния VL53L0X-V2 совместно с библиотекой . В режиме однократных измерений как в тестовом примере все работает нормально, но хотелось бы использовать прерывания. Как это сделать совершенно не понятно. Если прерывание активировать до функции sensor_vl53l0x.InitSensor и в обработчике прерывания вызывать функцию sensor_vl53l0x.GetDistance то она ждет когда произойдет измерение в результате чего генерируется новое прерывание по этой причине основной цикл программы loop не выполняется. В случае активации прерывания после sensor_vl53l0x.InitSensor датчик переводится в режим однократных измерений и обработчик прерываний не выполняется (измерения не происходят).
Возникает два вопроса:
1. Как настроить датчик в режиме циклических измерений?
2. Как получить данные с датчика в обработчике прерывания?

Підвал форуму