From 9392c8cae2f1c24d7ea7455fe23fbeb3fd5bcf30 Mon Sep 17 00:00:00 2001 From: rmackay9 <rmackay9@yahoo.com> Date: Thu, 18 Oct 2012 17:04:44 +0900 Subject: [PATCH] ArduCopter: added spi_semaphore to stop conflicts between dataflash and optical flow sensor on APM1 --- ArduCopter/ArduCopter.pde | 9 +++++---- ArduCopter/sensors.pde | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/ArduCopter/ArduCopter.pde b/ArduCopter/ArduCopter.pde index 48c149fb7..bdb646c6b 100644 --- a/ArduCopter/ArduCopter.pde +++ b/ArduCopter/ArduCopter.pde @@ -171,11 +171,12 @@ APM_RC_APM1 APM_RC; //////////////////////////////////////////////////////////////////////////////// // Dataflash //////////////////////////////////////////////////////////////////////////////// -#if CONFIG_APM_HARDWARE == APM_HARDWARE_APM2 +AP_Semaphore spi_semaphore; AP_Semaphore spi3_semaphore; +#if CONFIG_APM_HARDWARE == APM_HARDWARE_APM2 DataFlash_APM2 DataFlash(&spi3_semaphore); #else -DataFlash_APM1 DataFlash; +DataFlash_APM1 DataFlash(&spi_semaphore); #endif @@ -227,9 +228,9 @@ AP_Compass_HMC5843 compass; #ifdef OPTFLOW_ENABLED #if CONFIG_APM_HARDWARE == APM_HARDWARE_APM2 -AP_OpticalFlow_ADNS3080 optflow(&spi3_semaphore,OPTFLOW_CS_PIN); +AP_OpticalFlow_ADNS3080 optflow(OPTFLOW_CS_PIN); #else -AP_OpticalFlow_ADNS3080 optflow(NULL,OPTFLOW_CS_PIN); +AP_OpticalFlow_ADNS3080 optflow(OPTFLOW_CS_PIN); #endif #else AP_OpticalFlow optflow; diff --git a/ArduCopter/sensors.pde b/ArduCopter/sensors.pde index e708d0f4a..64cdbd2ed 100644 --- a/ArduCopter/sensors.pde +++ b/ArduCopter/sensors.pde @@ -51,7 +51,7 @@ static void init_compass() static void init_optflow() { #ifdef OPTFLOW_ENABLED - if( optflow.init(false, &timer_scheduler) == false ) { + if( optflow.init(false, &timer_scheduler, &spi_semaphore, &spi3_semaphore) == false ) { g.optflow_enabled = false; SendDebug("\nFailed to Init OptFlow "); } -- GitLab