Merge pull request #2104 from mikeller/add_support_for_multiple_inverters
Added support for multiple serial inverters.
This commit is contained in:
commit
8c571aff9e
|
@ -20,31 +20,98 @@
|
|||
|
||||
#include "platform.h"
|
||||
|
||||
#ifdef INVERTER
|
||||
|
||||
#include "io.h"
|
||||
#include "io_impl.h"
|
||||
|
||||
#include "inverter.h"
|
||||
|
||||
/*
|
||||
TODO: move this to support multiple inverters on different UARTs etc
|
||||
possibly move to put it in the UART driver itself.
|
||||
*/
|
||||
static IO_t pin = IO_NONE;
|
||||
|
||||
void initInverter(void)
|
||||
{
|
||||
pin = IOGetByTag(IO_TAG(INVERTER));
|
||||
IOInit(pin, OWNER_INVERTER, 1);
|
||||
IOConfigGPIO(pin, IOCFG_OUT_PP);
|
||||
|
||||
inverterSet(false);
|
||||
}
|
||||
|
||||
void inverterSet(bool on)
|
||||
#ifdef USE_INVERTER
|
||||
static void inverterSet(IO_t pin, bool on)
|
||||
{
|
||||
IOWrite(pin, on);
|
||||
}
|
||||
|
||||
static void initInverter(ioTag_t ioTag)
|
||||
{
|
||||
IO_t pin = IOGetByTag(ioTag);
|
||||
IOInit(pin, OWNER_INVERTER, 1);
|
||||
IOConfigGPIO(pin, IOCFG_OUT_PP);
|
||||
|
||||
inverterSet(pin, false);
|
||||
}
|
||||
#endif
|
||||
|
||||
void initInverters(void)
|
||||
{
|
||||
#ifdef INVERTER_PIN_USART1
|
||||
initInverter(IO_TAG(INVERTER_PIN_USART1));
|
||||
#endif
|
||||
|
||||
#ifdef INVERTER_PIN_USART2
|
||||
initInverter(IO_TAG(INVERTER_PIN_USART2));
|
||||
#endif
|
||||
|
||||
#ifdef INVERTER_PIN_USART3
|
||||
initInverter(IO_TAG(INVERTER_PIN_USART3));
|
||||
#endif
|
||||
|
||||
#ifdef INVERTER_PIN_USART4
|
||||
initInverter(IO_TAG(INVERTER_PIN_USART4));
|
||||
#endif
|
||||
|
||||
#ifdef INVERTER_PIN_USART5
|
||||
initInverter(IO_TAG(INVERTER_PIN_USART5));
|
||||
#endif
|
||||
|
||||
#ifdef INVERTER_PIN_USART6
|
||||
initInverter(IO_TAG(INVERTER_PIN_USART6));
|
||||
#endif
|
||||
}
|
||||
|
||||
void enableInverter(USART_TypeDef *USARTx, bool on)
|
||||
{
|
||||
#ifdef USE_INVERTER
|
||||
IO_t pin = IO_NONE;
|
||||
|
||||
#ifdef INVERTER_PIN_USART1
|
||||
if (USARTx == USART1) {
|
||||
pin = IOGetByTag(IO_TAG(INVERTER_PIN_USART1));
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef INVERTER_PIN_USART2
|
||||
if (USARTx == USART2) {
|
||||
pin = IOGetByTag(IO_TAG(INVERTER_PIN_USART2));
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef INVERTER_PIN_USART3
|
||||
if (USARTx == USART3) {
|
||||
pin = IOGetByTag(IO_TAG(INVERTER_PIN_USART3));
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef INVERTER_PIN_USART4
|
||||
if (USARTx == USART4) {
|
||||
pin = IOGetByTag(IO_TAG(INVERTER_PIN_USART4));
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef INVERTER_PIN_USART5
|
||||
if (USARTx == USART5) {
|
||||
pin = IOGetByTag(IO_TAG(INVERTER_PIN_USART5));
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef INVERTER_PIN_USART6
|
||||
if (USARTx == USART6) {
|
||||
pin = IOGetByTag(IO_TAG(INVERTER_PIN_USART6));
|
||||
}
|
||||
#endif
|
||||
|
||||
inverterSet(pin, on);
|
||||
#else
|
||||
UNUSED(USARTx);
|
||||
UNUSED(on);
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -17,14 +17,10 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#ifdef INVERTER
|
||||
void inverterSet(bool on);
|
||||
#define INVERTER_OFF inverterSet(false)
|
||||
#define INVERTER_ON inverterSet(true)
|
||||
#else
|
||||
#define INVERTER_OFF do {} while(0)
|
||||
#define INVERTER_ON do {} while(0)
|
||||
#if defined(INVERTER_PIN_USART1) || defined(INVERTER_PIN_USART2) || defined(INVERTER_PIN_USART3) || defined(INVERTER_PIN_USART4) || defined(INVERTER_PIN_USART5) || defined(INVERTER_PIN_USART6)
|
||||
#define USE_INVERTER
|
||||
#endif
|
||||
|
||||
void initInverter(void);
|
||||
void initInverters(void);
|
||||
|
||||
void enableInverter(USART_TypeDef *USARTx, bool on);
|
||||
|
|
|
@ -36,15 +36,15 @@
|
|||
#include "serial_uart_impl.h"
|
||||
|
||||
static void usartConfigurePinInversion(uartPort_t *uartPort) {
|
||||
#if !defined(INVERTER) && !defined(STM32F303xC)
|
||||
#if !defined(USE_INVERTER) && !defined(STM32F303xC)
|
||||
UNUSED(uartPort);
|
||||
#else
|
||||
bool inverted = uartPort->port.options & SERIAL_INVERTED;
|
||||
|
||||
#ifdef INVERTER
|
||||
if (inverted && uartPort->USARTx == INVERTER_USART) {
|
||||
#ifdef USE_INVERTER
|
||||
if (inverted) {
|
||||
// Enable hardware inverter if available.
|
||||
INVERTER_ON;
|
||||
enableInverter(uartPort->USARTx, true);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
@ -308,8 +308,8 @@ void init(void)
|
|||
beeperInit(beeperConfig());
|
||||
#endif
|
||||
/* temp until PGs are implemented. */
|
||||
#ifdef INVERTER
|
||||
initInverter();
|
||||
#ifdef USE_INVERTER
|
||||
initInverters();
|
||||
#endif
|
||||
|
||||
#ifdef USE_BST
|
||||
|
|
|
@ -33,8 +33,7 @@
|
|||
#define BEEPER PC13
|
||||
#define BEEPER_INVERTED
|
||||
|
||||
#define INVERTER PC15
|
||||
#define INVERTER_USART USART2
|
||||
#define INVERTER_PIN_USART2 PC15
|
||||
|
||||
// MPU interrupt
|
||||
#define USE_EXTI
|
||||
|
|
|
@ -38,8 +38,8 @@
|
|||
#define BEEPER_OPT PB7
|
||||
#define BEEPER_INVERTED
|
||||
|
||||
#define INVERTER PB15
|
||||
#define INVERTER_USART USART6
|
||||
#define INVERTER_PIN_USART6 PB15
|
||||
//#define INVERTER_PIN_USART1 PC9
|
||||
|
||||
#define UART1_INVERTER PC9
|
||||
|
||||
|
|
|
@ -19,8 +19,7 @@
|
|||
|
||||
#define LED0 PB3
|
||||
|
||||
#define INVERTER PB2 // PB2 (BOOT1) used as inverter select GPIO
|
||||
#define INVERTER_USART USART1
|
||||
#define INVERTER_PIN_USART1 PB2 // PB2 (BOOT1) used as inverter select GPIO
|
||||
|
||||
#define BEEPER PA15
|
||||
#define BEEPER_OPT PA2
|
||||
|
|
|
@ -33,8 +33,7 @@
|
|||
|
||||
#define BEEPER PC5
|
||||
|
||||
#define INVERTER PB2 // PB2 used as inverter select GPIO
|
||||
#define INVERTER_USART USART2
|
||||
#define INVERTER_PIN_USART2 PB2 // PB2 used as inverter select GPIO
|
||||
|
||||
#define MPU6000_CS_PIN PC4
|
||||
#define MPU6000_SPI_INSTANCE SPI1
|
||||
|
|
|
@ -28,8 +28,7 @@
|
|||
|
||||
#define BEEPER PE5
|
||||
|
||||
#define INVERTER PD3
|
||||
#define INVERTER_USART USART6
|
||||
#define INVERTER_PIN_USART6 PD3
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -28,8 +28,7 @@
|
|||
#define BEEPER PC15
|
||||
#define BEEPER_INVERTED
|
||||
|
||||
#define INVERTER PC8
|
||||
#define INVERTER_USART USART6
|
||||
#define INVERTER_PIN_USART6 PC8
|
||||
|
||||
#define USE_EXTI
|
||||
#define MPU_INT_EXTI PC4
|
||||
|
|
|
@ -28,8 +28,7 @@
|
|||
#define BEEPER PA8
|
||||
#define BEEPER_INVERTED
|
||||
|
||||
#define INVERTER PC0 // PC0 used as inverter select GPIO
|
||||
#define INVERTER_USART USART1
|
||||
#define INVERTER_PIN_USART1 PC0 // PC0 used as inverter select GPIO
|
||||
|
||||
// MPU6000 interrupts
|
||||
#define USE_EXTI
|
||||
|
|
|
@ -28,8 +28,7 @@
|
|||
|
||||
#define BEEPER PA8
|
||||
|
||||
#define INVERTER PC0 // PC0 used as inverter select GPIO
|
||||
#define INVERTER_USART USART1
|
||||
#define INVERTER_PIN_USART1 PC0 // PC0 used as inverter select GPIO
|
||||
|
||||
// MPU6000 interrupts
|
||||
#define USE_EXTI
|
||||
|
|
|
@ -27,8 +27,7 @@
|
|||
#define BARO_XCLR_PIN PC13
|
||||
#define BARO_EOC_PIN PC14
|
||||
|
||||
#define INVERTER PB2 // PB2 (BOOT1) abused as inverter select GPIO
|
||||
#define INVERTER_USART USART2
|
||||
#define INVERTER_PIN_USART2 PB2 // PB2 (BOOT1) abused as inverter select GPIO
|
||||
|
||||
#define USE_EXTI
|
||||
#define MAG_INT_EXTI PC14
|
||||
|
|
|
@ -44,8 +44,7 @@
|
|||
//#define BARO_XCLR_PIN PC13
|
||||
//#define BARO_EOC_PIN PC14
|
||||
|
||||
#define INVERTER PB2 // PB2 (BOOT1) abused as inverter select GPIO
|
||||
#define INVERTER_USART USART2
|
||||
#define INVERTER_PIN_USART2 PB2 // PB2 (BOOT1) abused as inverter select GPIO
|
||||
|
||||
#define USE_EXTI
|
||||
#define MAG_INT_EXTI PC14
|
||||
|
|
|
@ -35,8 +35,7 @@
|
|||
#define BEEPER PB4
|
||||
#define BEEPER_INVERTED
|
||||
|
||||
#define INVERTER PC0 // PC0 used as inverter select GPIO
|
||||
#define INVERTER_USART USART1
|
||||
#define INVERTER_PIN_USART1 PC0 // PC0 used as inverter select GPIO
|
||||
|
||||
#define MPU6000_CS_PIN PA4
|
||||
#define MPU6000_SPI_INSTANCE SPI1
|
||||
|
|
|
@ -69,8 +69,7 @@
|
|||
#endif
|
||||
|
||||
// PC0 used as inverter select GPIO
|
||||
#define INVERTER PC0
|
||||
#define INVERTER_USART USART1
|
||||
#define INVERTER_PIN_USART1 PC0
|
||||
|
||||
#define MPU6000_CS_PIN PA4
|
||||
#define MPU6000_SPI_INSTANCE SPI1
|
||||
|
|
|
@ -30,8 +30,7 @@
|
|||
|
||||
#define BEEPER PC13
|
||||
|
||||
#define INVERTER PC15
|
||||
#define INVERTER_USART USART2 //Sbus on USART 2 of nano.
|
||||
#define INVERTER_PIN_USART2 PC15 //Sbus on USART 2 of nano.
|
||||
|
||||
#define MPU9250_CS_PIN PB12
|
||||
#define MPU9250_SPI_INSTANCE SPI2
|
||||
|
|
|
@ -32,8 +32,7 @@
|
|||
#define BEEPER PC9
|
||||
#define BEEPER_INVERTED
|
||||
|
||||
#define INVERTER PC6
|
||||
#define INVERTER_USART USART6
|
||||
#define INVERTER_PIN_USART6 PC6
|
||||
|
||||
#define USE_ESC_SENSOR
|
||||
|
||||
|
|
|
@ -27,8 +27,7 @@
|
|||
#define BEEPER PA0
|
||||
#define BEEPER_INVERTED
|
||||
|
||||
#define INVERTER PD7
|
||||
#define INVERTER_USART USART6
|
||||
#define INVERTER_PIN_USART6 PD7
|
||||
|
||||
#define MPU6500_CS_PIN PE10
|
||||
#define MPU6500_SPI_INSTANCE SPI2
|
||||
|
|
|
@ -29,8 +29,7 @@
|
|||
#define BEEPER PC9
|
||||
//#define BEEPER_INVERTED
|
||||
|
||||
#define INVERTER PB15
|
||||
#define INVERTER_USART USART6
|
||||
#define INVERTER_PIN_USART6 PB15
|
||||
|
||||
|
||||
// Gyro interrupt
|
||||
|
|
Loading…
Reference in New Issue