From 60136f04649def344abc13e87123151bb5846584 Mon Sep 17 00:00:00 2001 From: James Date: Wed, 27 Jul 2011 00:33:32 +0100 Subject: [PATCH] Add support for PPM transmitters up to 12 channels. Small array indexing issue in PIOS_PPM_Get. --- flight/PiOS/Boards/STM32103CB_CC_Rev1.h | 2 +- flight/PiOS/Boards/STM3210E_OP.h | 2 +- flight/PiOS/STM32F10x/pios_ppm.c | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/flight/PiOS/Boards/STM32103CB_CC_Rev1.h b/flight/PiOS/Boards/STM32103CB_CC_Rev1.h index 9b65ffd5a..018d05be2 100644 --- a/flight/PiOS/Boards/STM32103CB_CC_Rev1.h +++ b/flight/PiOS/Boards/STM32103CB_CC_Rev1.h @@ -231,7 +231,7 @@ extern uint32_t pios_com_sbus_id; //------------------------- // Receiver PPM input //------------------------- -#define PIOS_PPM_NUM_INPUTS 8 +#define PIOS_PPM_NUM_INPUTS 12 //------------------------- // Receiver PWM input diff --git a/flight/PiOS/Boards/STM3210E_OP.h b/flight/PiOS/Boards/STM3210E_OP.h index 441d689a7..16a2e76ef 100644 --- a/flight/PiOS/Boards/STM3210E_OP.h +++ b/flight/PiOS/Boards/STM3210E_OP.h @@ -204,7 +204,7 @@ extern uint32_t pios_com_sbus_id; //------------------------- // Receiver PPM input //------------------------- -#define PIOS_PPM_NUM_INPUTS 8 +#define PIOS_PPM_NUM_INPUTS 12 //------------------------- // Receiver PWM input diff --git a/flight/PiOS/STM32F10x/pios_ppm.c b/flight/PiOS/STM32F10x/pios_ppm.c index 7e91766d4..fe7421a17 100644 --- a/flight/PiOS/STM32F10x/pios_ppm.c +++ b/flight/PiOS/STM32F10x/pios_ppm.c @@ -44,9 +44,9 @@ const struct pios_rcvr_driver pios_ppm_rcvr_driver = { #define PIOS_PPM_IN_MIN_NUM_CHANNELS 4 #define PIOS_PPM_IN_MAX_NUM_CHANNELS PIOS_PPM_NUM_INPUTS #define PIOS_PPM_STABLE_CHANNEL_COUNT 25 // frames -#define PIOS_PPM_IN_MIN_SYNC_PULSE_US 7000 // microseconds +#define PIOS_PPM_IN_MIN_SYNC_PULSE_US 3800 // microseconds #define PIOS_PPM_IN_MIN_CHANNEL_PULSE_US 750 // microseconds -#define PIOS_PPM_IN_MAX_CHANNEL_PULSE_US 2400 // microseconds +#define PIOS_PPM_IN_MAX_CHANNEL_PULSE_US 2250 // microseconds #define PIOS_PPM_INPUT_INVALID 0 /* Local Variables */ @@ -170,7 +170,7 @@ void PIOS_PPM_Init(void) static int32_t PIOS_PPM_Get(uint32_t rcvr_id, uint8_t channel) { /* Return error if channel not available */ - if (channel > PIOS_PPM_IN_MAX_NUM_CHANNELS) { + if (channel >= PIOS_PPM_IN_MAX_NUM_CHANNELS) { return -1; } return CaptureValue[channel];