Fix unwanted inversion of escprog // Fix motor output numbering

This commit is contained in:
borisbstyle 2017-03-19 01:50:09 +01:00
parent 5a9ae10fd7
commit 28f9dc6849
4 changed files with 16 additions and 15 deletions

View File

@ -111,15 +111,14 @@ static void escSerialICConfig(TIM_TypeDef *tim, uint8_t channel, uint16_t polari
void setTxSignalEsc(escSerial_t *escSerial, uint8_t state) void setTxSignalEsc(escSerial_t *escSerial, uint8_t state)
{ {
#ifdef USE_ESCSERIAL_INVERSION
state ^= ENABLE;
#endif
if(escSerial->mode == PROTOCOL_KISSALL) if(escSerial->mode == PROTOCOL_KISSALL)
{ {
for (volatile uint8_t i = 0; i < escSerial->outputCount; i++) { for (volatile uint8_t i = 0; i < escSerial->outputCount; i++) {
uint8_t state_temp = state; if (state) {
if(escOutputs[i].inverted) {
state_temp ^= ENABLE;
}
if (state_temp) {
IOHi(escOutputs[i].io); IOHi(escOutputs[i].io);
} else { } else {
IOLo(escOutputs[i].io); IOLo(escOutputs[i].io);
@ -128,10 +127,6 @@ void setTxSignalEsc(escSerial_t *escSerial, uint8_t state)
} }
else else
{ {
if(escSerial->rxTimerHardware->output & TIMER_OUTPUT_INVERTED) {
state ^= ENABLE;
}
if (state) { if (state) {
IOHi(escSerial->txIO); IOHi(escSerial->txIO);
} else { } else {

View File

@ -2823,6 +2823,7 @@ static void cliEscPassthrough(char *cmdline)
int i = 0; int i = 0;
char *pch = NULL; char *pch = NULL;
char *saveptr; char *saveptr;
uint8_t indexForProg = 0;
if (isEmpty(cmdline)) { if (isEmpty(cmdline)) {
cliShowParseError(); cliShowParseError();
@ -2857,13 +2858,15 @@ static void cliEscPassthrough(char *cmdline)
break; break;
case 1: case 1:
index = atoi(pch); index = atoi(pch);
indexForProg = index;
if(mode == 2 && index == 255) if(mode == 2 && index == 255)
{ {
printf("passthrough on all outputs enabled\r\n"); printf("passthrough on all outputs enabled\r\n");
} }
else{ else{
if ((index >= 0) && (index < USABLE_TIMER_CHANNEL_COUNT)) { indexForProg = index + 1; // Wonky timer mapping requires this to match the actual motor numberings
printf("passthrough on output %d enabled\r\n", index); if ((index >= 1) && (index < USABLE_TIMER_CHANNEL_COUNT)) {
printf("passthrough on esc %d enabled\r\n", index);
} }
else { else {
printf("invalid output, range: 1 to %d\r\n", USABLE_TIMER_CHANNEL_COUNT); printf("invalid output, range: 1 to %d\r\n", USABLE_TIMER_CHANNEL_COUNT);
@ -2875,7 +2878,7 @@ static void cliEscPassthrough(char *cmdline)
i++; i++;
pch = strtok_r(NULL, " ", &saveptr); pch = strtok_r(NULL, " ", &saveptr);
} }
escEnablePassthrough(cliPort,index,mode); escEnablePassthrough(cliPort,indexForProg,mode);
} }
#endif #endif

View File

@ -25,6 +25,7 @@
#include "drivers/dma.h" #include "drivers/dma.h"
const timerHardware_t timerHardware[USABLE_TIMER_CHANNEL_COUNT] = { const timerHardware_t timerHardware[USABLE_TIMER_CHANNEL_COUNT] = {
DEF_TIM(TIM2, CH2, PB3, TIM_USE_PWM | TIM_USE_PPM, TIMER_INPUT_ENABLED),
#ifdef KISSCC #ifdef KISSCC
DEF_TIM(TIM1, CH2N,PB14, TIM_USE_MOTOR, TIMER_OUTPUT_ENABLED | TIMER_OUTPUT_INVERTED), DEF_TIM(TIM1, CH2N,PB14, TIM_USE_MOTOR, TIMER_OUTPUT_ENABLED | TIMER_OUTPUT_INVERTED),
DEF_TIM(TIM8, CH2N,PB0, TIM_USE_MOTOR, TIMER_OUTPUT_ENABLED | TIMER_OUTPUT_INVERTED), DEF_TIM(TIM8, CH2N,PB0, TIM_USE_MOTOR, TIMER_OUTPUT_ENABLED | TIMER_OUTPUT_INVERTED),
@ -42,7 +43,6 @@ const timerHardware_t timerHardware[USABLE_TIMER_CHANNEL_COUNT] = {
DEF_TIM(TIM17,CH1, PA7, TIM_USE_MOTOR, TIMER_OUTPUT_ENABLED | TIMER_OUTPUT_INVERTED), DEF_TIM(TIM17,CH1, PA7, TIM_USE_MOTOR, TIMER_OUTPUT_ENABLED | TIMER_OUTPUT_INVERTED),
DEF_TIM(TIM4, CH3, PA13, TIM_USE_PWM, TIMER_INPUT_ENABLED), // On KISSFC TIM16 did not work, using TIM4 works DEF_TIM(TIM4, CH3, PA13, TIM_USE_PWM, TIMER_INPUT_ENABLED), // On KISSFC TIM16 did not work, using TIM4 works
#endif #endif
DEF_TIM(TIM2, CH2, PB3, TIM_USE_PWM | TIM_USE_PPM, TIMER_INPUT_ENABLED),
DEF_TIM(TIM2, CH1, PA15, TIM_USE_PWM, TIMER_INPUT_ENABLED), DEF_TIM(TIM2, CH1, PA15, TIM_USE_PWM, TIMER_INPUT_ENABLED),
DEF_TIM(TIM2, CH3, PA2, TIM_USE_PWM, TIMER_INPUT_ENABLED), DEF_TIM(TIM2, CH3, PA2, TIM_USE_PWM, TIMER_INPUT_ENABLED),
DEF_TIM(TIM2, CH4, PB11, TIM_USE_PWM, TIMER_INPUT_ENABLED), DEF_TIM(TIM2, CH4, PB11, TIM_USE_PWM, TIMER_INPUT_ENABLED),

View File

@ -26,7 +26,10 @@
#define USE_ESC_SENSOR #define USE_ESC_SENSOR
#define USE_ESCSERIAL #define USE_ESCSERIAL
#define ESCSERIAL_TIMER_TX_HARDWARE 6 #ifdef KISSFC
#define USE_ESCSERIAL_INVERSION
#endif
#define ESCSERIAL_TIMER_TX_HARDWARE 0
#define REMAP_TIM17_DMA #define REMAP_TIM17_DMA
#define LED0 PB1 #define LED0 PB1