REVO target.c corrections.
[betaflight.git] / src / main / target / REVO / target.c
blob67f7327285cbfdb340d289bb07520171a3655802
1 /*
2 * This file is part of Cleanflight.
4 * Cleanflight is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
9 * Cleanflight is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with Cleanflight. If not, see <http://www.gnu.org/licenses/>.
18 #include <stdint.h>
20 #include <platform.h>
21 #include "drivers/io.h"
22 #include "drivers/pwm_mapping.h"
24 const uint16_t multiPPM[] = {
25 PWM6 | (MAP_TO_PPM_INPUT << 8), // PPM input
26 PWM7 | (MAP_TO_MOTOR_OUTPUT << 8), // Swap to servo if needed
27 PWM8 | (MAP_TO_MOTOR_OUTPUT << 8), // Swap to servo if needed
28 PWM9 | (MAP_TO_MOTOR_OUTPUT << 8),
29 PWM10 | (MAP_TO_MOTOR_OUTPUT << 8),
30 PWM11 | (MAP_TO_MOTOR_OUTPUT << 8),
31 PWM12 | (MAP_TO_MOTOR_OUTPUT << 8),
32 PWM2 | (MAP_TO_MOTOR_OUTPUT << 8), // Swap to servo if needed
33 PWM3 | (MAP_TO_MOTOR_OUTPUT << 8), // Swap to servo if needed
34 PWM4 | (MAP_TO_MOTOR_OUTPUT << 8), // Swap to servo if needed
35 PWM5 | (MAP_TO_MOTOR_OUTPUT << 8), // Swap to servo if needed
36 PWM1 | (MAP_TO_MOTOR_OUTPUT << 8), // Swap to servo if needed
37 0xFFFF
40 const uint16_t multiPWM[] = {
41 PWM1 | (MAP_TO_PWM_INPUT << 8), // input #1
42 PWM2 | (MAP_TO_PWM_INPUT << 8),
43 PWM3 | (MAP_TO_PWM_INPUT << 8),
44 PWM4 | (MAP_TO_PWM_INPUT << 8),
45 PWM5 | (MAP_TO_PWM_INPUT << 8),
46 PWM6 | (MAP_TO_PWM_INPUT << 8), // input #6
47 PWM7 | (MAP_TO_MOTOR_OUTPUT << 8), // motor #1 or servo #1 (swap to servo if needed)
48 PWM8 | (MAP_TO_MOTOR_OUTPUT << 8), // motor #2 or servo #2 (swap to servo if needed)
49 PWM9 | (MAP_TO_MOTOR_OUTPUT << 8), // motor #1 or #3
50 PWM10 | (MAP_TO_MOTOR_OUTPUT << 8),
51 PWM11 | (MAP_TO_MOTOR_OUTPUT << 8),
52 PWM12 | (MAP_TO_MOTOR_OUTPUT << 8), // motor #4 or #6
53 0xFFFF
56 const uint16_t airPPM[] = {
57 PWM6 | (MAP_TO_PPM_INPUT << 8), // PPM input
58 PWM7 | (MAP_TO_MOTOR_OUTPUT << 8),
59 PWM8 | (MAP_TO_MOTOR_OUTPUT << 8),
60 PWM9 | (MAP_TO_SERVO_OUTPUT << 8),
61 PWM10 | (MAP_TO_SERVO_OUTPUT << 8),
62 PWM11 | (MAP_TO_SERVO_OUTPUT << 8),
63 PWM12 | (MAP_TO_SERVO_OUTPUT << 8),
64 PWM2 | (MAP_TO_SERVO_OUTPUT << 8),
65 PWM3 | (MAP_TO_SERVO_OUTPUT << 8),
66 PWM4 | (MAP_TO_SERVO_OUTPUT << 8),
67 PWM5 | (MAP_TO_SERVO_OUTPUT << 8),
68 PWM1 | (MAP_TO_SERVO_OUTPUT << 8),
69 0xFFFF
72 const uint16_t airPWM[] = {
73 PWM1 | (MAP_TO_PWM_INPUT << 8), // input #1
74 PWM2 | (MAP_TO_PWM_INPUT << 8),
75 PWM3 | (MAP_TO_PWM_INPUT << 8),
76 PWM4 | (MAP_TO_PWM_INPUT << 8),
77 PWM5 | (MAP_TO_PWM_INPUT << 8),
78 PWM6 | (MAP_TO_PWM_INPUT << 8), // input #6
79 PWM7 | (MAP_TO_MOTOR_OUTPUT << 8), // motor #1
80 PWM8 | (MAP_TO_MOTOR_OUTPUT << 8), // motor #2
81 PWM9 | (MAP_TO_SERVO_OUTPUT << 8), // servo #1
82 PWM10 | (MAP_TO_SERVO_OUTPUT << 8), // servo #2
83 PWM11 | (MAP_TO_SERVO_OUTPUT << 8), // servo #3
84 PWM12 | (MAP_TO_SERVO_OUTPUT << 8), // servo #4
85 0xFFFF
88 const timerHardware_t timerHardware[USABLE_TIMER_CHANNEL_COUNT] = {
89 { TIM12, IO_TAG(PB14), TIM_Channel_1, TIM8_BRK_TIM12_IRQn, 0, IOCFG_IPD, GPIO_AF_TIM12 }, // PPM (5th pin on FlexiIO port)
90 { TIM12, IO_TAG(PB15), TIM_Channel_2, TIM8_BRK_TIM12_IRQn, 0, IOCFG_IPD, GPIO_AF_TIM12 }, // S2_IN - GPIO_PartialRemap_TIM3
91 { TIM8, IO_TAG(PC6), TIM_Channel_1, TIM8_CC_IRQn, 0, IOCFG_IPD, GPIO_AF_TIM8 }, // S3_IN
92 { TIM8, IO_TAG(PC7), TIM_Channel_2, TIM8_CC_IRQn, 0, IOCFG_IPD, GPIO_AF_TIM8 }, // S4_IN
93 { TIM8, IO_TAG(PC8), TIM_Channel_3, TIM8_CC_IRQn, 0, IOCFG_IPD, GPIO_AF_TIM8 }, // S5_IN
94 { TIM8, IO_TAG(PC9), TIM_Channel_4, TIM8_CC_IRQn, 0, IOCFG_IPD, GPIO_AF_TIM8 }, // S6_IN
95 { TIM3, IO_TAG(PB0), TIM_Channel_3, TIM3_IRQn, 1, IOCFG_AF_PP_PD, GPIO_AF_TIM3 }, // S1_OUT
96 { TIM3, IO_TAG(PB1), TIM_Channel_4, TIM3_IRQn, 1, IOCFG_AF_PP_PD, GPIO_AF_TIM3 }, // S2_OUT
97 { TIM9, IO_TAG(PA3), TIM_Channel_2, TIM1_BRK_TIM9_IRQn, 1, IOCFG_AF_PP_PD, GPIO_AF_TIM9 }, // S3_OUT
98 { TIM2, IO_TAG(PA2), TIM_Channel_3, TIM2_IRQn, 1, IOCFG_AF_PP_PD, GPIO_AF_TIM2 }, // S4_OUT
99 { TIM5, IO_TAG(PA1), TIM_Channel_2, TIM5_IRQn, 1, IOCFG_AF_PP_PD, GPIO_AF_TIM5 }, // S5_OUT - GPIO_PartialRemap_TIM3
100 { TIM5, IO_TAG(PA0), TIM_Channel_1, TIM5_IRQn, 1, IOCFG_AF_PP_PD, GPIO_AF_TIM5 }, // S6_OUT