From 5229882470722c71e2a7d3da1038dad247618ef3 Mon Sep 17 00:00:00 2001 From: bresch Date: Tue, 31 Jul 2018 15:16:36 +0200 Subject: [PATCH] Camera Capture - Use falling edge only --- src/drivers/camera_capture/camera_capture.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/drivers/camera_capture/camera_capture.cpp b/src/drivers/camera_capture/camera_capture.cpp index b4d73936fb..4366b39848 100644 --- a/src/drivers/camera_capture/camera_capture.cpp +++ b/src/drivers/camera_capture/camera_capture.cpp @@ -79,11 +79,7 @@ CameraCapture::capture_callback(uint32_t chan_index, hrt_abstime edge_time, uint32_t edge_state, uint32_t overflow) { - if (edge_state == 0) { // Falling edge - // Timestamp and compensate for strobe delay - _last_fall_time = edge_time - uint64_t(1000 * _strobe_delay); - - } else if (edge_state == 1 && _last_fall_time > 0) { // Falling edge and got rising before + if (_last_fall_time > 0) { struct camera_trigger_s trigger {}; trigger.timestamp = edge_time - ((edge_time - _last_fall_time) / 2); // Get timestamp of mid-exposure @@ -94,6 +90,9 @@ CameraCapture::capture_callback(uint32_t chan_index, _last_exposure_time = edge_time - _last_fall_time; } + // Timestamp and compensate for strobe delay + _last_fall_time = edge_time - uint64_t(1000 * _strobe_delay); + _capture_overflows = overflow; } @@ -176,7 +175,7 @@ CameraCapture::set_capture_control(bool enabled) if (enabled) { // register callbacks //up_input_capture_set(4, Both, 0, &CameraCapture::capture_trampoline, this); - up_input_capture_set(5, Both, 0, &CameraCapture::capture_trampoline, this); + up_input_capture_set(5, Falling, 0, &CameraCapture::capture_trampoline, this); _capture_enabled = true; } else {