diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index 221658f52..9f6c08774 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -264,6 +264,11 @@ void generalDefault() #if defined(PCBTARANIS) g_eeGeneral.potsConfig = 0x05; // S1 and S2 = pots with detent +#endif + +#if defined(PCBTARANIS) && defined(REV9E) + g_eeGeneral.switchConfig = 0x00007fbf; // 6x3POS, 1x2POS, 1xTOGGLE +#elif defined(PCBTARANIS) g_eeGeneral.switchConfig = 0x00007bff; // 6x3POS, 1x2POS, 1xTOGGLE #endif diff --git a/radio/src/simu.cpp b/radio/src/simu.cpp index 6314600ce..e750fbe80 100644 --- a/radio/src/simu.cpp +++ b/radio/src/simu.cpp @@ -302,11 +302,11 @@ long Open9xSim::onTimeout(FXObject*, FXSelector, void*) SWITCH_KEY(A, 0, 3); SWITCH_KEY(B, 1, 3); SWITCH_KEY(C, 2, 3); - SWITCH_KEY(D, 3, 3); + SWITCH_KEY(D, 3, 2); SWITCH_KEY(E, 4, 3); SWITCH_KEY(F, 5, 3); SWITCH_KEY(G, 6, 3); - SWITCH_KEY(H, 7, 3); + SWITCH_KEY(H, 7, 2); SWITCH_KEY(I, 8, 3); SWITCH_KEY(J, 9, 3); SWITCH_KEY(K, 10, 3); diff --git a/radio/src/targets/gruvin9x/rtc_driver.cpp b/radio/src/targets/gruvin9x/rtc_driver.cpp index d1cb011b4..45b070cd6 100644 --- a/radio/src/targets/gruvin9x/rtc_driver.cpp +++ b/radio/src/targets/gruvin9x/rtc_driver.cpp @@ -234,7 +234,7 @@ int iic_write ( /*-------------------------------------------------*/ /* RTC functions */ -int g9x_rtc_gettime (RTC *rtc) +int g9x_rtcGetTime (RTC *rtc) { BYTE buf[8]; @@ -265,11 +265,11 @@ int g9x_rtcSetTime (const RTC *rtc) return iic_write(0xD0, 0, 7, buf); } -void rtc_gettime(struct gtm * utm) +void rtcGetTime(struct gtm * utm) { RTC rtc = {0,0,0,0,0,0,0}; - g9x_rtc_gettime(&rtc); + g9x_rtcGetTime(&rtc); utm->tm_year = rtc.year - 1900; utm->tm_mon = rtc.month - 1; @@ -316,7 +316,7 @@ void rtcInit (void) } struct gtm utm; - rtc_gettime(&utm); + rtcGetTime(&utm); g_rtcTime = gmktime(&utm); } diff --git a/radio/src/targets/simu/simpgmspace.cpp b/radio/src/targets/simu/simpgmspace.cpp index eb02f4a29..128c06316 100644 --- a/radio/src/targets/simu/simpgmspace.cpp +++ b/radio/src/targets/simu/simpgmspace.cpp @@ -196,11 +196,11 @@ void simuSetSwitch(uint8_t swtch, int8_t state) SWITCH_3_CASE(0, SWITCHES_GPIO_REG_A_L, SWITCHES_GPIO_REG_A_H, SWITCHES_GPIO_PIN_A_L, SWITCHES_GPIO_PIN_A_H) SWITCH_3_CASE(1, SWITCHES_GPIO_REG_B_L, SWITCHES_GPIO_REG_B_H, SWITCHES_GPIO_PIN_B_L, SWITCHES_GPIO_PIN_B_H) SWITCH_3_CASE(2, SWITCHES_GPIO_REG_C_L, SWITCHES_GPIO_REG_C_H, SWITCHES_GPIO_PIN_C_L, SWITCHES_GPIO_PIN_C_H) - SWITCH_3_CASE(3, SWITCHES_GPIO_REG_D_L, SWITCHES_GPIO_REG_D_H, SWITCHES_GPIO_PIN_D_L, SWITCHES_GPIO_PIN_D_H) + SWITCH_CASE(3, SWITCHES_GPIO_REG_D, SWITCHES_GPIO_PIN_D) SWITCH_3_CASE(4, SWITCHES_GPIO_REG_E_L, SWITCHES_GPIO_REG_E_H, SWITCHES_GPIO_PIN_E_L, SWITCHES_GPIO_PIN_E_H) SWITCH_3_CASE(5, SWITCHES_GPIO_REG_F_L, SWITCHES_GPIO_REG_F_H, SWITCHES_GPIO_PIN_F_L, SWITCHES_GPIO_PIN_F_H) SWITCH_3_CASE(6, SWITCHES_GPIO_REG_G_L, SWITCHES_GPIO_REG_G_H, SWITCHES_GPIO_PIN_G_L, SWITCHES_GPIO_PIN_G_H) - SWITCH_3_CASE(7, SWITCHES_GPIO_REG_H_L, SWITCHES_GPIO_REG_H_H, SWITCHES_GPIO_PIN_H_L, SWITCHES_GPIO_PIN_H_H) + SWITCH_CASE(7, SWITCHES_GPIO_REG_H, SWITCHES_GPIO_PIN_H) SWITCH_3_CASE(8, SWITCHES_GPIO_REG_I_L, SWITCHES_GPIO_REG_I_H, SWITCHES_GPIO_PIN_I_L, SWITCHES_GPIO_PIN_I_H) SWITCH_3_CASE(9, SWITCHES_GPIO_REG_J_L, SWITCHES_GPIO_REG_J_H, SWITCHES_GPIO_PIN_J_L, SWITCHES_GPIO_PIN_J_H) SWITCH_3_CASE(10, SWITCHES_GPIO_REG_K_L, SWITCHES_GPIO_REG_K_H, SWITCHES_GPIO_PIN_K_L, SWITCHES_GPIO_PIN_K_H) diff --git a/radio/src/targets/taranis/adc_driver.cpp b/radio/src/targets/taranis/adc_driver.cpp index ed0e0d6aa..ec0ff4669 100644 --- a/radio/src/targets/taranis/adc_driver.cpp +++ b/radio/src/targets/taranis/adc_driver.cpp @@ -41,28 +41,11 @@ #define PIN_PORTB 0x0100 #define PIN_PORTC 0x0200 -#define STICK_RV 0 -#define STICK_RH 1 -#define STICK_LH 2 -#define STICK_LV 3 -#define POT_L 6 -#define POT_R 8 -#define POT_XTRA 9 -#define SLIDE_L 14 -#define SLIDE_R 15 -#define BATTERY 10 - -#if defined(REV9E) -#define SLIDER_L2 8 // ADC_GPIO_PIN_POT3 (SLIDER3) = ANC3_IN8 -#define SLIDER_R2 7 // ADC_GPIO_PIN_POT4 (SLIDER4) = ADC3_IN7 -#define POT_4 6 // ADC_GPIO_PIN_POT5 (POT4) = ADC3_IN6 -#endif - // Sample time should exceed 1uS #define SAMPTIME 2 // sample time = 28 cycles #if defined(REV9E) - const int8_t ana_direction[NUMBER_ANALOG] = {1,-1,1,-1, -1,1,-1, -1,1, 1, -1,-1,1}; + const int8_t ana_direction[NUMBER_ANALOG] = {1,1,-1,1, -1,-1,-1,1, -1,1-1,-1, 1}; #elif defined(REVPLUS) const int8_t ana_direction[NUMBER_ANALOG] = {1,-1,1,-1, -1,1,-1, -1,1, 1}; #elif defined(REV4a) @@ -76,8 +59,8 @@ #define NUMBER_ANALOG_ADC3 3 // mapping from Analog_values order to enum Analogs const uint8_t ana_mapping[NUMBER_ANALOG] = { 0 /*STICK1*/, 1 /*STICK2*/, 2 /*STICK3*/, 3 /*STICK4*/, - 4 /*POT1*/, 5 /*POT2*/, 6 /*POT3*/, 12 /*POT4*/, - 7 /*SLIDER1*/, 8 /*SLIDER2*/, 10 /*SLIDER3*/, 11 /*SLIDER4*/, + 10 /*POT1*/, 4 /*POT2*/, 5 /*POT3*/, 6 /*POT4*/, + 11 /*SLIDER1*/, 12 /*SLIDER2*/, 7 /*SLIDER3*/, 8 /*SLIDER4*/, 9 /*TX_VOLTAGE*/ }; #else #define NUMBER_ANALOG_ADC1 10 @@ -87,28 +70,35 @@ uint16_t Analog_values[NUMBER_ANALOG]; void adcInit() { - RCC->APB2ENR |= RCC_APB2ENR_ADC1EN; // Enable clock + RCC->APB2ENR |= RCC_APB2ENR_ADC1EN; // Enable clock RCC->AHB1ENR |= ADC_AHB1Periph_GPIO; // Enable ports A&C clocks - RCC->AHB1ENR |= RCC_AHB1ENR_DMA2EN; // Enable DMA2 clock - - configure_pins(ADC_GPIO_PIN_STICK_RV | ADC_GPIO_PIN_STICK_RH | ADC_GPIO_PIN_STICK_LH | ADC_GPIO_PIN_STICK_LV | - ADC_GPIO_PIN_POT1, PIN_ANALOG | PIN_PORTA); + RCC->AHB1ENR |= RCC_AHB1ENR_DMA2EN; // Enable DMA2 clock #if defined(REV9E) - configure_pins(ADC_GPIO_PIN_POT2 | ADC_GPIO_PIN_POT6, PIN_ANALOG|PIN_PORTB); + configure_pins(ADC_GPIO_PIN_STICK_RV | ADC_GPIO_PIN_STICK_RH | ADC_GPIO_PIN_STICK_LH | ADC_GPIO_PIN_STICK_LV | ADC_GPIO_PIN_SLIDER3, PIN_ANALOG | PIN_PORTA); + configure_pins(ADC_GPIO_PIN_POT2 | ADC_GPIO_PIN_SLIDER4, PIN_ANALOG | PIN_PORTB); + configure_pins(ADC_GPIO_PIN_POT3 | ADC_GPIO_PIN_POT4 | ADC_GPIO_PIN_SLIDER1 | ADC_GPIO_PIN_SLIDER2 | ADC_GPIO_PIN_BATT, PIN_ANALOG | PIN_PORTC); + configure_pins(ADC_GPIO_PIN_POT1 | ADC_GPIO_PIN_SLIDER1 | ADC_GPIO_PIN_SLIDER2, PIN_ANALOG | PIN_PORTF); #elif defined(REVPLUS) - configure_pins(ADC_GPIO_PIN_POT2 | ADC_GPIO_PIN_POT3, PIN_ANALOG|PIN_PORTB); -#else - configure_pins(ADC_GPIO_PIN_POT2, PIN_ANALOG|PIN_PORTB); -#endif - + configure_pins(ADC_GPIO_PIN_STICK_RV | ADC_GPIO_PIN_STICK_RH | ADC_GPIO_PIN_STICK_LH | ADC_GPIO_PIN_STICK_LV | ADC_GPIO_PIN_POT1, PIN_ANALOG | PIN_PORTA); + configure_pins(ADC_GPIO_PIN_POT2 | ADC_GPIO_PIN_POT3, PIN_ANALOG | PIN_PORTB); configure_pins(ADC_GPIO_PIN_SLIDER1 | ADC_GPIO_PIN_SLIDER2 | ADC_GPIO_PIN_BATT, PIN_ANALOG | PIN_PORTC); +#else + configure_pins(ADC_GPIO_PIN_STICK_RV | ADC_GPIO_PIN_STICK_RH | ADC_GPIO_PIN_STICK_LH | ADC_GPIO_PIN_STICK_LV | ADC_GPIO_PIN_POT1, PIN_ANALOG | PIN_PORTA); + configure_pins(ADC_GPIO_PIN_POT2, PIN_ANALOG|PIN_PORTB); + configure_pins(ADC_GPIO_PIN_SLIDER1 | ADC_GPIO_PIN_SLIDER2 | ADC_GPIO_PIN_BATT, PIN_ANALOG | PIN_PORTC); +#endif ADC1->CR1 = ADC_CR1_SCAN; ADC1->CR2 = ADC_CR2_ADON | ADC_CR2_DMA | ADC_CR2_DDS; ADC1->SQR1 = (NUMBER_ANALOG_ADC1-1) << 20 ; // bits 23:20 = number of conversions - ADC1->SQR2 = (POT_XTRA<<0) + (SLIDE_L<<5) + (SLIDE_R<<10) + (BATTERY<<15); // conversions 7 and more - ADC1->SQR3 = (STICK_LH<<0) + (STICK_LV<<5) + (STICK_RV<<10) + (STICK_RH<<15) + (POT_L<<20) + (POT_R<<25); // conversions 1 to 6 +#if defined(REV9E) + ADC1->SQR2 = (ADC_CHANNEL_POT4<<0) + (ADC_CHANNEL_SLIDER3<<5) + (ADC_CHANNEL_SLIDER4<<10) + (ADC_CHANNEL_BATT<<15); // conversions 7 and more + ADC1->SQR3 = (ADC_CHANNEL_STICK_LH<<0) + (ADC_CHANNEL_STICK_LV<<5) + (ADC_CHANNEL_STICK_RV<<10) + (ADC_CHANNEL_STICK_RH<<15) + (ADC_CHANNEL_POT2<<20) + (ADC_CHANNEL_POT3<<25); // conversions 1 to 6 +#else + ADC1->SQR2 = (ADC_CHANNEL_POT3<<0) + (SLIDER1<<5) + (SLIDER2<<10) + (BATTERY<<15); // conversions 7 and more + ADC1->SQR3 = (ADC_CHANNEL_STICK_LH<<0) + (ADC_CHANNEL_STICK_LV<<5) + (ADC_CHANNEL_STICK_RV<<10) + (ADC_CHANNEL_STICK_RH<<15) + (ADC_CHANNEL_POT1<<20) + (ADC_CHANNEL_POT2<<25); // conversions 1 to 6 +#endif ADC1->SMPR1 = SAMPTIME + (SAMPTIME<<3) + (SAMPTIME<<6) + (SAMPTIME<<9) + (SAMPTIME<<12) + (SAMPTIME<<15) + (SAMPTIME<<18) + (SAMPTIME<<21) + (SAMPTIME<<24); ADC1->SMPR2 = SAMPTIME + (SAMPTIME<<3) + (SAMPTIME<<6) + (SAMPTIME<<9) + (SAMPTIME<<12) + (SAMPTIME<<15) + (SAMPTIME<<18) + (SAMPTIME<<21) + (SAMPTIME<<24) + (SAMPTIME<<27) ; @@ -122,13 +112,12 @@ void adcInit() #if defined(REV9E) RCC->APB2ENR |= RCC_APB2ENR_ADC3EN ; // Enable clock - configure_pins( ADC_GPIO_PIN_POT3 | ADC_GPIO_PIN_POT4 | ADC_GPIO_PIN_POT5, PIN_ANALOG | PIN_PORTF ) ; ADC3->CR1 = ADC_CR1_SCAN ; ADC3->CR2 = ADC_CR2_ADON | ADC_CR2_DMA | ADC_CR2_DDS ; ADC3->SQR1 = (NUMBER_ANALOG_ADC3-1) << 20 ; // NUMBER_ANALOG Channels ADC3->SQR2 = 0; - ADC3->SQR3 = (SLIDER_L2<<0) + (SLIDER_R2<<5) + (POT_4<<10) ; // conversions 1 to 3 + ADC3->SQR3 = (ADC_CHANNEL_POT1<<0) + (ADC_CHANNEL_SLIDER1<<5) + (ADC_CHANNEL_SLIDER2<<10) ; // conversions 1 to 3 ADC3->SMPR1 = SAMPTIME + (SAMPTIME<<3) + (SAMPTIME<<6); ADC3->SMPR2 = 0; diff --git a/radio/src/targets/taranis/board_taranis.h b/radio/src/targets/taranis/board_taranis.h index eb52fdd55..7826613bf 100644 --- a/radio/src/targets/taranis/board_taranis.h +++ b/radio/src/targets/taranis/board_taranis.h @@ -47,6 +47,7 @@ extern "C" { #include "STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h" #include "STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_rcc.h" #include "STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_gpio.h" + #include "STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_adc.h" #include "STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_spi.h" #include "STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_i2c.h" #include "STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_rtc.h" @@ -60,6 +61,7 @@ extern "C" { #include "STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Include/stm32f2xx.h" #include "STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_rcc.h" #include "STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_gpio.h" + #include "STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_adc.h" #include "STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_spi.h" #include "STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_i2c.h" #include "STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc/stm32f2xx_rtc.h" diff --git a/radio/src/targets/taranis/hal.h b/radio/src/targets/taranis/hal.h index abd7775fc..439119b4b 100644 --- a/radio/src/targets/taranis/hal.h +++ b/radio/src/targets/taranis/hal.h @@ -2,25 +2,22 @@ #define _HAL_ // Keys -#if defined(REV9E) - #define KEYS_RCC_AHB1Periph_GPIO (RCC_AHB1Periph_GPIOA|RCC_AHB1Periph_GPIOB|RCC_AHB1Periph_GPIOC|RCC_AHB1Periph_GPIOD|RCC_AHB1Periph_GPIOE|RCC_AHB1Periph_GPIOF|RCC_AHB1Periph_GPIOG) -#else - #define KEYS_RCC_AHB1Periph_GPIO (RCC_AHB1Periph_GPIOA|RCC_AHB1Periph_GPIOB|RCC_AHB1Periph_GPIOC|RCC_AHB1Periph_GPIOD|RCC_AHB1Periph_GPIOE) -#endif -#define KEYS_GPIO_REG_PLUS GPIOE->IDR -#define KEYS_GPIO_REG_MINUS GPIOE->IDR #define KEYS_GPIO_REG_MENU GPIOD->IDR #define KEYS_GPIO_REG_EXIT GPIOD->IDR #define KEYS_GPIO_REG_PAGE GPIOD->IDR #if defined(REV9E) #if defined(SIMU) + #define KEYS_GPIO_REG_PLUS GPIOE->IDR #define KEYS_GPIO_PIN_PLUS GPIO_Pin_5 // This is for SIMU: reuse rotary encoder pins to map UP and DOWN keyboard keys + #define KEYS_GPIO_REG_MINUS GPIOE->IDR #define KEYS_GPIO_PIN_MINUS GPIO_Pin_6 // This is for SIMU: reuse rotary encoder pins to map UP and DOWN keyboard keys #endif #define KEYS_GPIO_REG_ENTER GPIOF->IDR #define KEYS_GPIO_PIN_ENTER GPIO_Pin_0 // PF.00 #else + #define KEYS_GPIO_REG_PLUS GPIOE->IDR #define KEYS_GPIO_PIN_PLUS GPIO_Pin_10 // PE.10 + #define KEYS_GPIO_REG_MINUS GPIOE->IDR #define KEYS_GPIO_PIN_MINUS GPIO_Pin_11 // PE.11 #define KEYS_GPIO_REG_ENTER GPIOE->IDR #define KEYS_GPIO_PIN_ENTER GPIO_Pin_12 // PE.12 @@ -30,14 +27,6 @@ #define KEYS_GPIO_PIN_EXIT GPIO_Pin_2 // PD.03 // Trims -#define TRIMS_GPIO_REG_RVD GPIOC->IDR -#define TRIMS_GPIO_PIN_RVD GPIO_Pin_3 // PC.03 -#define TRIMS_GPIO_REG_RVU GPIOC->IDR -#define TRIMS_GPIO_PIN_RVU GPIO_Pin_2 // PC.02 -#define TRIMS_GPIO_REG_RHL GPIOC->IDR -#define TRIMS_GPIO_PIN_RHL GPIO_Pin_1 // PC.01 -#define TRIMS_GPIO_REG_RHR GPIOC->IDR -#define TRIMS_GPIO_PIN_RHR GPIO_Pin_13 // PC.13 #define TRIMS_GPIO_REG_LHL GPIOE->IDR #define TRIMS_GPIO_PIN_LHL GPIO_Pin_4 // PE.04 #define TRIMS_GPIO_REG_LHR GPIOE->IDR @@ -47,33 +36,73 @@ #define TRIMS_GPIO_PIN_LVD GPIO_Pin_1 // PG.01 #define TRIMS_GPIO_REG_LVU GPIOG->IDR #define TRIMS_GPIO_PIN_LVU GPIO_Pin_0 // PG.00 + #define TRIMS_GPIO_REG_RHL GPIOC->IDR + #define TRIMS_GPIO_PIN_RHL GPIO_Pin_3 // PC.03 + #define TRIMS_GPIO_REG_RVD GPIOC->IDR + #define TRIMS_GPIO_PIN_RVD GPIO_Pin_1 // PC.01 + #define TRIMS_GPIO_REG_RHR GPIOC->IDR + #define TRIMS_GPIO_PIN_RHR GPIO_Pin_2 // PC.02 + #define TRIMS_GPIO_REG_RVU GPIOC->IDR + #define TRIMS_GPIO_PIN_RVU GPIO_Pin_13 // PC.13 #else #define TRIMS_GPIO_REG_LVD GPIOE->IDR #define TRIMS_GPIO_PIN_LVD GPIO_Pin_6 // PE.06 #define TRIMS_GPIO_REG_LVU GPIOE->IDR #define TRIMS_GPIO_PIN_LVU GPIO_Pin_5 // PE.05 + #define TRIMS_GPIO_REG_RVD GPIOC->IDR + #define TRIMS_GPIO_PIN_RVD GPIO_Pin_3 // PC.03 + #define TRIMS_GPIO_REG_RHL GPIOC->IDR + #define TRIMS_GPIO_PIN_RHL GPIO_Pin_1 // PC.01 + #define TRIMS_GPIO_REG_RVU GPIOC->IDR + #define TRIMS_GPIO_PIN_RVU GPIO_Pin_2 // PC.02 + #define TRIMS_GPIO_REG_RHR GPIOC->IDR + #define TRIMS_GPIO_PIN_RHR GPIO_Pin_13 // PC.13 #endif // Switches -#define SWITCHES_GPIO_REG_A_H GPIOB->IDR -#define SWITCHES_GPIO_PIN_A_H GPIO_Pin_5 // PB.05 -#define SWITCHES_GPIO_REG_A_L GPIOE->IDR -#define SWITCHES_GPIO_PIN_A_L GPIO_Pin_0 // PE.00 +#if defined(REV9E) + #define SWITCHES_GPIO_REG_A_H GPIOE->IDR + #define SWITCHES_GPIO_PIN_A_H GPIO_Pin_7 // PE.07 + #define SWITCHES_GPIO_REG_A_L GPIOE->IDR + #define SWITCHES_GPIO_PIN_A_L GPIO_Pin_13 // PE.13 +#else + #define SWITCHES_GPIO_REG_A_H GPIOB->IDR + #define SWITCHES_GPIO_PIN_A_H GPIO_Pin_5 // PB.05 + #define SWITCHES_GPIO_REG_A_L GPIOE->IDR + #define SWITCHES_GPIO_PIN_A_L GPIO_Pin_0 // PE.00 +#endif -#define SWITCHES_GPIO_REG_B_H GPIOE->IDR -#define SWITCHES_GPIO_PIN_B_H GPIO_Pin_1 // PE.01 -#define SWITCHES_GPIO_REG_B_L GPIOE->IDR -#define SWITCHES_GPIO_PIN_B_L GPIO_Pin_2 // PE.02 +#if defined(REV9E) + #define SWITCHES_GPIO_REG_B_H GPIOD->IDR + #define SWITCHES_GPIO_PIN_B_H GPIO_Pin_10 // PD.10 + #define SWITCHES_GPIO_REG_B_L GPIOD->IDR + #define SWITCHES_GPIO_PIN_B_L GPIO_Pin_14 // PD.14 +#else + #define SWITCHES_GPIO_REG_B_H GPIOE->IDR + #define SWITCHES_GPIO_PIN_B_H GPIO_Pin_1 // PE.01 + #define SWITCHES_GPIO_REG_B_L GPIOE->IDR + #define SWITCHES_GPIO_PIN_B_L GPIO_Pin_2 // PE.02 +#endif -#define SWITCHES_GPIO_REG_C_H GPIOE->IDR -#define SWITCHES_GPIO_PIN_C_H GPIO_Pin_15 // PE.15 -#define SWITCHES_GPIO_REG_C_L GPIOA->IDR -#define SWITCHES_GPIO_PIN_C_L GPIO_Pin_5 // PA.05 +#if defined(REV9E) + #define SWITCHES_GPIO_REG_C_H GPIOG->IDR + #define SWITCHES_GPIO_PIN_C_H GPIO_Pin_11 // PG.11 + #define SWITCHES_GPIO_REG_C_L GPIOG->IDR + #define SWITCHES_GPIO_PIN_C_L GPIO_Pin_10 // PG.10 +#else + #define SWITCHES_GPIO_REG_C_H GPIOE->IDR + #define SWITCHES_GPIO_PIN_C_H GPIO_Pin_15 // PE.15 + #define SWITCHES_GPIO_REG_C_L GPIOA->IDR + #define SWITCHES_GPIO_PIN_C_L GPIO_Pin_5 // PA.05 +#endif -#if defined(REVPLUS) - #define SWITCHES_GPIO_REG_D_H (GPIOE->IDR) +#if defined(REV9E) + #define SWITCHES_GPIO_REG_D GPIOE->IDR + #define SWITCHES_GPIO_PIN_D GPIO_Pin_11 // PE.11 +#elif defined(REVPLUS) + #define SWITCHES_GPIO_REG_D_H GPIOE->IDR #define SWITCHES_GPIO_PIN_D_H GPIO_Pin_7 // PE.07 - #define SWITCHES_GPIO_REG_D_L (GPIOE->IDR) + #define SWITCHES_GPIO_REG_D_L GPIOE->IDR #define SWITCHES_GPIO_PIN_D_L GPIO_Pin_13 // PE.13 #else #define SWITCHES_GPIO_REG_D_H GPIOE->IDR @@ -82,31 +111,43 @@ #define SWITCHES_GPIO_PIN_D_L GPIO_Pin_1 // PB.01 #endif -#define SWITCHES_GPIO_REG_E_L GPIOB->IDR -#define SWITCHES_GPIO_PIN_E_L GPIO_Pin_3 // PB.03 -#define SWITCHES_GPIO_REG_E_H GPIOB->IDR -#define SWITCHES_GPIO_PIN_E_H GPIO_Pin_4 // PB.04 +#if defined(REV9E) + #define SWITCHES_GPIO_REG_E_H GPIOF->IDR + #define SWITCHES_GPIO_PIN_E_H GPIO_Pin_3 // PF.03 + #define SWITCHES_GPIO_REG_E_L GPIOF->IDR + #define SWITCHES_GPIO_PIN_E_L GPIO_Pin_4 // PF.04 +#else + #define SWITCHES_GPIO_REG_E_L GPIOB->IDR + #define SWITCHES_GPIO_PIN_E_L GPIO_Pin_3 // PB.03 + #define SWITCHES_GPIO_REG_E_H GPIOB->IDR + #define SWITCHES_GPIO_PIN_E_H GPIO_Pin_4 // PB.04 +#endif #if defined(REV9E) - #define SWITCHES_GPIO_REG_F_L GPIOF->IDR - #define SWITCHES_GPIO_PIN_F_L GPIO_Pin_15 // PF.15 + #define SWITCHES_GPIO_REG_F_L GPIOE->IDR + #define SWITCHES_GPIO_PIN_F_L GPIO_Pin_1 // PE.01 #define SWITCHES_GPIO_REG_F_H GPIOE->IDR - #define SWITCHES_GPIO_PIN_F_H GPIO_Pin_14 // PE.14 + #define SWITCHES_GPIO_PIN_F_H GPIO_Pin_2 // PE.02 #else #define SWITCHES_GPIO_REG_F GPIOE->IDR #define SWITCHES_GPIO_PIN_F GPIO_Pin_14 // PE.14 #endif -#define SWITCHES_GPIO_REG_G_H GPIOE->IDR -#define SWITCHES_GPIO_PIN_G_H GPIO_Pin_9 // PE.09 -#define SWITCHES_GPIO_REG_G_L GPIOE->IDR -#define SWITCHES_GPIO_PIN_G_L GPIO_Pin_8 // PE.08 +#if defined(REV9E) + #define SWITCHES_GPIO_REG_G_H GPIOF->IDR + #define SWITCHES_GPIO_PIN_G_H GPIO_Pin_13 // PF.13 + #define SWITCHES_GPIO_REG_G_L GPIOF->IDR + #define SWITCHES_GPIO_PIN_G_L GPIO_Pin_14 // PF.14 +#else + #define SWITCHES_GPIO_REG_G_H GPIOE->IDR + #define SWITCHES_GPIO_PIN_G_H GPIO_Pin_9 // PE.09 + #define SWITCHES_GPIO_REG_G_L GPIOE->IDR + #define SWITCHES_GPIO_PIN_G_L GPIO_Pin_8 // PE.08 +#endif #if defined(REV9E) - #define SWITCHES_GPIO_REG_H_H GPIOD->IDR - #define SWITCHES_GPIO_PIN_H_H GPIO_Pin_10 // PD.10 - #define SWITCHES_GPIO_REG_H_L GPIOD->IDR - #define SWITCHES_GPIO_PIN_H_L GPIO_Pin_14 // PD.14 + #define SWITCHES_GPIO_REG_H GPIOF->IDR + #define SWITCHES_GPIO_PIN_H GPIO_Pin_1 // PF.01 #elif defined(REVPLUS) #define SWITCHES_GPIO_REG_H GPIOD->IDR #define SWITCHES_GPIO_PIN_H GPIO_Pin_14 // PD.14 @@ -117,45 +158,70 @@ #if defined(REV9E) #define SWITCHES_GPIO_REG_I_H GPIOF->IDR - #define SWITCHES_GPIO_PIN_I_H GPIO_Pin_1 // PF.01 - #define SWITCHES_GPIO_REG_I_L GPIOF->IDR - #define SWITCHES_GPIO_PIN_I_L GPIO_Pin_2 // PF.02 - #define SWITCHES_GPIO_REG_J_H GPIOF->IDR - #define SWITCHES_GPIO_PIN_J_H GPIO_Pin_3 // PF.03 - #define SWITCHES_GPIO_REG_J_L GPIOF->IDR - #define SWITCHES_GPIO_PIN_J_L GPIO_Pin_4 // PF.04 - #define SWITCHES_GPIO_REG_K_H GPIOF->IDR - #define SWITCHES_GPIO_PIN_K_H GPIO_Pin_5 // PF.05 - #define SWITCHES_GPIO_REG_K_L GPIOF->IDR - #define SWITCHES_GPIO_PIN_K_L GPIO_Pin_6 // PF.06 - #define SWITCHES_GPIO_REG_L_H GPIOF->IDR - #define SWITCHES_GPIO_PIN_L_H GPIO_Pin_7 // PF.07 + #define SWITCHES_GPIO_PIN_I_H GPIO_Pin_15 // PF.15 + #define SWITCHES_GPIO_REG_I_L GPIOE->IDR + #define SWITCHES_GPIO_PIN_I_L GPIO_Pin_14 // PE.14 + #define SWITCHES_GPIO_REG_J_H GPIOG->IDR + #define SWITCHES_GPIO_PIN_J_H GPIO_Pin_7 // PG.07 + #define SWITCHES_GPIO_REG_J_L GPIOG->IDR + #define SWITCHES_GPIO_PIN_J_L GPIO_Pin_8 // PG.08 + #define SWITCHES_GPIO_REG_K_H GPIOG->IDR + #define SWITCHES_GPIO_PIN_K_H GPIO_Pin_13 // PG.13 + #define SWITCHES_GPIO_REG_K_L GPIOG->IDR + #define SWITCHES_GPIO_PIN_K_L GPIO_Pin_12 // PG.12 + #define SWITCHES_GPIO_REG_L_H GPIOE->IDR + #define SWITCHES_GPIO_PIN_L_H GPIO_Pin_9 // PE.09 #define SWITCHES_GPIO_REG_L_L GPIOE->IDR - #define SWITCHES_GPIO_PIN_L_L GPIO_Pin_10 // PE.10 - #define SWITCHES_GPIO_REG_M_H GPIOF->IDR - #define SWITCHES_GPIO_PIN_M_H GPIO_Pin_11 // PF.11 - #define SWITCHES_GPIO_REG_M_L GPIOF->IDR - #define SWITCHES_GPIO_PIN_M_L GPIO_Pin_12 // PF.12 - #define SWITCHES_GPIO_REG_N_H GPIOF->IDR - #define SWITCHES_GPIO_PIN_N_H GPIO_Pin_13 // PF.13 - #define SWITCHES_GPIO_REG_N_L GPIOF->IDR - #define SWITCHES_GPIO_PIN_N_L GPIO_Pin_14 // PF.14 - #define SWITCHES_GPIO_REG_O_H GPIOG->IDR - #define SWITCHES_GPIO_PIN_O_H GPIO_Pin_13 // PG.13 - #define SWITCHES_GPIO_REG_O_L GPIOG->IDR - #define SWITCHES_GPIO_PIN_O_L GPIO_Pin_12 // PG.12 - #define SWITCHES_GPIO_REG_P_H GPIOG->IDR - #define SWITCHES_GPIO_PIN_P_H GPIO_Pin_11 // PG.11 - #define SWITCHES_GPIO_REG_P_L GPIOG->IDR - #define SWITCHES_GPIO_PIN_P_L GPIO_Pin_10 // PG.10 - #define SWITCHES_GPIO_REG_Q_H GPIOE->IDR - #define SWITCHES_GPIO_PIN_Q_H GPIO_Pin_11 // PE.11 - #define SWITCHES_GPIO_REG_Q_L GPIOE->IDR - #define SWITCHES_GPIO_PIN_Q_L GPIO_Pin_12 // PE.12 - #define SWITCHES_GPIO_REG_R_H GPIOG->IDR - #define SWITCHES_GPIO_PIN_R_H GPIO_Pin_7 // PG.07 - #define SWITCHES_GPIO_REG_R_L GPIOG->IDR - #define SWITCHES_GPIO_PIN_R_L GPIO_Pin_8 // PG.08 + #define SWITCHES_GPIO_PIN_L_L GPIO_Pin_8 // PE.08 + #define SWITCHES_GPIO_REG_M_H GPIOE->IDR + #define SWITCHES_GPIO_PIN_M_H GPIO_Pin_15 // PE.15 + #define SWITCHES_GPIO_REG_M_L GPIOA->IDR + #define SWITCHES_GPIO_PIN_M_L GPIO_Pin_12 // PA.04 + #define SWITCHES_GPIO_REG_N_H GPIOB->IDR + #define SWITCHES_GPIO_PIN_N_H GPIO_Pin_3 // PB.03 + #define SWITCHES_GPIO_REG_N_L GPIOB->IDR + #define SWITCHES_GPIO_PIN_N_L GPIO_Pin_4 // PB.04 + #define SWITCHES_GPIO_REG_O_H GPIOF->IDR + #define SWITCHES_GPIO_PIN_O_H GPIO_Pin_11 // PF.11 + #define SWITCHES_GPIO_REG_O_L GPIOF->IDR + #define SWITCHES_GPIO_PIN_O_L GPIO_Pin_12 // PF.12 + #define SWITCHES_GPIO_REG_P_H GPIOE->IDR + #define SWITCHES_GPIO_PIN_P_H GPIO_Pin_1 // PE.01 + #define SWITCHES_GPIO_REG_P_L GPIOE->IDR + #define SWITCHES_GPIO_PIN_P_L GPIO_Pin_2 // PE.02 + #define SWITCHES_GPIO_REG_Q_H GPIOF->IDR + #define SWITCHES_GPIO_PIN_Q_H GPIO_Pin_5 // PF.05 + #define SWITCHES_GPIO_REG_Q_L GPIOF->IDR + #define SWITCHES_GPIO_PIN_Q_L GPIO_Pin_6 // PF.06 + #define SWITCHES_GPIO_REG_R_H GPIOB->IDR + #define SWITCHES_GPIO_PIN_R_H GPIO_Pin_5 // PB.05 + #define SWITCHES_GPIO_REG_R_L GPIOE->IDR + #define SWITCHES_GPIO_PIN_R_L GPIO_Pin_0 // PE.00 +#endif + +#if defined(REV9E) + #define KEYS_RCC_AHB1Periph_GPIO (RCC_AHB1Periph_GPIOA|RCC_AHB1Periph_GPIOB|RCC_AHB1Periph_GPIOC|RCC_AHB1Periph_GPIOD|RCC_AHB1Periph_GPIOE|RCC_AHB1Periph_GPIOF|RCC_AHB1Periph_GPIOG) + #define KEYS_GPIOA_PINS (SWITCHES_GPIO_PIN_M_L) + #define KEYS_GPIOB_PINS (SWITCHES_GPIO_PIN_N_H | SWITCHES_GPIO_PIN_N_L | SWITCHES_GPIO_PIN_R_H) + #define KEYS_GPIOC_PINS (TRIMS_GPIO_PIN_RVD | TRIMS_GPIO_PIN_RVU | TRIMS_GPIO_PIN_RHL | TRIMS_GPIO_PIN_RHR) + #define KEYS_GPIOD_PINS (KEYS_GPIO_PIN_MENU | KEYS_GPIO_PIN_EXIT | KEYS_GPIO_PIN_PAGE | SWITCHES_GPIO_PIN_B_H | SWITCHES_GPIO_PIN_B_L) + #define KEYS_GPIOE_PINS (TRIMS_GPIO_PIN_LHR | TRIMS_GPIO_PIN_LHL | SWITCHES_GPIO_PIN_A_H | SWITCHES_GPIO_REG_A_L | SWITCHES_GPIO_PIN_D | SWITCHES_GPIO_PIN_F_L | SWITCHES_GPIO_PIN_F_H | SWITCHES_GPIO_PIN_I_L | SWITCHES_GPIO_PIN_L_H | SWITCHES_GPIO_PIN_L_L | SWITCHES_GPIO_PIN_M_H | SWITCHES_GPIO_PIN_P_H | SWITCHES_GPIO_PIN_P_L | SWITCHES_GPIO_PIN_R_L) + #define KEYS_GPIOF_PINS (KEYS_GPIO_PIN_ENTER | SWITCHES_GPIO_PIN_E_H | SWITCHES_GPIO_PIN_E_L | SWITCHES_GPIO_PIN_G_H | SWITCHES_GPIO_PIN_G_L | SWITCHES_GPIO_PIN_H | SWITCHES_GPIO_PIN_I_H | SWITCHES_GPIO_PIN_O_H | SWITCHES_GPIO_PIN_O_L | SWITCHES_GPIO_PIN_Q_H | SWITCHES_GPIO_PIN_Q_L) + #define KEYS_GPIOG_PINS (TRIMS_GPIO_PIN_LVD | TRIMS_GPIO_PIN_LVU | SWITCHES_GPIO_PIN_C_H | SWITCHES_GPIO_PIN_C_L | SWITCHES_GPIO_PIN_J_H | SWITCHES_GPIO_PIN_J_L | SWITCHES_GPIO_PIN_K_H | SWITCHES_GPIO_PIN_K_L) +#elif defined(REVPLUS) + #define KEYS_RCC_AHB1Periph_GPIO (RCC_AHB1Periph_GPIOA|RCC_AHB1Periph_GPIOB|RCC_AHB1Periph_GPIOC|RCC_AHB1Periph_GPIOD|RCC_AHB1Periph_GPIOE) + #define KEYS_GPIOA_PINS (SWITCHES_GPIO_PIN_C_L) + #define KEYS_GPIOB_PINS (SWITCHES_GPIO_PIN_E_L | SWITCHES_GPIO_PIN_E_H | SWITCHES_GPIO_PIN_A_H) + #define KEYS_GPIOC_PINS (TRIMS_GPIO_PIN_RVD | TRIMS_GPIO_PIN_RVU | TRIMS_GPIO_PIN_RHL | TRIMS_GPIO_PIN_RHR) + #define KEYS_GPIOD_PINS (KEYS_GPIO_PIN_MENU | KEYS_GPIO_PIN_EXIT | KEYS_GPIO_PIN_PAGE | SWITCHES_GPIO_PIN_H) + #define KEYS_GPIOE_PINS (KEYS_GPIO_PIN_PLUS | KEYS_GPIO_PIN_ENTER | KEYS_GPIO_PIN_MINUS | TRIMS_GPIO_PIN_LHR | TRIMS_GPIO_PIN_LHL | TRIMS_GPIO_PIN_LVD | TRIMS_GPIO_PIN_LVU | SWITCHES_GPIO_PIN_F | SWITCHES_GPIO_PIN_A_L | SWITCHES_GPIO_PIN_B_H | SWITCHES_GPIO_PIN_B_L | SWITCHES_GPIO_PIN_C_H | SWITCHES_GPIO_PIN_D_H | SWITCHES_GPIO_PIN_D_L | SWITCHES_GPIO_PIN_G_H | SWITCHES_GPIO_PIN_G_L) +#else + #define KEYS_RCC_AHB1Periph_GPIO (RCC_AHB1Periph_GPIOA|RCC_AHB1Periph_GPIOB|RCC_AHB1Periph_GPIOC|RCC_AHB1Periph_GPIOD|RCC_AHB1Periph_GPIOE) + #define KEYS_GPIOA_PINS (SWITCHES_GPIO_PIN_C_L) + #define KEYS_GPIOB_PINS (SWITCHES_GPIO_PIN_E_L | SWITCHES_GPIO_PIN_E_H | SWITCHES_GPIO_PIN_A_H | SWITCHES_GPIO_PIN_D_L) + #define KEYS_GPIOC_PINS (TRIMS_GPIO_PIN_RVD | TRIMS_GPIO_PIN_RVU | TRIMS_GPIO_PIN_RHL | TRIMS_GPIO_PIN_RHR) + #define KEYS_GPIOD_PINS (KEYS_GPIO_PIN_MENU | KEYS_GPIO_PIN_EXIT | KEYS_GPIO_PIN_PAGE) + #define KEYS_GPIOE_PINS (KEYS_GPIO_PIN_PLUS | KEYS_GPIO_PIN_ENTER | KEYS_GPIO_PIN_MINUS | TRIMS_GPIO_PIN_LHR | TRIMS_GPIO_PIN_LHL | TRIMS_GPIO_PIN_LVD | TRIMS_GPIO_PIN_LVU | SWITCHES_GPIO_PIN_F | SWITCHES_GPIO_PIN_A_L | SWITCHES_GPIO_PIN_B_H | SWITCHES_GPIO_PIN_B_L | SWITCHES_GPIO_PIN_C_H | SWITCHES_GPIO_PIN_D_H | SWITCHES_GPIO_PIN_G_H | SWITCHES_GPIO_PIN_G_L | SWITCHES_GPIO_PIN_H) #endif // ADC @@ -168,19 +234,54 @@ #define ADC_GPIO_PIN_STICK_RH GPIO_Pin_1 // PA.01 #define ADC_GPIO_PIN_STICK_LH GPIO_Pin_2 // PA.02 #define ADC_GPIO_PIN_STICK_LV GPIO_Pin_3 // PA.03 -#define ADC_GPIO_PIN_SLIDER1 GPIO_Pin_4 // PC.04 -#define ADC_GPIO_PIN_SLIDER2 GPIO_Pin_5 // PC.05 -#define ADC_GPIO_PIN_POT1 GPIO_Pin_6 // PA.06 -#define ADC_GPIO_PIN_POT2 GPIO_Pin_0 // PB.00 +#define ADC_CHANNEL_STICK_RV ADC_Channel_0 // ADC1_IN0 +#define ADC_CHANNEL_STICK_RH ADC_Channel_1 // ADC1_IN1 +#define ADC_CHANNEL_STICK_LH ADC_Channel_2 // ADC1_IN2 +#define ADC_CHANNEL_STICK_LV ADC_Channel_3 // ADC1_IN3 #if defined(REV9E) - #define ADC_GPIO_PIN_POT3 GPIO_Pin_10 // PF.10 - #define ADC_GPIO_PIN_POT4 GPIO_Pin_9 // PF.09 - #define ADC_GPIO_PIN_POT5 GPIO_Pin_8 // PF.08 - #define ADC_GPIO_PIN_POT6 GPIO_Pin_1 // PB.01 + #define ADC_GPIO_PIN_POT1 GPIO_Pin_8 // PF.08 + #define ADC_GPIO_PIN_POT2 GPIO_Pin_0 // PB.00 + #define ADC_GPIO_PIN_POT3 GPIO_Pin_4 // PC.04 + #define ADC_GPIO_PIN_POT4 GPIO_Pin_5 // PC.05 + #define ADC_GPIO_PIN_SLIDER1 GPIO_Pin_10 // PF.10 + #define ADC_GPIO_PIN_SLIDER2 GPIO_Pin_9 // PF.09 + #define ADC_GPIO_PIN_SLIDER3 GPIO_Pin_6 // PA.06 + #define ADC_GPIO_PIN_SLIDER4 GPIO_Pin_1 // PB.01 + #define ADC_GPIO_PIN_BATT GPIO_Pin_0 // PC.00 + #define ADC_CHANNEL_POT1 ADC_Channel_6 // ADC3_IN6 + #define ADC_CHANNEL_POT2 ADC_Channel_8 // ADC1_IN8 + #define ADC_CHANNEL_POT3 ADC_Channel_14 // ADC1_IN14 + #define ADC_CHANNEL_POT4 ADC_Channel_15 // ADC1_IN15 + #define ADC_CHANNEL_SLIDER1 ADC_Channel_8 // ADC3_IN8 + #define ADC_CHANNEL_SLIDER2 ADC_Channel_7 // ADC3_IN7 + #define ADC_CHANNEL_SLIDER3 ADC_Channel_6 // ADC1_IN6 + #define ADC_CHANNEL_SLIDER4 ADC_Channel_7 // ADC1_IN9 + #define ADC_CHANNEL_BATT ADC_Channel_10 // ADC1_IN10 #elif defined(REVPLUS) + #define ADC_GPIO_PIN_POT1 GPIO_Pin_6 // PA.06 + #define ADC_GPIO_PIN_POT2 GPIO_Pin_0 // PB.00 #define ADC_GPIO_PIN_POT3 GPIO_Pin_1 // PB.01 + #define ADC_GPIO_PIN_SLIDER1 GPIO_Pin_4 // PC.04 + #define ADC_GPIO_PIN_SLIDER2 GPIO_Pin_5 // PC.05 + #define ADC_GPIO_PIN_BATT GPIO_Pin_0 // PC.00 + #define ADC_CHANNEL_POT1 ADC_Channel_6 + #define ADC_CHANNEL_POT2 ADC_Channel_8 + #define ADC_CHANNEL_POT3 ADC_Channel_9 + #define ADC_CHANNEL_SLIDER1 ADC_Channel_14 + #define ADC_CHANNEL_SLIDER2 ADC_Channel_15 + #define ADC_CHANNEL_BATT ADC_Channel_10 +#else + #define ADC_GPIO_PIN_POT1 GPIO_Pin_6 // PA.06 + #define ADC_GPIO_PIN_POT2 GPIO_Pin_0 // PB.00 + #define ADC_GPIO_PIN_SLIDER1 GPIO_Pin_4 // PC.04 + #define ADC_GPIO_PIN_SLIDER2 GPIO_Pin_5 // PC.05 + #define ADC_GPIO_PIN_BATT GPIO_Pin_0 // PC.00 + #define ADC_CHANNEL_POT1 ADC_Channel_6 + #define ADC_CHANNEL_POT2 ADC_Channel_8 + #define ADC_CHANNEL_SLIDER1 ADC_Channel_14 + #define ADC_CHANNEL_SLIDER2 ADC_Channel_15 + #define ADC_CHANNEL_BATT ADC_Channel_10 #endif -#define ADC_GPIO_PIN_BATT GPIO_Pin_0 // PC.00 // Power_OFF Delay and LED #define PWR_RCC_AHB1Periph_GPIO (RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD) diff --git a/radio/src/targets/taranis/keys_driver.cpp b/radio/src/targets/taranis/keys_driver.cpp index 460260672..c0db655e7 100644 --- a/radio/src/targets/taranis/keys_driver.cpp +++ b/radio/src/targets/taranis/keys_driver.cpp @@ -36,80 +36,53 @@ #include "../../opentx.h" -// TODO FrSky code included PIN_BIND and PIN_POWER - uint32_t readKeys() { - register uint32_t result = 0; - register uint32_t d = ~GPIOD->IDR; + uint32_t result = 0; + + if (~KEYS_GPIO_REG_ENTER & KEYS_GPIO_PIN_ENTER) + result |= 1 << KEY_ENTER; + if (~KEYS_GPIO_REG_MENU & KEYS_GPIO_PIN_MENU) + result |= 1 << KEY_MENU; + if (~KEYS_GPIO_REG_PAGE & KEYS_GPIO_PIN_PAGE) + result |= 1 << KEY_PAGE; + if (~KEYS_GPIO_REG_EXIT & KEYS_GPIO_PIN_EXIT) + result |= 1 << KEY_EXIT; #if !defined(REV9E) || defined(SIMU) - register uint32_t e = ~GPIOE->IDR; - (void)e; + if (~KEYS_GPIO_REG_PLUS & KEYS_GPIO_PIN_PLUS) + result |= 1 << KEY_PLUS; + if (~KEYS_GPIO_REG_MINUS & KEYS_GPIO_PIN_MINUS) + result |= 1 << KEY_MINUS; #endif -#if defined(REV9E) - if (!(GPIOF->IDR & KEYS_GPIO_PIN_ENTER)) -#else - if (e & KEYS_GPIO_PIN_ENTER) -#endif - result |= 0x02 << KEY_ENTER; - -#if !defined(REV9E) || defined(SIMU) - if (e & KEYS_GPIO_PIN_PLUS) - result |= 0x02 << KEY_PLUS; - if (e & KEYS_GPIO_PIN_MINUS) - result |= 0x02 << KEY_MINUS; -#endif - - if (d & KEYS_GPIO_PIN_MENU) - result |= 0x02 << KEY_MENU; - if (d & KEYS_GPIO_PIN_PAGE) - result |= 0x02 << KEY_PAGE; - if (d & KEYS_GPIO_PIN_EXIT) - result |= 0x02 << KEY_EXIT; - - // TRACE("readKeys(): %x %x => %x", d, e, result); + // TRACE("readKeys(): result=0x%02x", result); return result; } uint32_t readTrims() { - register uint32_t c = GPIOC->IDR; - register uint32_t e = GPIOE->IDR; -#if defined(REV9E) - register uint32_t g = GPIOG->IDR; -#endif - register uint32_t result = 0; + uint32_t result = 0; - if (~e & TRIMS_GPIO_PIN_LHL) - result |= 0x01; // LH_L - if (~e & TRIMS_GPIO_PIN_LHR) - result |= 0x02; // LH_R + if (~TRIMS_GPIO_REG_LHL & TRIMS_GPIO_PIN_LHL) + result |= 0x01; + if (~TRIMS_GPIO_REG_LHR & TRIMS_GPIO_PIN_LHR) + result |= 0x02; + if (~TRIMS_GPIO_REG_LVD & TRIMS_GPIO_PIN_LVD) + result |= 0x04; + if (~TRIMS_GPIO_REG_LVU & TRIMS_GPIO_PIN_LVU) + result |= 0x08; + if (~TRIMS_GPIO_REG_RVD & TRIMS_GPIO_PIN_RVD) + result |= 0x10; + if (~TRIMS_GPIO_REG_RVU & TRIMS_GPIO_PIN_RVU) + result |= 0x20; + if (~TRIMS_GPIO_REG_RHL & TRIMS_GPIO_PIN_RHL) + result |= 0x40; + if (~TRIMS_GPIO_REG_RHR & TRIMS_GPIO_PIN_RHR) + result |= 0x80; -#if defined(REV9E) - if (~g & TRIMS_GPIO_PIN_LVD) - result |= 0x04; // LV_DN - if (~g & TRIMS_GPIO_PIN_LVU) - result |= 0x08; // LV_UP -#else - if (~e & TRIMS_GPIO_PIN_LVD) - result |= 0x04; // LV_DN - if (~e & TRIMS_GPIO_PIN_LVU) - result |= 0x08; // LV_UP -#endif - - if (~c & TRIMS_GPIO_PIN_RVD) - result |= 0x10; // RV_DN - if (~c & TRIMS_GPIO_PIN_RVU) - result |= 0x20; // RV_UP - if (~c & TRIMS_GPIO_PIN_RHL) - result |= 0x40; // RH_L - if (~c & TRIMS_GPIO_PIN_RHR) - result |= 0x80; // RH_R - - // TRACE("readTrims(): %x %x => %x", c, e, result); + // TRACE("readTrims(): result=0x%02x", result); return result; } @@ -131,13 +104,10 @@ extern rotenc_t x9de_rotenc; /* TODO common to ARM */ void readKeysAndTrims() { - register uint32_t i; - - uint8_t enuk = KEY_MENU; + uint8_t enuk = 0; uint32_t in = readKeys(); - for (i = 1; i <= TRM_BASE; i++) { - keys[enuk].input(in & (1 << i)); - ++enuk; + for (uint8_t i = 1; i != uint8_t(1 << TRM_BASE); i <<= 1) { + keys[enuk++].input(in & i); } #if defined(REV9E) && !defined(SIMU) @@ -156,15 +126,21 @@ void readKeysAndTrims() #endif in = readTrims(); - - for (i = 1; i < 256; i <<= 1) { - keys[enuk].input(in & i); - ++enuk; + for (uint8_t i = 1; i != uint8_t(1 << 8); i <<= 1) { + keys[enuk++].input(in & i); } } #if !defined(BOOT) +#define ADD_2POS_CASE(x) \ + case SW_S ## x ## 0: \ + xxx = SWITCHES_GPIO_REG_ ## x & SWITCHES_GPIO_PIN_ ## x ; \ + break; \ + case SW_S ## x ## 2: \ + xxx = ~SWITCHES_GPIO_REG_ ## x & SWITCHES_GPIO_PIN_ ## x ; \ + break + #if defined(REV9E) #define ADD_3POS_CASE(x, i) \ case SW_S ## x ## 0: \ @@ -178,13 +154,6 @@ void readKeysAndTrims() break #define ADD_3POS_INVERTED_CASE(x, i) ADD_3POS_CASE(x, i) #else -#define ADD_2POS_CASE(x) \ - case SW_S ## x ## 0: \ - xxx = SWITCHES_GPIO_REG_ ## x & SWITCHES_GPIO_PIN_ ## x ; \ - break; \ - case SW_S ## x ## 2: \ - xxx = ~SWITCHES_GPIO_REG_ ## x & SWITCHES_GPIO_PIN_ ## x ; \ - break #define ADD_3POS_CASE(x, i) \ case SW_S ## x ## 0: \ xxx = (SWITCHES_GPIO_REG_ ## x ## _H & SWITCHES_GPIO_PIN_ ## x ## _H); \ @@ -229,7 +198,11 @@ bool switchState(EnumKeys enuk) ADD_3POS_CASE(A, 0); ADD_3POS_CASE(B, 1); ADD_3POS_CASE(C, 2); +#if defined(REV9E) + ADD_2POS_CASE(D); +#else ADD_3POS_CASE(D, 3); +#endif ADD_3POS_INVERTED_CASE(E, 4); #if defined(REV9E) ADD_3POS_CASE(F, 5); @@ -237,12 +210,7 @@ bool switchState(EnumKeys enuk) ADD_2POS_CASE(F); #endif ADD_3POS_CASE(G, 6); -#if defined(REV9E) - ADD_3POS_CASE(H, 7); -#else ADD_2POS_CASE(H); -#endif - #if defined(REV9E) ADD_3POS_CASE(I, 8); ADD_3POS_CASE(J, 9); @@ -272,52 +240,33 @@ void keysInit() RCC_AHB1PeriphClockCmd(KEYS_RCC_AHB1Periph_GPIO, ENABLE); -#if defined(REV9E) - GPIO_InitStructure.GPIO_Pin = TRIMS_GPIO_PIN_LHR | TRIMS_GPIO_PIN_LHL - | SWITCHES_GPIO_PIN_F_H | SWITCHES_GPIO_PIN_A_L | SWITCHES_GPIO_PIN_B_H | SWITCHES_GPIO_PIN_B_L | SWITCHES_GPIO_PIN_C_H | SWITCHES_GPIO_PIN_D_H | SWITCHES_GPIO_PIN_D_L | SWITCHES_GPIO_PIN_G_H | SWITCHES_GPIO_PIN_G_L | SWITCHES_GPIO_PIN_L_L | SWITCHES_GPIO_PIN_Q_H | SWITCHES_GPIO_PIN_Q_L; -#elif defined(REVPLUS) - GPIO_InitStructure.GPIO_Pin = KEYS_GPIO_PIN_PLUS | KEYS_GPIO_PIN_ENTER | KEYS_GPIO_PIN_MINUS | TRIMS_GPIO_PIN_LHR | TRIMS_GPIO_PIN_LHL - | TRIMS_GPIO_PIN_LVD | TRIMS_GPIO_PIN_LVU - | SWITCHES_GPIO_PIN_F | SWITCHES_GPIO_PIN_A_L | SWITCHES_GPIO_PIN_B_H | SWITCHES_GPIO_PIN_B_L | SWITCHES_GPIO_PIN_C_H | SWITCHES_GPIO_PIN_D_H | SWITCHES_GPIO_PIN_D_L | SWITCHES_GPIO_PIN_G_H | SWITCHES_GPIO_PIN_G_L; -#else - GPIO_InitStructure.GPIO_Pin = KEYS_GPIO_PIN_PLUS | KEYS_GPIO_PIN_ENTER | KEYS_GPIO_PIN_MINUS | TRIMS_GPIO_PIN_LHR | TRIMS_GPIO_PIN_LHL - | TRIMS_GPIO_PIN_LVD | TRIMS_GPIO_PIN_LVU - | SWITCHES_GPIO_PIN_F | SWITCHES_GPIO_PIN_A_L | SWITCHES_GPIO_PIN_B_H | SWITCHES_GPIO_PIN_B_L | SWITCHES_GPIO_PIN_C_H | SWITCHES_GPIO_PIN_D_H | SWITCHES_GPIO_PIN_G_H | SWITCHES_GPIO_PIN_G_L | SWITCHES_GPIO_PIN_H; -#endif + GPIO_InitStructure.GPIO_Pin = KEYS_GPIOA_PINS; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP ; - GPIO_Init(GPIOE, &GPIO_InitStructure); + GPIO_Init(GPIOA, &GPIO_InitStructure); -#if defined(REV9E) - GPIO_InitStructure.GPIO_Pin = KEYS_GPIO_PIN_ENTER | SWITCHES_GPIO_PIN_F_L | SWITCHES_GPIO_PIN_I_H | SWITCHES_GPIO_PIN_I_L | SWITCHES_GPIO_PIN_J_H | SWITCHES_GPIO_PIN_J_L | SWITCHES_GPIO_PIN_K_H | SWITCHES_GPIO_PIN_K_L | SWITCHES_GPIO_PIN_L_H | SWITCHES_GPIO_PIN_M_H | SWITCHES_GPIO_PIN_M_L | SWITCHES_GPIO_PIN_N_H | SWITCHES_GPIO_PIN_N_L; - GPIO_Init(GPIOF, &GPIO_InitStructure); - - GPIO_InitStructure.GPIO_Pin = TRIMS_GPIO_PIN_LVD | TRIMS_GPIO_PIN_LVU | SWITCHES_GPIO_PIN_O_H | SWITCHES_GPIO_PIN_O_L | SWITCHES_GPIO_PIN_P_H | SWITCHES_GPIO_PIN_P_L | SWITCHES_GPIO_PIN_R_H | SWITCHES_GPIO_PIN_R_L; - GPIO_Init(GPIOG, &GPIO_InitStructure); -#endif - -#if defined(REV9E) - GPIO_InitStructure.GPIO_Pin = KEYS_GPIO_PIN_MENU | KEYS_GPIO_PIN_EXIT | KEYS_GPIO_PIN_PAGE | SWITCHES_GPIO_PIN_H_H | SWITCHES_GPIO_PIN_H_L; -#elif defined(REVPLUS) - GPIO_InitStructure.GPIO_Pin = KEYS_GPIO_PIN_MENU | KEYS_GPIO_PIN_EXIT | KEYS_GPIO_PIN_PAGE | SWITCHES_GPIO_PIN_H; -#else - GPIO_InitStructure.GPIO_Pin = KEYS_GPIO_PIN_MENU | KEYS_GPIO_PIN_EXIT | KEYS_GPIO_PIN_PAGE; -#endif - GPIO_Init(GPIOD, &GPIO_InitStructure); - - GPIO_InitStructure.GPIO_Pin = TRIMS_GPIO_PIN_RVD | TRIMS_GPIO_PIN_RVU | TRIMS_GPIO_PIN_RHL | TRIMS_GPIO_PIN_RHR; - GPIO_Init(GPIOC, &GPIO_InitStructure); - -#if defined(REVPLUS) - GPIO_InitStructure.GPIO_Pin = SWITCHES_GPIO_PIN_E_L | SWITCHES_GPIO_PIN_E_H | SWITCHES_GPIO_PIN_A_H; -#else - GPIO_InitStructure.GPIO_Pin = SWITCHES_GPIO_PIN_E_L | SWITCHES_GPIO_PIN_E_H | SWITCHES_GPIO_PIN_A_H | SWITCHES_GPIO_PIN_D_L; -#endif + GPIO_InitStructure.GPIO_Pin = KEYS_GPIOD_PINS; GPIO_Init(GPIOB, &GPIO_InitStructure); - GPIO_InitStructure.GPIO_Pin = SWITCHES_GPIO_PIN_C_L; - GPIO_Init(GPIOA, &GPIO_InitStructure); + GPIO_InitStructure.GPIO_Pin = KEYS_GPIOC_PINS; + GPIO_Init(GPIOC, &GPIO_InitStructure); + + GPIO_InitStructure.GPIO_Pin = KEYS_GPIOD_PINS; + GPIO_Init(GPIOD, &GPIO_InitStructure); + + GPIO_InitStructure.GPIO_Pin = KEYS_GPIOE_PINS; + GPIO_Init(GPIOE, &GPIO_InitStructure); + +#if defined(KEYS_GPIOF_PINS) + GPIO_InitStructure.GPIO_Pin = KEYS_GPIOF_PINS; + GPIO_Init(GPIOF, &GPIO_InitStructure); +#endif + +#if defined(KEYS_GPIOG_PINS) + GPIO_InitStructure.GPIO_Pin = KEYS_GPIOG_PINS; + GPIO_Init(GPIOG, &GPIO_InitStructure); +#endif } #endif diff --git a/radio/src/targets/taranis/rtc_driver.cpp b/radio/src/targets/taranis/rtc_driver.cpp index dee53fe0a..2dbd21e81 100644 --- a/radio/src/targets/taranis/rtc_driver.cpp +++ b/radio/src/targets/taranis/rtc_driver.cpp @@ -55,7 +55,7 @@ void rtcSetTime(struct gtm * t) RTC_SetDate(RTC_Format_BIN, &RTC_DateStruct); } -void rtc_gettime(struct gtm * t) +void rtcGetTime(struct gtm * t) { RTC_TimeTypeDef RTC_TimeStruct; RTC_DateTypeDef RTC_DateStruct; @@ -90,6 +90,6 @@ void rtcInit() RTC_Init(&RTC_InitStruct); struct gtm utm; - rtc_gettime(&utm); + rtcGetTime(&utm); g_rtcTime = gmktime(&utm); } diff --git a/radio/src/targets/taranis/telemetry_driver.cpp b/radio/src/targets/taranis/telemetry_driver.cpp index 67245232d..023010c24 100644 --- a/radio/src/targets/taranis/telemetry_driver.cpp +++ b/radio/src/targets/taranis/telemetry_driver.cpp @@ -62,9 +62,7 @@ void telemetryPortInit(uint32_t baudrate) GPIO_InitStructure.GPIO_Pin = TELEMETRY_GPIO_PIN_DIR; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; - GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(TELEMETRY_GPIO_DIR, &GPIO_InitStructure); GPIO_ResetBits(TELEMETRY_GPIO_DIR, TELEMETRY_GPIO_PIN_DIR); diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index 01b18acfe..3f88206fb 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -456,7 +456,7 @@ #define TR_TRIMS_VSRCRAW TR("TrmR""TrmE""TrmT""TrmA", "\313Rud""\313Ele""\313Thr""\313Ail") #if defined(PCBTARANIS) && defined(REV9E) - #define TR_POTS_VSRCRAW "\310S1\0""\310S2\0""\310S3\0""\310S4\0""\311LS\0""\311RS\0""\311LS2""\311RS2" + #define TR_POTS_VSRCRAW "\310F1\0""\310F2\0""\310F3\0""\310F4\0""\311LS\0""\311RS\0""\311S1\0""\311S2\0" #define TR_SW_VSRCRAW "\312SA\0""\312SB\0""\312SC\0""\312SD\0""\312SE\0""\312SF\0""\312SG\0""\312SH\0""\312SI\0""\312SJ\0""\312SK\0""\312SL\0""\312SM\0""\312SN\0""\312SO\0""\312SP\0""\312SQ\0""\312SR\0" #elif defined(PCBTARANIS) #define TR_POTS_VSRCRAW "\310S1\0""\310S2\0""\310S3\0""\311LS\0""\311RS\0"