diff --git a/radio/src/loadboot.cpp b/radio/src/loadboot.cpp index 1aa1c0389..cfc5b1448 100644 --- a/radio/src/loadboot.cpp +++ b/radio/src/loadboot.cpp @@ -78,7 +78,7 @@ void _bootStart() // If we were to turn it on here indiscriminately, then the radio can go into the // power on/off loop after being powered off by the user. (issue #2790) if (WAS_RESET_BY_WATCHDOG_OR_SOFTWARE()) { - GPIOD->BSRRL = 1; // set PWR_GPIO_PIN_ON pin to 1 + GPIOD->BSRRL = 1; // set PWR_ON_GPIO_PIN pin to 1 GPIOD->MODER = (GPIOD->MODER & 0xFFFFFFFC) | 1; // General purpose output mode } @@ -104,7 +104,7 @@ void _bootStart() // eventually exhaust and the radio will turn off. if (!WAS_RESET_BY_WATCHDOG_OR_SOFTWARE()) { // wait here until the power key is pressed - while (GPIOD->IDR & PWR_GPIO_PIN_SWITCH) { + while (GPIOD->IDR & PWR_SWITCH_GPIO_PIN) { bwdt_reset(); } } diff --git a/radio/src/targets/taranis/board_taranis.h b/radio/src/targets/taranis/board_taranis.h index 269850177..afa2659a9 100644 --- a/radio/src/targets/taranis/board_taranis.h +++ b/radio/src/targets/taranis/board_taranis.h @@ -126,12 +126,12 @@ void configure_pins( uint32_t pins, uint16_t config ); extern uint16_t sessionTimer; -#define SLAVE_MODE() (g_model.trainerMode == TRAINER_MODE_SLAVE) +#define SLAVE_MODE() (g_model.trainerMode == TRAINER_MODE_SLAVE) #if defined(REV9E) -#define TRAINER_CONNECTED() (true) +#define TRAINER_CONNECTED() (true) #else -#define TRAINER_CONNECTED() (GPIO_ReadInputDataBit(TRAINER_GPIO_DETECT, TRAINER_GPIO_PIN_DETECT) == Bit_RESET) +#define TRAINER_CONNECTED() (GPIO_ReadInputDataBit(TRAINER_GPIO_DETECT, TRAINER_GPIO_PIN_DETECT) == Bit_RESET) #endif #ifdef __cplusplus @@ -148,9 +148,9 @@ void delay(uint32_t ms); #if !defined(SIMU) || defined(SIMU_DISKIO) uint32_t sdIsHC(void); uint32_t sdGetSpeed(void); - #define SD_IS_HC() (sdIsHC()) - #define SD_GET_SPEED() (sdGetSpeed()) - #define SD_GET_FREE_BLOCKNR() (sdGetFreeSectors()) + #define SD_IS_HC() (sdIsHC()) + #define SD_GET_SPEED() (sdGetSpeed()) + #define SD_GET_FREE_BLOCKNR() (sdGetFreeSectors()) #else #define SD_IS_HC() (0) #define SD_GET_SPEED() (0) @@ -165,7 +165,7 @@ void delay(uint32_t ms); void sdPoll10ms(void); #define sdMountPoll() uint32_t sdMounted(void); - #define SD_CARD_PRESENT() (~SD_GPIO_PRESENT->IDR & SD_GPIO_PIN_PRESENT) + #define SD_CARD_PRESENT() (~SD_GPIO_PRESENT->IDR & SD_GPIO_PIN_PRESENT) #endif // Flash Write driver @@ -177,11 +177,11 @@ uint32_t isFirmwareStart(const void * buffer); uint32_t isBootloaderStart(const void * buffer); // Pulses driver -#define INTERNAL_MODULE_ON() GPIO_SetBits(INTMODULE_GPIO_PWR, INTMODULE_GPIO_PIN_PWR) -#define INTERNAL_MODULE_OFF() GPIO_ResetBits(INTMODULE_GPIO_PWR, INTMODULE_GPIO_PIN_PWR) +#define INTERNAL_MODULE_ON() GPIO_SetBits(INTMODULE_PWR_GPIO, INTMODULE_PWR_GPIO_PIN) +#define INTERNAL_MODULE_OFF() GPIO_ResetBits(INTMODULE_PWR_GPIO, INTMODULE_PWR_GPIO_PIN) #define EXTERNAL_MODULE_ON() GPIO_SetBits(EXTMODULE_PWR_GPIO, EXTMODULE_PWR_GPIO_PIN) #define EXTERNAL_MODULE_OFF() GPIO_ResetBits(EXTMODULE_PWR_GPIO, EXTMODULE_PWR_GPIO_PIN) -#define IS_INTERNAL_MODULE_ON() (GPIO_ReadInputDataBit(INTMODULE_GPIO_PWR, INTMODULE_GPIO_PIN_PWR) == Bit_SET) +#define IS_INTERNAL_MODULE_ON() (GPIO_ReadInputDataBit(INTMODULE_PWR_GPIO, INTMODULE_PWR_GPIO_PIN) == Bit_SET) #define IS_EXTERNAL_MODULE_ON() (GPIO_ReadInputDataBit(EXTMODULE_PWR_GPIO, EXTMODULE_PWR_GPIO_PIN) == Bit_SET) void init_no_pulses(uint32_t port); void disable_no_pulses(uint32_t port); diff --git a/radio/src/targets/taranis/hal.h b/radio/src/targets/taranis/hal.h index 2617af3d7..5533becdd 100644 --- a/radio/src/targets/taranis/hal.h +++ b/radio/src/targets/taranis/hal.h @@ -316,43 +316,42 @@ #endif // Power_OFF Delay and LED -#define PWR_RCC_AHB1Periph (RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD) +#define PWR_RCC_AHB1Periph RCC_AHB1Periph_GPIOD #define PWR_GPIO GPIOD -#define PWR_GPIO_PIN_SWITCH GPIO_Pin_1 // PD.01 -#define PWR_GPIO_PIN_ON GPIO_Pin_0 // PD.00 -#define PWR_GPIO_LED GPIOC -#define PWR_GPIO_PIN_LED GPIO_Pin_6 // PC.06 +#define PWR_SWITCH_GPIO_PIN GPIO_Pin_1 // PD.01 +#define PWR_ON_GPIO_PIN GPIO_Pin_0 // PD.00 // Internal Module -#define INTMODULE_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_DMA2) +#define INTMODULE_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_DMA2) #define INTMODULE_RCC_APB2Periph RCC_APB2Periph_TIM1 #if defined(REVPLUS) - #define INTMODULE_GPIO_PWR GPIOC - #define INTMODULE_GPIO_PIN_PWR GPIO_Pin_6 + #define INTMODULE_PWR_GPIO GPIOC + #define INTMODULE_PWR_GPIO_PIN GPIO_Pin_6 // PC.06 #else - #define INTMODULE_GPIO_PWR GPIOD - #define INTMODULE_GPIO_PIN_PWR GPIO_Pin_15 + #define INTMODULE_PWR_GPIO GPIOD + #define INTMODULE_PWR_GPIO_PIN GPIO_Pin_15 // PD.15 #endif -#define INTMODULE_GPIO_PIN GPIO_Pin_10 // PA.10 -#define INTMODULE_GPIO GPIOA -#define INTMODULE_GPIO_PinSource GPIO_PinSource10 -#define INTMODULE_GPIO_AF GPIO_AF_TIM1 +#define INTMODULE_PPM_GPIO GPIOA +#define INTMODULE_PPM_GPIO_PIN GPIO_Pin_10 // PA.10 +#define INTMODULE_PPM_GPIO_PinSource GPIO_PinSource10 +#define INTMODULE_PPM_GPIO_AF GPIO_AF_TIM1 #define INTMODULE_TIMER TIM1 +#define INTMODULE_TIMER_IRQn TIM1_CC_IRQn // External Module -#define EXTMODULE_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_DMA2) +#define EXTMODULE_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_DMA2) #define EXTMODULE_RCC_APB2Periph RCC_APB2Periph_TIM8 #define EXTMODULE_PWR_GPIO GPIOD -#define EXTMODULE_PWR_GPIO_PIN GPIO_Pin_8 -#define EXTMODULE_PPM_GPIO_PIN GPIO_Pin_7 // PA.07 -#define EXTMODULE_PPM_GPIO GPIOA +#define EXTMODULE_PWR_GPIO_PIN GPIO_Pin_8 // PD.08 +#define EXTMODULE_PPM_GPIO GPIOA +#define EXTMODULE_PPM_GPIO_PIN GPIO_Pin_7 // PA.07 #define EXTMODULE_TIMER TIM8 -#define EXTMODULE_PPM_GPIO_AF GPIO_AF_TIM8 -#define EXTMODULE_PPM_GPIO_PinSource GPIO_PinSource7 +#define EXTMODULE_PPM_GPIO_AF GPIO_AF_TIM8 +#define EXTMODULE_PPM_GPIO_PinSource GPIO_PinSource7 #define EXTMODULE_TIMER_IRQn TIM8_CC_IRQn // Trainer Port -#define TRAINER_RCC_AHB1Periph RCC_AHB1Periph_GPIOC +#define TRAINER_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOC) #define TRAINER_RCC_APB1Periph RCC_APB1Periph_TIM3 #define TRAINER_GPIO GPIOC #define TRAINER_GPIO_PIN_IN GPIO_Pin_8 // PC.08 @@ -380,11 +379,11 @@ // Telemetry #define TELEMETRY_RCC_AHB1Periph RCC_AHB1Periph_GPIOD #define TELEMETRY_GPIO_DIR GPIOD -#define TELEMETRY_GPIO_PIN_DIR GPIO_Pin_4 // PD.04 +#define TELEMETRY_DIR_GPIO_PIN GPIO_Pin_4 // PD.04 #define TELEMETRY_RCC_APB1Periph RCC_APB1Periph_USART2 #define TELEMETRY_GPIO GPIOD -#define TELEMETRY_GPIO_PIN_TX GPIO_Pin_5 // PD.05 -#define TELEMETRY_GPIO_PIN_RX GPIO_Pin_6 // PD.06 +#define TELEMETRY_TX_GPIO_PIN GPIO_Pin_5 // PD.05 +#define TELEMETRY_RX_GPIO_PIN GPIO_Pin_6 // PD.06 #define TELEMETRY_GPIO_PinSource_TX GPIO_PinSource5 #define TELEMETRY_GPIO_PinSource_RX GPIO_PinSource6 #define TELEMETRY_GPIO_AF GPIO_AF_USART2 diff --git a/radio/src/targets/taranis/pulses_driver.cpp b/radio/src/targets/taranis/pulses_driver.cpp index eae367b0e..356b4229b 100644 --- a/radio/src/targets/taranis/pulses_driver.cpp +++ b/radio/src/targets/taranis/pulses_driver.cpp @@ -153,14 +153,14 @@ static void intmoduleNoneStart() // Timer1, channel 3 GPIO_InitTypeDef GPIO_InitStructure; - GPIO_InitStructure.GPIO_Pin = INTMODULE_GPIO_PIN; + GPIO_InitStructure.GPIO_Pin = INTMODULE_PPM_GPIO_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT ; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; - GPIO_Init(INTMODULE_GPIO, &GPIO_InitStructure); + GPIO_Init(INTMODULE_PPM_GPIO, &GPIO_InitStructure); - GPIO_SetBits(INTMODULE_GPIO, INTMODULE_GPIO_PIN) ; // Set high + GPIO_SetBits(INTMODULE_PPM_GPIO, INTMODULE_PPM_GPIO_PIN) ; // Set high INTMODULE_TIMER->CR1 &= ~TIM_CR1_CEN ; INTMODULE_TIMER->ARR = 36000 ; // 18mS @@ -176,13 +176,13 @@ static void intmoduleNoneStart() INTMODULE_TIMER->SR &= ~TIM_SR_CC2IF ; // Clear flag INTMODULE_TIMER->DIER |= TIM_DIER_CC2IE ; // Enable this interrupt INTMODULE_TIMER->CR1 |= TIM_CR1_CEN ; - NVIC_EnableIRQ(TIM1_CC_IRQn) ; - NVIC_SetPriority(TIM1_CC_IRQn, 7); + NVIC_EnableIRQ(INTMODULE_TIMER_IRQn) ; + NVIC_SetPriority(INTMODULE_TIMER_IRQn, 7); } static void intmoduleNoneStop() { - NVIC_DisableIRQ(TIM1_CC_IRQn) ; + NVIC_DisableIRQ(INTMODULE_TIMER_IRQn) ; INTMODULE_TIMER->DIER &= ~TIM_DIER_CC2IE ; INTMODULE_TIMER->CR1 &= ~TIM_CR1_CEN ; } @@ -274,13 +274,13 @@ static void intmodulePxxStart() GPIO_InitTypeDef GPIO_InitStructure; - GPIO_PinAFConfig(INTMODULE_GPIO, INTMODULE_GPIO_PinSource, INTMODULE_GPIO_AF); - GPIO_InitStructure.GPIO_Pin = INTMODULE_GPIO_PIN; + GPIO_PinAFConfig(INTMODULE_PPM_GPIO, INTMODULE_PPM_GPIO_PinSource, INTMODULE_PPM_GPIO_AF); + GPIO_InitStructure.GPIO_Pin = INTMODULE_PPM_GPIO_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; - GPIO_Init(INTMODULE_GPIO, &GPIO_InitStructure); + GPIO_Init(INTMODULE_PPM_GPIO, &GPIO_InitStructure); INTMODULE_TIMER->CR1 &= ~TIM_CR1_CEN ; INTMODULE_TIMER->ARR = 18000 ; // 9mS @@ -308,14 +308,14 @@ static void intmodulePxxStart() INTMODULE_TIMER->SR &= ~TIM_SR_CC2IF ; // Clear flag INTMODULE_TIMER->DIER |= TIM_DIER_CC2IE ; // Enable this interrupt INTMODULE_TIMER->CR1 |= TIM_CR1_CEN ; - NVIC_EnableIRQ(TIM1_CC_IRQn); - NVIC_SetPriority(TIM1_CC_IRQn, 7); + NVIC_EnableIRQ(INTMODULE_TIMER_IRQn); + NVIC_SetPriority(INTMODULE_TIMER_IRQn, 7); } static void intmodulePxxStop() { DMA2_Stream6->CR &= ~DMA_SxCR_EN ; // Disable DMA - NVIC_DisableIRQ(TIM1_CC_IRQn) ; + NVIC_DisableIRQ(INTMODULE_TIMER_IRQn) ; INTMODULE_TIMER->DIER &= ~TIM_DIER_CC2IE ; INTMODULE_TIMER->CR1 &= ~TIM_CR1_CEN ; INTERNAL_MODULE_OFF(); @@ -330,7 +330,7 @@ static void intmodulePpmStart() INTERNAL_MODULE_ON(); // Timer1 - configure_pins(INTMODULE_GPIO_PIN, PIN_PERIPHERAL | PIN_PORTA | PIN_PER_1 | PIN_OS25); + configure_pins(INTMODULE_PPM_GPIO_PIN, PIN_PERIPHERAL | PIN_PORTA | PIN_PER_1 | PIN_OS25); INTMODULE_TIMER->CR1 &= ~TIM_CR1_CEN ; @@ -355,15 +355,15 @@ static void intmodulePpmStart() INTMODULE_TIMER->DIER |= TIM_DIER_UIE ; INTMODULE_TIMER->CR1 = TIM_CR1_CEN ; - NVIC_EnableIRQ(TIM1_CC_IRQn) ; - NVIC_SetPriority(TIM1_CC_IRQn, 7); + NVIC_EnableIRQ(INTMODULE_TIMER_IRQn) ; + NVIC_SetPriority(INTMODULE_TIMER_IRQn, 7); NVIC_EnableIRQ(TIM1_UP_TIM10_IRQn) ; NVIC_SetPriority(TIM1_UP_TIM10_IRQn, 7); } static void intmodulePpmStop() { - NVIC_DisableIRQ(TIM1_CC_IRQn) ; + NVIC_DisableIRQ(INTMODULE_TIMER_IRQn) ; NVIC_DisableIRQ(TIM1_UP_TIM10_IRQn) ; INTMODULE_TIMER->DIER &= ~TIM_DIER_CC2IE & ~TIM_DIER_UIE ; INTMODULE_TIMER->CR1 &= ~TIM_CR1_CEN ; @@ -416,7 +416,6 @@ void extmodulePxxStart() { EXTERNAL_MODULE_ON(); - // Timer8 setupPulsesPXX(EXTERNAL_MODULE); GPIO_InitTypeDef GPIO_InitStructure; @@ -430,7 +429,7 @@ void extmodulePxxStart() EXTMODULE_TIMER->CR1 &= ~TIM_CR1_CEN ; EXTMODULE_TIMER->ARR = 18000 ; // 9mS - EXTMODULE_TIMER->CCR2 = 15000 ; // Update time + EXTMODULE_TIMER->CCR2 = 15000 ; // Update time EXTMODULE_TIMER->PSC = (PERI2_FREQUENCY * TIMER_MULT_APB2) / 2000000 - 1 ; // 0.5uS from 30MHz EXTMODULE_TIMER->CCER = TIM_CCER_CC1NE ; EXTMODULE_TIMER->CR2 = TIM_CR2_OIS1 ; // O/P idle high @@ -449,8 +448,6 @@ void extmodulePxxStart() | DMA_SxCR_PSIZE_0 | DMA_SxCR_MINC | DMA_SxCR_DIR_0 | DMA_SxCR_PFCTRL ; DMA2_Stream2->PAR = CONVERT_PTR_UINT(&EXTMODULE_TIMER->DMAR); DMA2_Stream2->M0AR = CONVERT_PTR_UINT(&modulePulsesData[EXTERNAL_MODULE].pxx.pulses[1]); -// DMA2_Stream2->FCR = 0x05 ; //DMA_SxFCR_DMDIS | DMA_SxFCR_FTH_0 ; -// DMA2_Stream2->NDTR = 100 ; DMA2_Stream2->CR |= DMA_SxCR_EN ; // Enable DMA EXTMODULE_TIMER->CCMR1 = TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_0 ; // Toggle CC1 o/p @@ -533,14 +530,10 @@ static void extmoduleDsm2Stop() } #endif -// PPM output -// Timer 1, channel 1 on PA8 for prototype -// Pin is AF1 function for timer 1 static void extmodulePpmStart() { EXTERNAL_MODULE_ON(); - // Timer1 configure_pins(EXTMODULE_PPM_GPIO_PIN, PIN_PERIPHERAL | PIN_PORTA | PIN_PER_3 | PIN_OS25); EXTMODULE_TIMER->CR1 &= ~TIM_CR1_CEN ; diff --git a/radio/src/targets/taranis/pwr_driver.c b/radio/src/targets/taranis/pwr_driver.c index 7cb81186c..f190056eb 100644 --- a/radio/src/targets/taranis/pwr_driver.c +++ b/radio/src/targets/taranis/pwr_driver.c @@ -27,25 +27,22 @@ void pwrInit() // then the same changes must be done in _bootStart() GPIO_InitTypeDef GPIO_InitStructure; - GPIO_InitStructure.GPIO_Pin = PWR_GPIO_PIN_ON; + GPIO_InitStructure.GPIO_Pin = PWR_ON_GPIO_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(PWR_GPIO, &GPIO_InitStructure); - GPIO_InitStructure.GPIO_Pin = PWR_GPIO_PIN_SWITCH; + GPIO_InitStructure.GPIO_Pin = PWR_SWITCH_GPIO_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; GPIO_Init(PWR_GPIO, &GPIO_InitStructure); - - GPIO_InitStructure.GPIO_Pin = PWR_GPIO_PIN_LED; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; - GPIO_Init(PWR_GPIO_LED, &GPIO_InitStructure); - GPIO_ResetBits(INTMODULE_GPIO_PWR, INTMODULE_GPIO_PIN_PWR); - GPIO_InitStructure.GPIO_Pin = INTMODULE_GPIO_PIN_PWR; + // TODO not here + GPIO_ResetBits(INTMODULE_PWR_GPIO, INTMODULE_PWR_GPIO_PIN); + GPIO_InitStructure.GPIO_Pin = INTMODULE_PWR_GPIO_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; - GPIO_Init(INTMODULE_GPIO_PWR, &GPIO_InitStructure); + GPIO_Init(INTMODULE_PWR_GPIO, &GPIO_InitStructure); GPIO_ResetBits(EXTMODULE_PWR_GPIO, EXTMODULE_PWR_GPIO_PIN); GPIO_InitStructure.GPIO_Pin = EXTMODULE_PWR_GPIO_PIN; @@ -61,12 +58,12 @@ void pwrInit() void pwrOn() { - GPIO_SetBits(PWR_GPIO, PWR_GPIO_PIN_ON); + GPIO_SetBits(PWR_GPIO, PWR_ON_GPIO_PIN); } void pwrOff() { - GPIO_ResetBits(PWR_GPIO, PWR_GPIO_PIN_ON); + GPIO_ResetBits(PWR_GPIO, PWR_ON_GPIO_PIN); // disable interrupts __disable_irq(); @@ -96,7 +93,7 @@ void pwrOff() #if defined(REV9E) uint32_t pwrPressed() { - return GPIO_ReadInputDataBit(PWR_GPIO, PWR_GPIO_PIN_SWITCH) == Bit_RESET; + return GPIO_ReadInputDataBit(PWR_GPIO, PWR_SWITCH_GPIO_PIN) == Bit_RESET; } #endif @@ -106,7 +103,7 @@ uint32_t pwrCheck() #if defined(SIMU) return e_power_on; #else - if (GPIO_ReadInputDataBit(PWR_GPIO, PWR_GPIO_PIN_SWITCH) == Bit_RESET) + if (GPIO_ReadInputDataBit(PWR_GPIO, PWR_SWITCH_GPIO_PIN) == Bit_RESET) return e_power_on; else if (usbPlugged()) return e_power_usb; diff --git a/radio/src/targets/taranis/telemetry_driver.cpp b/radio/src/targets/taranis/telemetry_driver.cpp index 2730a146f..b49373bb3 100644 --- a/radio/src/targets/taranis/telemetry_driver.cpp +++ b/radio/src/targets/taranis/telemetry_driver.cpp @@ -1,23 +1,23 @@ -/* - * Copyright (C) OpenTX - * - * Based on code named - * th9x - http://code.google.com/p/th9x - * er9x - http://code.google.com/p/er9x - * gruvin9x - http://code.google.com/p/gruvin9x - * - * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - */ - +/* + * Copyright (C) OpenTX + * + * Based on code named + * th9x - http://code.google.com/p/th9x + * er9x - http://code.google.com/p/er9x + * gruvin9x - http://code.google.com/p/gruvin9x + * + * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + #include "../../opentx.h" extern Fifo<512> telemetryFifo; @@ -35,18 +35,18 @@ void telemetryPortInit(uint32_t baudrate) GPIO_PinAFConfig(TELEMETRY_GPIO, TELEMETRY_GPIO_PinSource_RX, TELEMETRY_GPIO_AF); GPIO_PinAFConfig(TELEMETRY_GPIO, TELEMETRY_GPIO_PinSource_TX, TELEMETRY_GPIO_AF); - GPIO_InitStructure.GPIO_Pin = TELEMETRY_GPIO_PIN_TX | TELEMETRY_GPIO_PIN_RX; + GPIO_InitStructure.GPIO_Pin = TELEMETRY_TX_GPIO_PIN | TELEMETRY_RX_GPIO_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(TELEMETRY_GPIO, &GPIO_InitStructure); - GPIO_InitStructure.GPIO_Pin = TELEMETRY_GPIO_PIN_DIR; + GPIO_InitStructure.GPIO_Pin = TELEMETRY_DIR_GPIO_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(TELEMETRY_GPIO_DIR, &GPIO_InitStructure); - GPIO_ResetBits(TELEMETRY_GPIO_DIR, TELEMETRY_GPIO_PIN_DIR); + GPIO_ResetBits(TELEMETRY_GPIO_DIR, TELEMETRY_DIR_GPIO_PIN); USART_InitStructure.USART_BaudRate = baudrate; USART_InitStructure.USART_WordLength = USART_WordLength_8b; @@ -71,7 +71,7 @@ struct SportTxBuffer void telemetryPortSetDirectionOutput() { - TELEMETRY_GPIO_DIR->BSRRL = TELEMETRY_GPIO_PIN_DIR; // output enable + TELEMETRY_GPIO_DIR->BSRRL = TELEMETRY_DIR_GPIO_PIN; // output enable TELEMETRY_USART->CR1 &= ~USART_CR1_RE; // turn off receiver } @@ -105,7 +105,7 @@ extern "C" void TELEMETRY_USART_IRQHandler() if ((status & USART_SR_TC) && (TELEMETRY_USART->CR1 & USART_CR1_TCIE)) { TELEMETRY_USART->CR1 &= ~USART_CR1_TCIE ; // stop Complete interrupt - TELEMETRY_GPIO_DIR->BSRRH = TELEMETRY_GPIO_PIN_DIR ; // output disable + TELEMETRY_GPIO_DIR->BSRRH = TELEMETRY_DIR_GPIO_PIN ; // output disable TELEMETRY_USART->CR1 |= USART_CR1_RE ; while (status & (USART_FLAG_RXNE)) { status = TELEMETRY_USART->DR; diff --git a/radio/src/targets/taranis/trainer_driver.cpp b/radio/src/targets/taranis/trainer_driver.cpp index a7f5db6bf..65893ff45 100644 --- a/radio/src/targets/taranis/trainer_driver.cpp +++ b/radio/src/targets/taranis/trainer_driver.cpp @@ -1,65 +1,64 @@ -/* - * Copyright (C) OpenTX - * - * Based on code named - * th9x - http://code.google.com/p/th9x - * er9x - http://code.google.com/p/er9x - * gruvin9x - http://code.google.com/p/gruvin9x - * - * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - */ - +/* + * Copyright (C) OpenTX + * + * Based on code named + * th9x - http://code.google.com/p/th9x + * er9x - http://code.google.com/p/er9x + * gruvin9x - http://code.google.com/p/gruvin9x + * + * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + #include "../../opentx.h" extern Fifo<32> sbusFifo; #define setupTrainerPulses() setupPulsesPPM(TRAINER_MODULE) -// Trainer PPM output PC9, Timer 3 channel 4, (Alternate Function 2) void init_trainer_ppm() { trainerPulsesData.ppm.ptr = trainerPulsesData.ppm.pulses; - configure_pins( TRAINER_GPIO_PIN_OUT, PIN_PERIPHERAL | PIN_PORTC | PIN_PER_2 | PIN_OS25) ; + configure_pins(TRAINER_GPIO_PIN_OUT, PIN_PERIPHERAL | PIN_PORTC | PIN_PER_2 | PIN_OS25); - TRAINER_TIMER->CR1 &= ~TIM_CR1_CEN ; + TRAINER_TIMER->CR1 &= ~TIM_CR1_CEN; // setupTrainerPulses() is also configuring registers, // so it has to be called after the peripheral is enabled - setupTrainerPulses() ; + setupTrainerPulses(); - TRAINER_TIMER->ARR = *trainerPulsesData.ppm.ptr++ ; - TRAINER_TIMER->PSC = (PERI1_FREQUENCY * TIMER_MULT_APB1) / 2000000 - 1 ; // 0.5uS - TRAINER_TIMER->CCMR2 = TIM_CCMR2_OC4M_1 | TIM_CCMR2_OC4M_2 | TIM_CCMR2_OC4PE ; // PWM mode 1 - TRAINER_TIMER->BDTR = TIM_BDTR_MOE ; - TRAINER_TIMER->EGR = 1 ; + TRAINER_TIMER->ARR = *trainerPulsesData.ppm.ptr++; + TRAINER_TIMER->PSC = (PERI1_FREQUENCY * TIMER_MULT_APB1) / 2000000 - 1; // 0.5uS + TRAINER_TIMER->CCMR2 = TIM_CCMR2_OC4M_1 | TIM_CCMR2_OC4M_2 | TIM_CCMR2_OC4PE; // PWM mode 1 + TRAINER_TIMER->BDTR = TIM_BDTR_MOE; + TRAINER_TIMER->EGR = 1; - TRAINER_TIMER->SR &= ~TIM_SR_UIF ; // Clear flag - TRAINER_TIMER->SR &= ~TIM_SR_CC1IF ; // Clear flag - TRAINER_TIMER->DIER |= TIM_DIER_CC1IE ; - TRAINER_TIMER->DIER |= TIM_DIER_UIE ; + TRAINER_TIMER->SR &= ~TIM_SR_UIF; // Clear flag + TRAINER_TIMER->SR &= ~TIM_SR_CC1IF; // Clear flag + TRAINER_TIMER->DIER |= TIM_DIER_CC1IE; + TRAINER_TIMER->DIER |= TIM_DIER_UIE; - TRAINER_TIMER->CR1 = TIM_CR1_CEN ; - NVIC_EnableIRQ(TRAINER_TIMER_IRQn) ; + TRAINER_TIMER->CR1 = TIM_CR1_CEN; + NVIC_EnableIRQ(TRAINER_TIMER_IRQn); NVIC_SetPriority(TRAINER_TIMER_IRQn, 7); } // TODO - testing void stop_trainer_ppm() { - configure_pins( TRAINER_GPIO_PIN_OUT, PIN_INPUT | PIN_PORTC ) ; // Pin as input - TRAINER_TIMER->DIER = 0 ; // Stop Interrupt - TRAINER_TIMER->CR1 &= ~TIM_CR1_CEN ; // Stop counter - NVIC_DisableIRQ(TRAINER_TIMER_IRQn) ; // Stop Interrupt + configure_pins( TRAINER_GPIO_PIN_OUT, PIN_INPUT | PIN_PORTC ); // Pin as input + TRAINER_TIMER->DIER = 0; // Stop Interrupt + TRAINER_TIMER->CR1 &= ~TIM_CR1_CEN; // Stop counter + NVIC_DisableIRQ(TRAINER_TIMER_IRQn); // Stop Interrupt } void set_trainer_ppm_parameters(uint32_t idleTime, uint32_t delay, uint32_t positive) @@ -82,44 +81,46 @@ void init_trainer_capture() GPIO_Init(TRAINER_GPIO, &GPIO_InitStructure); GPIO_PinAFConfig(TRAINER_GPIO, TRAINER_GPIO_PinSource_IN, TRAINER_GPIO_AF); - TRAINER_TIMER->ARR = 0xFFFF ; - TRAINER_TIMER->PSC = (PERI1_FREQUENCY * TIMER_MULT_APB1) / 2000000 - 1 ; // 0.5uS - TRAINER_TIMER->CR2 = 0 ; - TRAINER_TIMER->CCMR2 = TIM_CCMR2_IC3F_0 | TIM_CCMR2_IC3F_1 | TIM_CCMR2_CC3S_0 ; - TRAINER_TIMER->CCER = TIM_CCER_CC3E ; - TRAINER_TIMER->SR &= ~TIM_SR_CC3IF & ~TIM_SR_CC2IF & ~TIM_SR_UIF ; // Clear flags - TRAINER_TIMER->DIER |= TIM_DIER_CC3IE ; - TRAINER_TIMER->CR1 = TIM_CR1_CEN ; - NVIC_EnableIRQ(TRAINER_TIMER_IRQn) ; + TRAINER_TIMER->ARR = 0xFFFF; + TRAINER_TIMER->PSC = (PERI1_FREQUENCY * TIMER_MULT_APB1) / 2000000 - 1; // 0.5uS + TRAINER_TIMER->CR2 = 0; + TRAINER_TIMER->CCMR2 = TIM_CCMR2_IC3F_0 | TIM_CCMR2_IC3F_1 | TIM_CCMR2_CC3S_0; + TRAINER_TIMER->CCER = TIM_CCER_CC3E; + TRAINER_TIMER->SR &= ~TIM_SR_CC3IF & ~TIM_SR_CC2IF & ~TIM_SR_UIF; // Clear flags + TRAINER_TIMER->DIER |= TIM_DIER_CC3IE; + TRAINER_TIMER->CR1 = TIM_CR1_CEN; + NVIC_EnableIRQ(TRAINER_TIMER_IRQn); NVIC_SetPriority(TRAINER_TIMER_IRQn, 7); } void stop_trainer_capture() { - TRAINER_TIMER->CR1 &= ~TIM_CR1_CEN ; // Stop counter + TRAINER_TIMER->CR1 &= ~TIM_CR1_CEN; // Stop counter TRAINER_TIMER->DIER = 0; // Stop Interrupt - NVIC_DisableIRQ(TRAINER_TIMER_IRQn) ; // Stop Interrupt + NVIC_DisableIRQ(TRAINER_TIMER_IRQn); // Stop Interrupt } #if !defined(SIMU) extern "C" void TIM3_IRQHandler() { uint16_t capture = 0; - bool doCapture = false ; + bool doCapture = false; // What mode? in or out? if ( (TRAINER_TIMER->DIER & TIM_DIER_CC3IE ) && ( TRAINER_TIMER->SR & TIM_SR_CC3IF ) ) { // capture mode on trainer jack - capture = TRAINER_TIMER->CCR3 ; - if (TRAINER_CONNECTED() && currentTrainerMode == TRAINER_MODE_MASTER_TRAINER_JACK) + capture = TRAINER_TIMER->CCR3; + if (TRAINER_CONNECTED() && currentTrainerMode == TRAINER_MODE_MASTER_TRAINER_JACK) { doCapture = true; + } } if ( ( TRAINER_TIMER->DIER & TIM_DIER_CC2IE ) && ( TRAINER_TIMER->SR & TIM_SR_CC2IF ) ) { // capture mode on heartbeat pin (external module) - capture = TRAINER_TIMER->CCR2 ; - if (currentTrainerMode == TRAINER_MODE_MASTER_CPPM_EXTERNAL_MODULE) - doCapture = true ; + capture = TRAINER_TIMER->CCR2; + if (currentTrainerMode == TRAINER_MODE_MASTER_CPPM_EXTERNAL_MODULE) { + doCapture = true; + } } if (doCapture) { @@ -129,24 +130,24 @@ extern "C" void TIM3_IRQHandler() // PPM out compare interrupt if ( ( TRAINER_TIMER->DIER & TIM_DIER_CC1IE ) && ( TRAINER_TIMER->SR & TIM_SR_CC1IF ) ) { // compare interrupt - TRAINER_TIMER->DIER &= ~TIM_DIER_CC1IE ; // stop this interrupt - TRAINER_TIMER->SR &= ~TIM_SR_CC1IF ; // Clear flag + TRAINER_TIMER->DIER &= ~TIM_DIER_CC1IE; // stop this interrupt + TRAINER_TIMER->SR &= ~TIM_SR_CC1IF; // Clear flag - setupTrainerPulses() ; + setupTrainerPulses(); trainerPulsesData.ppm.ptr = trainerPulsesData.ppm.pulses; - TRAINER_TIMER->DIER |= TIM_DIER_UDE ; - TRAINER_TIMER->SR &= ~TIM_SR_UIF ; // Clear this flag - TRAINER_TIMER->DIER |= TIM_DIER_UIE ; // Enable this interrupt + TRAINER_TIMER->DIER |= TIM_DIER_UDE; + TRAINER_TIMER->SR &= ~TIM_SR_UIF; // Clear this flag + TRAINER_TIMER->DIER |= TIM_DIER_UIE; // Enable this interrupt } // PPM out update interrupt if ( (TRAINER_TIMER->DIER & TIM_DIER_UIE) && ( TRAINER_TIMER->SR & TIM_SR_UIF ) ) { - TRAINER_TIMER->SR &= ~TIM_SR_UIF ; // Clear flag - TRAINER_TIMER->ARR = *trainerPulsesData.ppm.ptr++ ; + TRAINER_TIMER->SR &= ~TIM_SR_UIF; // Clear flag + TRAINER_TIMER->ARR = *trainerPulsesData.ppm.ptr++; if ( *trainerPulsesData.ppm.ptr == 0 ) { - TRAINER_TIMER->SR &= ~TIM_SR_CC1IF ; // Clear this flag - TRAINER_TIMER->DIER |= TIM_DIER_CC1IE ; // Enable this interrupt + TRAINER_TIMER->SR &= ~TIM_SR_CC1IF; // Clear this flag + TRAINER_TIMER->DIER |= TIM_DIER_CC1IE; // Enable this interrupt } } } @@ -158,23 +159,23 @@ void init_cppm_on_heartbeat_capture(void) configure_pins(HEARTBEAT_GPIO_PIN, PIN_PERIPHERAL | PIN_PORTC | PIN_PER_2); - TRAINER_TIMER->ARR = 0xFFFF ; - TRAINER_TIMER->PSC = (PERI1_FREQUENCY * TIMER_MULT_APB1) / 2000000 - 1 ; // 0.5uS - TRAINER_TIMER->CR2 = 0 ; - TRAINER_TIMER->CCMR1 = TIM_CCMR1_IC2F_0 | TIM_CCMR1_IC2F_1 | TIM_CCMR1_CC2S_0 ; - TRAINER_TIMER->CCER = TIM_CCER_CC2E ; - TRAINER_TIMER->SR &= ~TIM_SR_CC2IF ; // Clear flag - TRAINER_TIMER->DIER |= TIM_DIER_CC2IE ; - TRAINER_TIMER->CR1 = TIM_CR1_CEN ; + TRAINER_TIMER->ARR = 0xFFFF; + TRAINER_TIMER->PSC = (PERI1_FREQUENCY * TIMER_MULT_APB1) / 2000000 - 1; // 0.5uS + TRAINER_TIMER->CR2 = 0; + TRAINER_TIMER->CCMR1 = TIM_CCMR1_IC2F_0 | TIM_CCMR1_IC2F_1 | TIM_CCMR1_CC2S_0; + TRAINER_TIMER->CCER = TIM_CCER_CC2E; + TRAINER_TIMER->SR &= ~TIM_SR_CC2IF; // Clear flag + TRAINER_TIMER->DIER |= TIM_DIER_CC2IE; + TRAINER_TIMER->CR1 = TIM_CR1_CEN; NVIC_SetPriority(TRAINER_TIMER_IRQn, 7); - NVIC_EnableIRQ(TRAINER_TIMER_IRQn) ; + NVIC_EnableIRQ(TRAINER_TIMER_IRQn); } void stop_cppm_on_heartbeat_capture(void) { - TRAINER_TIMER->DIER = 0 ; - TRAINER_TIMER->CR1 &= ~TIM_CR1_CEN ; // Stop counter - NVIC_DisableIRQ(TRAINER_TIMER_IRQn) ; // Stop Interrupt + TRAINER_TIMER->DIER = 0; + TRAINER_TIMER->CR1 &= ~TIM_CR1_CEN; // Stop counter + NVIC_DisableIRQ(TRAINER_TIMER_IRQn); // Stop Interrupt if (!IS_PULSES_EXTERNAL_MODULE()) { EXTERNAL_MODULE_OFF(); @@ -215,7 +216,7 @@ void init_sbus_on_heartbeat_capture() void stop_sbus_on_heartbeat_capture(void) { configure_pins(HEARTBEAT_GPIO_PIN, PIN_INPUT | PIN_PORTC); - NVIC_DisableIRQ(HEARTBEAT_USART_IRQn) ; + NVIC_DisableIRQ(HEARTBEAT_USART_IRQn); if (!IS_PULSES_EXTERNAL_MODULE()) { EXTERNAL_MODULE_OFF();