Added Keil project
Project can now be built and flashed with Keil uVision as well.
This commit is contained in:
parent
9e943feb8e
commit
872d86f021
|
@ -3,3 +3,8 @@
|
||||||
.pioenvs/
|
.pioenvs/
|
||||||
.vscode/
|
.vscode/
|
||||||
01_Matlab/slprj/
|
01_Matlab/slprj/
|
||||||
|
MDK-ARM/DebugConfig/
|
||||||
|
MDK-ARM/Listing/
|
||||||
|
MDK-ARM/Objects/
|
||||||
|
MDK-ARM/RTE/
|
||||||
|
MDK-ARM/*.uvguix.*
|
Binary file not shown.
|
@ -19,10 +19,15 @@
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#pragma once
|
// Define to prevent recursive inclusion
|
||||||
|
#ifndef COMMS_H
|
||||||
|
#define COMMS_H
|
||||||
|
|
||||||
#include "stm32f1xx_hal.h"
|
#include "stm32f1xx_hal.h"
|
||||||
|
|
||||||
void setScopeChannel(uint8_t ch, int16_t val);
|
void setScopeChannel(uint8_t ch, int16_t val);
|
||||||
void consoleScope(void);
|
void consoleScope(void);
|
||||||
void consoleLog(char *message);
|
void consoleLog(char *message);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
76
Inc/config.h
76
Inc/config.h
|
@ -1,11 +1,14 @@
|
||||||
#pragma once
|
// Define to prevent recursive inclusion
|
||||||
|
#ifndef CONFIG_H
|
||||||
|
#define CONFIG_H
|
||||||
|
|
||||||
#include "stm32f1xx_hal.h"
|
#include "stm32f1xx_hal.h"
|
||||||
|
|
||||||
// ############################### GENERAL SETTINGS ###############################
|
// ############################### VARIANT SELECTION ###############################
|
||||||
// For variant selection, check platformio.ini
|
// PlatformIO: uncomment desired variant in platformio.ini
|
||||||
// or define the desired build variant here if you want to use make in console
|
// Keil uVision: select desired variant from the Target drop down menu (to the right of the Load button)
|
||||||
// or use VARIANT environment variable for example like "make -e VARIANT=VARIANT_NUNCHUK"
|
// Ubuntu: define the desired build variant here if you want to use make in console
|
||||||
// Only one at a time, choose wisely ;-)
|
// or use VARIANT environment variable for example like "make -e VARIANT=VARIANT_NUNCHUK". Select only one at a time.
|
||||||
#if !defined(PLATFORMIO)
|
#if !defined(PLATFORMIO)
|
||||||
//#define VARIANT_ADC // Variant for control via ADC input
|
//#define VARIANT_ADC // Variant for control via ADC input
|
||||||
//#define VARIANT_USART // Variant for Serial control via USART3 input
|
//#define VARIANT_USART // Variant for Serial control via USART3 input
|
||||||
|
@ -13,12 +16,10 @@
|
||||||
//#define VARIANT_PPM // Variant for RC-Remote with PPM-Sum Signal
|
//#define VARIANT_PPM // Variant for RC-Remote with PPM-Sum Signal
|
||||||
//#define VARIANT_IBUS // Variant for RC-Remotes with FLYSKY IBUS
|
//#define VARIANT_IBUS // Variant for RC-Remotes with FLYSKY IBUS
|
||||||
//#define VARIANT_HOVERCAR // Variant for HOVERCAR build
|
//#define VARIANT_HOVERCAR // Variant for HOVERCAR build
|
||||||
|
//#define VARIANT_HOVERBOARD // Variant for HOVERBOARD build
|
||||||
//#define VARIANT_TRANSPOTTER // Variant for TRANSPOTTER build https://github.com/NiklasFauth/hoverboard-firmware-hack/wiki/Build-Instruction:-TranspOtter https://hackaday.io/project/161891-transpotter-ng
|
//#define VARIANT_TRANSPOTTER // Variant for TRANSPOTTER build https://github.com/NiklasFauth/hoverboard-firmware-hack/wiki/Build-Instruction:-TranspOtter https://hackaday.io/project/161891-transpotter-ng
|
||||||
#endif
|
#endif
|
||||||
|
// ########################### END OF VARIANT SELECTION ############################
|
||||||
#define INACTIVITY_TIMEOUT 8 // Minutes of not driving until poweroff. it is not very precise.
|
|
||||||
#define BEEPS_BACKWARD 1 // 0 or 1
|
|
||||||
// ########################### END OF GENERAL SETTINGS ############################
|
|
||||||
|
|
||||||
|
|
||||||
// ############################### DO-NOT-TOUCH SETTINGS ###############################
|
// ############################### DO-NOT-TOUCH SETTINGS ###############################
|
||||||
|
@ -147,6 +148,26 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// ############################## DEFAULT SETTINGS ############################
|
||||||
|
// Default settings will be applied at the end of this config file if not set before
|
||||||
|
#define INACTIVITY_TIMEOUT 8 // Minutes of not driving until poweroff. it is not very precise.
|
||||||
|
#define BEEPS_BACKWARD 1 // 0 or 1
|
||||||
|
// #define SUPPORT_BUTTONS // Define for buttons support on ADC, Nunchuck
|
||||||
|
|
||||||
|
/* FILTER is in fixdt(0,16,16): VAL_fixedPoint = VAL_floatingPoint * 2^16. In this case 6553 = 0.1 * 2^16
|
||||||
|
* Value of COEFFICIENT is in fixdt(1,16,14)
|
||||||
|
* If VAL_floatingPoint >= 0, VAL_fixedPoint = VAL_floatingPoint * 2^14
|
||||||
|
* If VAL_floatingPoint < 0, VAL_fixedPoint = 2^16 + floor(VAL_floatingPoint * 2^14).
|
||||||
|
*/
|
||||||
|
// Value of RATE is in fixdt(1,16,4): VAL_fixedPoint = VAL_floatingPoint * 2^4. In this case 480 = 30 * 2^4
|
||||||
|
#define DEFAULT_RATE 480 // 30.0f [-] lower value == slower rate [0, 32767] = [0.0, 2047.9375]. Do NOT make rate negative (>32767)
|
||||||
|
#define DEFAULT_FILTER 6553 // Default for FILTER 0.1f [-] lower value == softer filter [0, 65535] = [0.0 - 1.0].
|
||||||
|
#define DEFAULT_SPEED_COEFFICIENT 16384 // Default for SPEED_COEFFICIENT 1.0f [-] higher value == stronger. [0, 65535] = [-2.0 - 2.0]. In this case 16384 = 1.0 * 2^14
|
||||||
|
#define DEFAULT_STEER_COEFFICIENT 8192 // Defualt for STEER_COEFFICIENT 0.5f [-] higher value == stronger. [0, 65535] = [-2.0 - 2.0]. In this case 8192 = 0.5 * 2^14. If you do not want any steering, set it to 0.
|
||||||
|
// ######################### END OF DEFAULT SETTINGS ##########################
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ############################### DEBUG SERIAL ###############################
|
// ############################### DEBUG SERIAL ###############################
|
||||||
/* Connect GND and RX of a 3.3v uart-usb adapter to the left (USART2) or right sensor board cable (USART3)
|
/* Connect GND and RX of a 3.3v uart-usb adapter to the left (USART2) or right sensor board cable (USART3)
|
||||||
* Be careful not to use the red wire of the cable. 15v will destroye evrything.
|
* Be careful not to use the red wire of the cable. 15v will destroye evrything.
|
||||||
|
@ -188,22 +209,6 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ############################## VARIANT DEFAULT SETTINGS ############################
|
|
||||||
/* Default settings will be applied at the end of this config file if not set before
|
|
||||||
* FILTER is in fixdt(0,16,16): VAL_fixedPoint = VAL_floatingPoint * 2^16. In this case 6553 = 0.1 * 2^16
|
|
||||||
* Value of COEFFICIENT is in fixdt(1,16,14)
|
|
||||||
* If VAL_floatingPoint >= 0, VAL_fixedPoint = VAL_floatingPoint * 2^14
|
|
||||||
* If VAL_floatingPoint < 0, VAL_fixedPoint = 2^16 + floor(VAL_floatingPoint * 2^14).
|
|
||||||
*/
|
|
||||||
// Value of RATE is in fixdt(1,16,4): VAL_fixedPoint = VAL_floatingPoint * 2^4. In this case 480 = 30 * 2^4
|
|
||||||
#define DEFAULT_RATE 480 // 30.0f [-] lower value == slower rate [0, 32767] = [0.0, 2047.9375]. Do NOT make rate negative (>32767)
|
|
||||||
#define DEFAULT_FILTER 6553 // Default for FILTER 0.1f [-] lower value == softer filter [0, 65535] = [0.0 - 1.0].
|
|
||||||
#define DEFAULT_SPEED_COEFFICIENT 16384 // Default for SPEED_COEFFICIENT 1.0f [-] higher value == stronger. [0, 65535] = [-2.0 - 2.0]. In this case 16384 = 1.0 * 2^14
|
|
||||||
#define DEFAULT_STEER_COEFFICIENT 8192 // Defualt for STEER_COEFFICIENT 0.5f [-] higher value == stronger. [0, 65535] = [-2.0 - 2.0]. In this case 8192 = 0.5 * 2^14. If you do not want any steering, set it to 0.
|
|
||||||
// ######################### END OF VARIANT DEFAULT SETTINGS ##########################
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ################################# VARIANT_ADC SETTINGS ############################
|
// ################################# VARIANT_ADC SETTINGS ############################
|
||||||
#ifdef VARIANT_ADC
|
#ifdef VARIANT_ADC
|
||||||
/* CONTROL VIA TWO POTENTIOMETERS
|
/* CONTROL VIA TWO POTENTIOMETERS
|
||||||
|
@ -317,12 +322,24 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// ############################ VARIANT_HOVERBOARD SETTINGS ############################
|
||||||
|
// ##### ! NOT IMPLEMENTED YET ! #####
|
||||||
|
#ifdef VARIANT_HOVERBOARD
|
||||||
|
// #define CONTROL_SERIAL_USART2 // left sensor board cable, disable if ADC or PPM is used! For Arduino control check the hoverSerial.ino
|
||||||
|
// #define FEEDBACK_SERIAL_USART2 // left sensor board cable, disable if ADC or PPM is used!
|
||||||
|
#define CONTROL_SERIAL_USART3 // right sensor board cable, disable if I2C (nunchuk or lcd) is used! For Arduino control check the hoverSerial.ino
|
||||||
|
#define FEEDBACK_SERIAL_USART3 // right sensor board cable, disable if I2C (nunchuk or lcd) is used!
|
||||||
|
#endif
|
||||||
|
// ######################## END OF VARIANT_HOVERBOARD SETTINGS #########################
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ################################# VARIANT_TRANSPOTTER SETTINGS ############################
|
// ################################# VARIANT_TRANSPOTTER SETTINGS ############################
|
||||||
//TODO ADD VALIDATION
|
//TODO ADD VALIDATION
|
||||||
#ifdef VARIANT_TRANSPOTTER
|
#ifdef VARIANT_TRANSPOTTER
|
||||||
#define CONTROL_GAMETRAK
|
#define CONTROL_GAMETRAK
|
||||||
#define SUPPORT_LCD
|
#define SUPPORT_LCD
|
||||||
#define SUPPORT_NUNCHUK
|
// #define SUPPORT_NUNCHUK
|
||||||
#define GAMETRAK_CONNECTION_NORMAL // for normal wiring according to the wiki instructions
|
#define GAMETRAK_CONNECTION_NORMAL // for normal wiring according to the wiki instructions
|
||||||
//#define GAMETRAK_CONNECTION_ALTERNATE // use this define instead if you messed up the gametrak ADC wiring (steering is speed, and length of the wire is steering)
|
//#define GAMETRAK_CONNECTION_ALTERNATE // use this define instead if you messed up the gametrak ADC wiring (steering is speed, and length of the wire is steering)
|
||||||
#define ROT_P 1.2 // P coefficient for the direction controller. Positive / Negative values to invert gametrak steering direction.
|
#define ROT_P 1.2 // P coefficient for the direction controller. Positive / Negative values to invert gametrak steering direction.
|
||||||
|
@ -382,7 +399,8 @@
|
||||||
|
|
||||||
|
|
||||||
// ############################### VALIDATE SETTINGS ###############################
|
// ############################### VALIDATE SETTINGS ###############################
|
||||||
#if !defined(VARIANT_ADC) && !defined(VARIANT_USART) && !defined(VARIANT_HOVERCAR) && !defined(VARIANT_TRANSPOTTER) && !defined(VARIANT_NUNCHUK) && !defined(VARIANT_PPM) && !defined(VARIANT_IBUS) && !defined(DEBUG_SERIAL_USART3) && !defined(DEBUG_SERIAL_USART2)
|
#if !defined(VARIANT_ADC) && !defined(VARIANT_USART) && !defined(VARIANT_NUNCHUK) && !defined(VARIANT_PPM) && !defined(VARIANT_IBUS) && \
|
||||||
|
!defined(VARIANT_HOVERCAR) && !defined(VARIANT_HOVERBOARD) && !defined(VARIANT_TRANSPOTTER)
|
||||||
#error Variant not defined! Please check platformio.ini or Inc/config.h for available variants.
|
#error Variant not defined! Please check platformio.ini or Inc/config.h for available variants.
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -441,3 +459,5 @@
|
||||||
#endif
|
#endif
|
||||||
// ############################# END OF VALIDATE SETTINGS ############################
|
// ############################# END OF VALIDATE SETTINGS ############################
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,10 @@
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#pragma once
|
// Define to prevent recursive inclusion
|
||||||
|
#ifndef DEFINES_H
|
||||||
|
#define DEFINES_H
|
||||||
|
|
||||||
#include "stm32f1xx_hal.h"
|
#include "stm32f1xx_hal.h"
|
||||||
|
|
||||||
#define LEFT_HALL_U_PIN GPIO_PIN_5
|
#define LEFT_HALL_U_PIN GPIO_PIN_5
|
||||||
|
@ -180,4 +183,7 @@ void Nunchuk_Init(void);
|
||||||
void Nunchuk_Read(void);
|
void Nunchuk_Read(void);
|
||||||
uint8_t Nunchuk_Ping(void);
|
uint8_t Nunchuk_Ping(void);
|
||||||
void PPM_Init(void);
|
void PPM_Init(void);
|
||||||
void PPM_ISR_Callback(void);
|
void PPM_ISR_Callback(void);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,373 @@
|
||||||
|
;******************** (C) COPYRIGHT 2017 STMicroelectronics ********************
|
||||||
|
;* File Name : startup_stm32f103xe.s
|
||||||
|
;* Author : MCD Application Team
|
||||||
|
;* Version : V4.2.0
|
||||||
|
;* Date : 31-March-2017
|
||||||
|
;* Description : STM32F103xE Devices vector table for MDK-ARM toolchain.
|
||||||
|
;* This module performs:
|
||||||
|
;* - Set the initial SP
|
||||||
|
;* - Set the initial PC == Reset_Handler
|
||||||
|
;* - Set the vector table entries with the exceptions ISR address
|
||||||
|
;* - Configure the clock system
|
||||||
|
;* - Branches to __main in the C library (which eventually
|
||||||
|
;* calls main()).
|
||||||
|
;* After Reset the Cortex-M3 processor is in Thread mode,
|
||||||
|
;* priority is Privileged, and the Stack is set to Main.
|
||||||
|
;********************************************************************************
|
||||||
|
;*
|
||||||
|
;* <h2><center>© COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
|
||||||
|
;*
|
||||||
|
;* Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
;* are permitted provided that the following conditions are met:
|
||||||
|
;* 1. Redistributions of source code must retain the above copyright notice,
|
||||||
|
;* this list of conditions and the following disclaimer.
|
||||||
|
;* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
;* this list of conditions and the following disclaimer in the documentation
|
||||||
|
;* and/or other materials provided with the distribution.
|
||||||
|
;* 3. Neither the name of STMicroelectronics nor the names of its contributors
|
||||||
|
;* may be used to endorse or promote products derived from this software
|
||||||
|
;* without specific prior written permission.
|
||||||
|
;*
|
||||||
|
;* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||||
|
;* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
;* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
;* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||||
|
;* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
;* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
;* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||||
|
;* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||||
|
;* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
;* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
;
|
||||||
|
;*******************************************************************************
|
||||||
|
|
||||||
|
; Amount of memory (in bytes) allocated for Stack
|
||||||
|
; Tailor this value to your application needs
|
||||||
|
; <h> Stack Configuration
|
||||||
|
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
|
||||||
|
; </h>
|
||||||
|
|
||||||
|
Stack_Size EQU 0x400
|
||||||
|
|
||||||
|
AREA STACK, NOINIT, READWRITE, ALIGN=3
|
||||||
|
Stack_Mem SPACE Stack_Size
|
||||||
|
__initial_sp
|
||||||
|
|
||||||
|
; <h> Heap Configuration
|
||||||
|
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
|
||||||
|
; </h>
|
||||||
|
|
||||||
|
Heap_Size EQU 0x200
|
||||||
|
|
||||||
|
AREA HEAP, NOINIT, READWRITE, ALIGN=3
|
||||||
|
__heap_base
|
||||||
|
Heap_Mem SPACE Heap_Size
|
||||||
|
__heap_limit
|
||||||
|
|
||||||
|
PRESERVE8
|
||||||
|
THUMB
|
||||||
|
|
||||||
|
|
||||||
|
; Vector Table Mapped to Address 0 at Reset
|
||||||
|
AREA RESET, DATA, READONLY
|
||||||
|
EXPORT __Vectors
|
||||||
|
EXPORT __Vectors_End
|
||||||
|
EXPORT __Vectors_Size
|
||||||
|
|
||||||
|
__Vectors DCD __initial_sp ; Top of Stack
|
||||||
|
DCD Reset_Handler ; Reset Handler
|
||||||
|
DCD NMI_Handler ; NMI Handler
|
||||||
|
DCD HardFault_Handler ; Hard Fault Handler
|
||||||
|
DCD MemManage_Handler ; MPU Fault Handler
|
||||||
|
DCD BusFault_Handler ; Bus Fault Handler
|
||||||
|
DCD UsageFault_Handler ; Usage Fault Handler
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD SVC_Handler ; SVCall Handler
|
||||||
|
DCD DebugMon_Handler ; Debug Monitor Handler
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD PendSV_Handler ; PendSV Handler
|
||||||
|
DCD SysTick_Handler ; SysTick Handler
|
||||||
|
|
||||||
|
; External Interrupts
|
||||||
|
DCD WWDG_IRQHandler ; Window Watchdog
|
||||||
|
DCD PVD_IRQHandler ; PVD through EXTI Line detect
|
||||||
|
DCD TAMPER_IRQHandler ; Tamper
|
||||||
|
DCD RTC_IRQHandler ; RTC
|
||||||
|
DCD FLASH_IRQHandler ; Flash
|
||||||
|
DCD RCC_IRQHandler ; RCC
|
||||||
|
DCD EXTI0_IRQHandler ; EXTI Line 0
|
||||||
|
DCD EXTI1_IRQHandler ; EXTI Line 1
|
||||||
|
DCD EXTI2_IRQHandler ; EXTI Line 2
|
||||||
|
DCD EXTI3_IRQHandler ; EXTI Line 3
|
||||||
|
DCD EXTI4_IRQHandler ; EXTI Line 4
|
||||||
|
DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1
|
||||||
|
DCD DMA1_Channel2_IRQHandler ; DMA1 Channel 2
|
||||||
|
DCD DMA1_Channel3_IRQHandler ; DMA1 Channel 3
|
||||||
|
DCD DMA1_Channel4_IRQHandler ; DMA1 Channel 4
|
||||||
|
DCD DMA1_Channel5_IRQHandler ; DMA1 Channel 5
|
||||||
|
DCD DMA1_Channel6_IRQHandler ; DMA1 Channel 6
|
||||||
|
DCD DMA1_Channel7_IRQHandler ; DMA1 Channel 7
|
||||||
|
DCD ADC1_2_IRQHandler ; ADC1 & ADC2
|
||||||
|
DCD USB_HP_CAN1_TX_IRQHandler ; USB High Priority or CAN1 TX
|
||||||
|
DCD USB_LP_CAN1_RX0_IRQHandler ; USB Low Priority or CAN1 RX0
|
||||||
|
DCD CAN1_RX1_IRQHandler ; CAN1 RX1
|
||||||
|
DCD CAN1_SCE_IRQHandler ; CAN1 SCE
|
||||||
|
DCD EXTI9_5_IRQHandler ; EXTI Line 9..5
|
||||||
|
DCD TIM1_BRK_IRQHandler ; TIM1 Break
|
||||||
|
DCD TIM1_UP_IRQHandler ; TIM1 Update
|
||||||
|
DCD TIM1_TRG_COM_IRQHandler ; TIM1 Trigger and Commutation
|
||||||
|
DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare
|
||||||
|
DCD TIM2_IRQHandler ; TIM2
|
||||||
|
DCD TIM3_IRQHandler ; TIM3
|
||||||
|
DCD TIM4_IRQHandler ; TIM4
|
||||||
|
DCD I2C1_EV_IRQHandler ; I2C1 Event
|
||||||
|
DCD I2C1_ER_IRQHandler ; I2C1 Error
|
||||||
|
DCD I2C2_EV_IRQHandler ; I2C2 Event
|
||||||
|
DCD I2C2_ER_IRQHandler ; I2C2 Error
|
||||||
|
DCD SPI1_IRQHandler ; SPI1
|
||||||
|
DCD SPI2_IRQHandler ; SPI2
|
||||||
|
DCD USART1_IRQHandler ; USART1
|
||||||
|
DCD USART2_IRQHandler ; USART2
|
||||||
|
DCD USART3_IRQHandler ; USART3
|
||||||
|
DCD EXTI15_10_IRQHandler ; EXTI Line 15..10
|
||||||
|
DCD RTC_Alarm_IRQHandler ; RTC Alarm through EXTI Line
|
||||||
|
DCD USBWakeUp_IRQHandler ; USB Wakeup from suspend
|
||||||
|
DCD TIM8_BRK_IRQHandler ; TIM8 Break
|
||||||
|
DCD TIM8_UP_IRQHandler ; TIM8 Update
|
||||||
|
DCD TIM8_TRG_COM_IRQHandler ; TIM8 Trigger and Commutation
|
||||||
|
DCD TIM8_CC_IRQHandler ; TIM8 Capture Compare
|
||||||
|
DCD ADC3_IRQHandler ; ADC3
|
||||||
|
DCD FSMC_IRQHandler ; FSMC
|
||||||
|
DCD SDIO_IRQHandler ; SDIO
|
||||||
|
DCD TIM5_IRQHandler ; TIM5
|
||||||
|
DCD SPI3_IRQHandler ; SPI3
|
||||||
|
DCD UART4_IRQHandler ; UART4
|
||||||
|
DCD UART5_IRQHandler ; UART5
|
||||||
|
DCD TIM6_IRQHandler ; TIM6
|
||||||
|
DCD TIM7_IRQHandler ; TIM7
|
||||||
|
DCD DMA2_Channel1_IRQHandler ; DMA2 Channel1
|
||||||
|
DCD DMA2_Channel2_IRQHandler ; DMA2 Channel2
|
||||||
|
DCD DMA2_Channel3_IRQHandler ; DMA2 Channel3
|
||||||
|
DCD DMA2_Channel4_5_IRQHandler ; DMA2 Channel4 & Channel5
|
||||||
|
__Vectors_End
|
||||||
|
|
||||||
|
__Vectors_Size EQU __Vectors_End - __Vectors
|
||||||
|
|
||||||
|
AREA |.text|, CODE, READONLY
|
||||||
|
|
||||||
|
; Reset handler
|
||||||
|
Reset_Handler PROC
|
||||||
|
EXPORT Reset_Handler [WEAK]
|
||||||
|
IMPORT __main
|
||||||
|
IMPORT SystemInit
|
||||||
|
LDR R0, =SystemInit
|
||||||
|
BLX R0
|
||||||
|
LDR R0, =__main
|
||||||
|
BX R0
|
||||||
|
ENDP
|
||||||
|
|
||||||
|
; Dummy Exception Handlers (infinite loops which can be modified)
|
||||||
|
|
||||||
|
NMI_Handler PROC
|
||||||
|
EXPORT NMI_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
HardFault_Handler\
|
||||||
|
PROC
|
||||||
|
EXPORT HardFault_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
MemManage_Handler\
|
||||||
|
PROC
|
||||||
|
EXPORT MemManage_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
BusFault_Handler\
|
||||||
|
PROC
|
||||||
|
EXPORT BusFault_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
UsageFault_Handler\
|
||||||
|
PROC
|
||||||
|
EXPORT UsageFault_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
SVC_Handler PROC
|
||||||
|
EXPORT SVC_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
DebugMon_Handler\
|
||||||
|
PROC
|
||||||
|
EXPORT DebugMon_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
PendSV_Handler PROC
|
||||||
|
EXPORT PendSV_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
SysTick_Handler PROC
|
||||||
|
EXPORT SysTick_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
|
||||||
|
Default_Handler PROC
|
||||||
|
|
||||||
|
EXPORT WWDG_IRQHandler [WEAK]
|
||||||
|
EXPORT PVD_IRQHandler [WEAK]
|
||||||
|
EXPORT TAMPER_IRQHandler [WEAK]
|
||||||
|
EXPORT RTC_IRQHandler [WEAK]
|
||||||
|
EXPORT FLASH_IRQHandler [WEAK]
|
||||||
|
EXPORT RCC_IRQHandler [WEAK]
|
||||||
|
EXPORT EXTI0_IRQHandler [WEAK]
|
||||||
|
EXPORT EXTI1_IRQHandler [WEAK]
|
||||||
|
EXPORT EXTI2_IRQHandler [WEAK]
|
||||||
|
EXPORT EXTI3_IRQHandler [WEAK]
|
||||||
|
EXPORT EXTI4_IRQHandler [WEAK]
|
||||||
|
EXPORT DMA1_Channel1_IRQHandler [WEAK]
|
||||||
|
EXPORT DMA1_Channel2_IRQHandler [WEAK]
|
||||||
|
EXPORT DMA1_Channel3_IRQHandler [WEAK]
|
||||||
|
EXPORT DMA1_Channel4_IRQHandler [WEAK]
|
||||||
|
EXPORT DMA1_Channel5_IRQHandler [WEAK]
|
||||||
|
EXPORT DMA1_Channel6_IRQHandler [WEAK]
|
||||||
|
EXPORT DMA1_Channel7_IRQHandler [WEAK]
|
||||||
|
EXPORT ADC1_2_IRQHandler [WEAK]
|
||||||
|
EXPORT USB_HP_CAN1_TX_IRQHandler [WEAK]
|
||||||
|
EXPORT USB_LP_CAN1_RX0_IRQHandler [WEAK]
|
||||||
|
EXPORT CAN1_RX1_IRQHandler [WEAK]
|
||||||
|
EXPORT CAN1_SCE_IRQHandler [WEAK]
|
||||||
|
EXPORT EXTI9_5_IRQHandler [WEAK]
|
||||||
|
EXPORT TIM1_BRK_IRQHandler [WEAK]
|
||||||
|
EXPORT TIM1_UP_IRQHandler [WEAK]
|
||||||
|
EXPORT TIM1_TRG_COM_IRQHandler [WEAK]
|
||||||
|
EXPORT TIM1_CC_IRQHandler [WEAK]
|
||||||
|
EXPORT TIM2_IRQHandler [WEAK]
|
||||||
|
EXPORT TIM3_IRQHandler [WEAK]
|
||||||
|
EXPORT TIM4_IRQHandler [WEAK]
|
||||||
|
EXPORT I2C1_EV_IRQHandler [WEAK]
|
||||||
|
EXPORT I2C1_ER_IRQHandler [WEAK]
|
||||||
|
EXPORT I2C2_EV_IRQHandler [WEAK]
|
||||||
|
EXPORT I2C2_ER_IRQHandler [WEAK]
|
||||||
|
EXPORT SPI1_IRQHandler [WEAK]
|
||||||
|
EXPORT SPI2_IRQHandler [WEAK]
|
||||||
|
EXPORT USART1_IRQHandler [WEAK]
|
||||||
|
EXPORT USART2_IRQHandler [WEAK]
|
||||||
|
EXPORT USART3_IRQHandler [WEAK]
|
||||||
|
EXPORT EXTI15_10_IRQHandler [WEAK]
|
||||||
|
EXPORT RTC_Alarm_IRQHandler [WEAK]
|
||||||
|
EXPORT USBWakeUp_IRQHandler [WEAK]
|
||||||
|
EXPORT TIM8_BRK_IRQHandler [WEAK]
|
||||||
|
EXPORT TIM8_UP_IRQHandler [WEAK]
|
||||||
|
EXPORT TIM8_TRG_COM_IRQHandler [WEAK]
|
||||||
|
EXPORT TIM8_CC_IRQHandler [WEAK]
|
||||||
|
EXPORT ADC3_IRQHandler [WEAK]
|
||||||
|
EXPORT FSMC_IRQHandler [WEAK]
|
||||||
|
EXPORT SDIO_IRQHandler [WEAK]
|
||||||
|
EXPORT TIM5_IRQHandler [WEAK]
|
||||||
|
EXPORT SPI3_IRQHandler [WEAK]
|
||||||
|
EXPORT UART4_IRQHandler [WEAK]
|
||||||
|
EXPORT UART5_IRQHandler [WEAK]
|
||||||
|
EXPORT TIM6_IRQHandler [WEAK]
|
||||||
|
EXPORT TIM7_IRQHandler [WEAK]
|
||||||
|
EXPORT DMA2_Channel1_IRQHandler [WEAK]
|
||||||
|
EXPORT DMA2_Channel2_IRQHandler [WEAK]
|
||||||
|
EXPORT DMA2_Channel3_IRQHandler [WEAK]
|
||||||
|
EXPORT DMA2_Channel4_5_IRQHandler [WEAK]
|
||||||
|
|
||||||
|
WWDG_IRQHandler
|
||||||
|
PVD_IRQHandler
|
||||||
|
TAMPER_IRQHandler
|
||||||
|
RTC_IRQHandler
|
||||||
|
FLASH_IRQHandler
|
||||||
|
RCC_IRQHandler
|
||||||
|
EXTI0_IRQHandler
|
||||||
|
EXTI1_IRQHandler
|
||||||
|
EXTI2_IRQHandler
|
||||||
|
EXTI3_IRQHandler
|
||||||
|
EXTI4_IRQHandler
|
||||||
|
DMA1_Channel1_IRQHandler
|
||||||
|
DMA1_Channel2_IRQHandler
|
||||||
|
DMA1_Channel3_IRQHandler
|
||||||
|
DMA1_Channel4_IRQHandler
|
||||||
|
DMA1_Channel5_IRQHandler
|
||||||
|
DMA1_Channel6_IRQHandler
|
||||||
|
DMA1_Channel7_IRQHandler
|
||||||
|
ADC1_2_IRQHandler
|
||||||
|
USB_HP_CAN1_TX_IRQHandler
|
||||||
|
USB_LP_CAN1_RX0_IRQHandler
|
||||||
|
CAN1_RX1_IRQHandler
|
||||||
|
CAN1_SCE_IRQHandler
|
||||||
|
EXTI9_5_IRQHandler
|
||||||
|
TIM1_BRK_IRQHandler
|
||||||
|
TIM1_UP_IRQHandler
|
||||||
|
TIM1_TRG_COM_IRQHandler
|
||||||
|
TIM1_CC_IRQHandler
|
||||||
|
TIM2_IRQHandler
|
||||||
|
TIM3_IRQHandler
|
||||||
|
TIM4_IRQHandler
|
||||||
|
I2C1_EV_IRQHandler
|
||||||
|
I2C1_ER_IRQHandler
|
||||||
|
I2C2_EV_IRQHandler
|
||||||
|
I2C2_ER_IRQHandler
|
||||||
|
SPI1_IRQHandler
|
||||||
|
SPI2_IRQHandler
|
||||||
|
USART1_IRQHandler
|
||||||
|
USART2_IRQHandler
|
||||||
|
USART3_IRQHandler
|
||||||
|
EXTI15_10_IRQHandler
|
||||||
|
RTC_Alarm_IRQHandler
|
||||||
|
USBWakeUp_IRQHandler
|
||||||
|
TIM8_BRK_IRQHandler
|
||||||
|
TIM8_UP_IRQHandler
|
||||||
|
TIM8_TRG_COM_IRQHandler
|
||||||
|
TIM8_CC_IRQHandler
|
||||||
|
ADC3_IRQHandler
|
||||||
|
FSMC_IRQHandler
|
||||||
|
SDIO_IRQHandler
|
||||||
|
TIM5_IRQHandler
|
||||||
|
SPI3_IRQHandler
|
||||||
|
UART4_IRQHandler
|
||||||
|
UART5_IRQHandler
|
||||||
|
TIM6_IRQHandler
|
||||||
|
TIM7_IRQHandler
|
||||||
|
DMA2_Channel1_IRQHandler
|
||||||
|
DMA2_Channel2_IRQHandler
|
||||||
|
DMA2_Channel3_IRQHandler
|
||||||
|
DMA2_Channel4_5_IRQHandler
|
||||||
|
B .
|
||||||
|
|
||||||
|
ENDP
|
||||||
|
|
||||||
|
ALIGN
|
||||||
|
|
||||||
|
;*******************************************************************************
|
||||||
|
; User Stack and Heap initialization
|
||||||
|
;*******************************************************************************
|
||||||
|
IF :DEF:__MICROLIB
|
||||||
|
|
||||||
|
EXPORT __initial_sp
|
||||||
|
EXPORT __heap_base
|
||||||
|
EXPORT __heap_limit
|
||||||
|
|
||||||
|
ELSE
|
||||||
|
|
||||||
|
IMPORT __use_two_region_memory
|
||||||
|
EXPORT __user_initial_stackheap
|
||||||
|
|
||||||
|
__user_initial_stackheap
|
||||||
|
|
||||||
|
LDR R0, = Heap_Mem
|
||||||
|
LDR R1, =(Stack_Mem + Stack_Size)
|
||||||
|
LDR R2, = (Heap_Mem + Heap_Size)
|
||||||
|
LDR R3, = Stack_Mem
|
||||||
|
BX LR
|
||||||
|
|
||||||
|
ALIGN
|
||||||
|
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE*****
|
|
@ -112,7 +112,14 @@ To build and flash choose one of the following methods:
|
||||||
- open the folder in the IDE of choice (vscode or Atom)
|
- open the folder in the IDE of choice (vscode or Atom)
|
||||||
- press the 'PlatformIO:Build' or the 'PlatformIO:Upload' button (bottom left in vscode).
|
- press the 'PlatformIO:Build' or the 'PlatformIO:Upload' button (bottom left in vscode).
|
||||||
|
|
||||||
### Method 2: Using Ubuntu
|
### Method 2: Using Keil uVision
|
||||||
|
|
||||||
|
- in [Keil uVision](https://www.keil.com/download/product/), open the [mainboard-hack.uvproj](/MDK-ARM/)
|
||||||
|
- if you are asked to install missing packages, click Yes
|
||||||
|
- click Build Target (or press F7) to build the firmware
|
||||||
|
- click Load Code (or press F8) to flash the firmware.
|
||||||
|
|
||||||
|
### Method 3: Using Ubuntu
|
||||||
|
|
||||||
- prerequisites: install [ST-Flash utility](https://github.com/texane/stlink).
|
- prerequisites: install [ST-Flash utility](https://github.com/texane/stlink).
|
||||||
- open a terminal in the repo check-out folder and type:
|
- open a terminal in the repo check-out folder and type:
|
||||||
|
|
|
@ -136,7 +136,7 @@ void DMA1_Channel1_IRQHandler(void) {
|
||||||
HAL_GPIO_TogglePin(BUZZER_PORT, BUZZER_PIN);
|
HAL_GPIO_TogglePin(BUZZER_PORT, BUZZER_PIN);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
HAL_GPIO_WritePin(BUZZER_PORT, BUZZER_PIN, 0);
|
HAL_GPIO_WritePin(BUZZER_PORT, BUZZER_PIN, GPIO_PIN_RESET);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ############################### MOTOR CONTROL ###############################
|
// ############################### MOTOR CONTROL ###############################
|
||||||
|
|
46
Src/main.c
46
Src/main.c
|
@ -26,14 +26,12 @@
|
||||||
#include "setup.h"
|
#include "setup.h"
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include "comms.h"
|
#include "comms.h"
|
||||||
|
#include "eeprom.h"
|
||||||
|
|
||||||
#if defined(DEBUG_I2C_LCD) || defined(SUPPORT_LCD)
|
#if defined(DEBUG_I2C_LCD) || defined(SUPPORT_LCD)
|
||||||
#include "hd44780.h"
|
#include "hd44780.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef VARIANT_TRANSPOTTER
|
|
||||||
#include "eeprom.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Matlab includes and defines - from auto-code generation
|
// Matlab includes and defines - from auto-code generation
|
||||||
// ###############################################################################
|
// ###############################################################################
|
||||||
|
@ -45,7 +43,7 @@ RT_MODEL rtM_Right_; /* Real-time model */
|
||||||
RT_MODEL *const rtM_Left = &rtM_Left_;
|
RT_MODEL *const rtM_Left = &rtM_Left_;
|
||||||
RT_MODEL *const rtM_Right = &rtM_Right_;
|
RT_MODEL *const rtM_Right = &rtM_Right_;
|
||||||
|
|
||||||
P rtP_Left; /* Block parameters (auto storage) */
|
extern P rtP_Left; /* Block parameters (auto storage) */
|
||||||
DW rtDW_Left; /* Observable states */
|
DW rtDW_Left; /* Observable states */
|
||||||
ExtU rtU_Left; /* External inputs */
|
ExtU rtU_Left; /* External inputs */
|
||||||
ExtY rtY_Left; /* External outputs */
|
ExtY rtY_Left; /* External outputs */
|
||||||
|
@ -98,6 +96,7 @@ extern I2C_HandleTypeDef hi2c2;
|
||||||
uint16_t counter = 0;
|
uint16_t counter = 0;
|
||||||
#else
|
#else
|
||||||
uint8_t nunchuk_connected = 1;
|
uint8_t nunchuk_connected = 1;
|
||||||
|
uint16_t VirtAddVarTab[NB_OF_VAR] = {0x1300}; // Dummy address to avoid warnings
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(CONTROL_ADC) && defined(ADC_PROTECT_ENA)
|
#if defined(CONTROL_ADC) && defined(ADC_PROTECT_ENA)
|
||||||
|
@ -146,25 +145,24 @@ typedef struct{
|
||||||
static SerialFeedback Feedback;
|
static SerialFeedback Feedback;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(CONTROL_NUNCHUK) || defined(SUPPORT_NUNCHUK) || defined(CONTROL_PPM) || defined(CONTROL_ADC)
|
#ifdef SUPPORT_BUTTONS
|
||||||
static uint8_t button1, button2;
|
static uint8_t button1, button2;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
uint8_t ctrlModReqRaw = CTRL_MOD_REQ;
|
uint8_t ctrlModReqRaw = CTRL_MOD_REQ;
|
||||||
uint8_t ctrlModReq = CTRL_MOD_REQ; // Final control mode request
|
uint8_t ctrlModReq = CTRL_MOD_REQ; // Final control mode request
|
||||||
static int cmd1; // normalized input value. -1000 to 1000
|
|
||||||
static int cmd2; // normalized input value. -1000 to 1000
|
|
||||||
static int16_t speed; // local variable for speed. -1000 to 1000
|
static int16_t speed; // local variable for speed. -1000 to 1000
|
||||||
#ifndef VARIANT_TRANSPOTTER
|
#ifndef VARIANT_TRANSPOTTER
|
||||||
|
static int cmd1; // normalized input value. -1000 to 1000
|
||||||
|
static int cmd2; // normalized input value. -1000 to 1000
|
||||||
static int16_t steer; // local variable for steering. -1000 to 1000
|
static int16_t steer; // local variable for steering. -1000 to 1000
|
||||||
static int16_t steerRateFixdt; // local fixed-point variable for steering rate limiter
|
static int16_t steerRateFixdt; // local fixed-point variable for steering rate limiter
|
||||||
static int16_t speedRateFixdt; // local fixed-point variable for speed rate limiter
|
static int16_t speedRateFixdt; // local fixed-point variable for speed rate limiter
|
||||||
static int32_t steerFixdt; // local fixed-point variable for steering low-pass filter
|
static int32_t steerFixdt; // local fixed-point variable for steering low-pass filter
|
||||||
static int32_t speedFixdt; // local fixed-point variable for speed low-pass filter
|
static int32_t speedFixdt; // local fixed-point variable for speed low-pass filter
|
||||||
#endif
|
#endif
|
||||||
#ifdef VARIANT_HOVERCAR
|
static MultipleTap MultipleTapBreak; // define multiple tap functionality for the Break pedal
|
||||||
static MultipleTap MultipleTapBreak; // define multiple tap functionality for the Break pedal
|
|
||||||
#endif
|
|
||||||
static int16_t speedAvg; // average measured speed
|
static int16_t speedAvg; // average measured speed
|
||||||
static int16_t speedAvgAbs; // average measured speed in absolute
|
static int16_t speedAvgAbs; // average measured speed in absolute
|
||||||
|
|
||||||
|
@ -197,7 +195,7 @@ void poweroff(void) {
|
||||||
buzzerFreq = (uint8_t)i;
|
buzzerFreq = (uint8_t)i;
|
||||||
HAL_Delay(100);
|
HAL_Delay(100);
|
||||||
}
|
}
|
||||||
HAL_GPIO_WritePin(OFF_PORT, OFF_PIN, 0);
|
HAL_GPIO_WritePin(OFF_PORT, OFF_PIN, GPIO_PIN_RESET);
|
||||||
while(1) {}
|
while(1) {}
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
@ -232,7 +230,7 @@ int main(void) {
|
||||||
MX_ADC1_Init();
|
MX_ADC1_Init();
|
||||||
MX_ADC2_Init();
|
MX_ADC2_Init();
|
||||||
|
|
||||||
HAL_GPIO_WritePin(OFF_PORT, OFF_PIN, 1);
|
HAL_GPIO_WritePin(OFF_PORT, OFF_PIN, GPIO_PIN_SET);
|
||||||
|
|
||||||
HAL_ADC_Start(&hadc1);
|
HAL_ADC_Start(&hadc1);
|
||||||
HAL_ADC_Start(&hadc2);
|
HAL_ADC_Start(&hadc2);
|
||||||
|
@ -279,7 +277,7 @@ int main(void) {
|
||||||
}
|
}
|
||||||
buzzerFreq = 0;
|
buzzerFreq = 0;
|
||||||
|
|
||||||
HAL_GPIO_WritePin(LED_PORT, LED_PIN, 1);
|
HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_SET);
|
||||||
|
|
||||||
#ifdef VARIANT_TRANSPOTTER
|
#ifdef VARIANT_TRANSPOTTER
|
||||||
int lastDistance = 0;
|
int lastDistance = 0;
|
||||||
|
@ -458,17 +456,21 @@ int main(void) {
|
||||||
Nunchuk_Read();
|
Nunchuk_Read();
|
||||||
cmd1 = CLAMP((nunchuk_data[0] - 127) * 8, INPUT_MIN, INPUT_MAX); // x - axis. Nunchuk joystick readings range 30 - 230
|
cmd1 = CLAMP((nunchuk_data[0] - 127) * 8, INPUT_MIN, INPUT_MAX); // x - axis. Nunchuk joystick readings range 30 - 230
|
||||||
cmd2 = CLAMP((nunchuk_data[1] - 128) * 8, INPUT_MIN, INPUT_MAX); // y - axis
|
cmd2 = CLAMP((nunchuk_data[1] - 128) * 8, INPUT_MIN, INPUT_MAX); // y - axis
|
||||||
|
|
||||||
button1 = (uint8_t)nunchuk_data[5] & 1;
|
#ifdef SUPPORT_BUTTONS
|
||||||
button2 = (uint8_t)(nunchuk_data[5] >> 1) & 1;
|
button1 = (uint8_t)nunchuk_data[5] & 1;
|
||||||
|
button2 = (uint8_t)(nunchuk_data[5] >> 1) & 1;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONTROL_PPM
|
#ifdef CONTROL_PPM
|
||||||
cmd1 = CLAMP((ppm_captured_value[0] - INPUT_MID) * 2, INPUT_MIN, INPUT_MAX);
|
cmd1 = CLAMP((ppm_captured_value[0] - INPUT_MID) * 2, INPUT_MIN, INPUT_MAX);
|
||||||
cmd2 = CLAMP((ppm_captured_value[1] - INPUT_MID) * 2, INPUT_MIN, INPUT_MAX);
|
cmd2 = CLAMP((ppm_captured_value[1] - INPUT_MID) * 2, INPUT_MIN, INPUT_MAX);
|
||||||
button1 = ppm_captured_value[5] > INPUT_MID;
|
#ifdef SUPPORT_BUTTONS
|
||||||
button2 = 0;
|
button1 = ppm_captured_value[5] > INPUT_MID;
|
||||||
|
button2 = 0;
|
||||||
|
#endif
|
||||||
// float scale = ppm_captured_value[2] / 1000.0f; // not used for now, uncomment if needed
|
// float scale = ppm_captured_value[2] / 1000.0f; // not used for now, uncomment if needed
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -514,8 +516,10 @@ int main(void) {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// use ADCs as button inputs:
|
// use ADCs as button inputs:
|
||||||
button1 = (uint8_t)(adc_buffer.l_tx2 > 2000); // ADC1
|
#ifdef SUPPORT_BUTTONS
|
||||||
button2 = (uint8_t)(adc_buffer.l_rx2 > 2000); // ADC2
|
button1 = (uint8_t)(adc_buffer.l_tx2 > 2000); // ADC1
|
||||||
|
button2 = (uint8_t)(adc_buffer.l_rx2 > 2000); // ADC2
|
||||||
|
#endif
|
||||||
|
|
||||||
timeout = 0;
|
timeout = 0;
|
||||||
#endif
|
#endif
|
||||||
|
@ -833,7 +837,7 @@ int main(void) {
|
||||||
} else if (timeoutFlagADC || timeoutFlagSerial) { // beep in case of ADC or Serial timeout - fast beep
|
} else if (timeoutFlagADC || timeoutFlagSerial) { // beep in case of ADC or Serial timeout - fast beep
|
||||||
buzzerFreq = 24;
|
buzzerFreq = 24;
|
||||||
buzzerPattern = 1;
|
buzzerPattern = 1;
|
||||||
} else if (BEEPS_BACKWARD && speed < -50 && speedAvg < 0) { // backward beep
|
} else if (BEEPS_BACKWARD && ((speed < -50 && speedAvg < 0) || MultipleTapBreak.b_multipleTap)) { // backward beep
|
||||||
buzzerFreq = 5;
|
buzzerFreq = 5;
|
||||||
buzzerPattern = 1;
|
buzzerPattern = 1;
|
||||||
} else { // do not beep
|
} else { // do not beep
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 419 KiB After Width: | Height: | Size: 419 KiB |
|
@ -15,6 +15,7 @@ src_dir = Src
|
||||||
;default_envs = VARIANT_PPM ; Variant for RC-Remotes with PPM-Sum signal
|
;default_envs = VARIANT_PPM ; Variant for RC-Remotes with PPM-Sum signal
|
||||||
;default_envs = VARIANT_IBUS ; Variant for RC-Remotes with FLYSKY IBUS
|
;default_envs = VARIANT_IBUS ; Variant for RC-Remotes with FLYSKY IBUS
|
||||||
;default_envs = VARIANT_HOVERCAR ; Variant for HOVERCAR build
|
;default_envs = VARIANT_HOVERCAR ; Variant for HOVERCAR build
|
||||||
|
;default_envs = VARIANT_HOVERBOARD ; Variant for HOVERBOARD
|
||||||
;default_envs = VARIANT_TRANSPOTTER ; Variant for TRANSPOTTER build https://github.com/NiklasFauth/hoverboard-firmware-hack/wiki/Build-Instruction:-TranspOtter https://hackaday.io/project/161891-transpotter-ng
|
;default_envs = VARIANT_TRANSPOTTER ; Variant for TRANSPOTTER build https://github.com/NiklasFauth/hoverboard-firmware-hack/wiki/Build-Instruction:-TranspOtter https://hackaday.io/project/161891-transpotter-ng
|
||||||
;================================================================
|
;================================================================
|
||||||
|
|
||||||
|
@ -152,6 +153,30 @@ build_flags =
|
||||||
|
|
||||||
;================================================================
|
;================================================================
|
||||||
|
|
||||||
|
[env:VARIANT_HOVERBOARD]
|
||||||
|
platform = ststm32
|
||||||
|
framework = stm32cube
|
||||||
|
board = genericSTM32F103RC
|
||||||
|
debug_tool = stlink
|
||||||
|
upload_protocol = stlink
|
||||||
|
|
||||||
|
; Serial Port settings (make sure the COM port is correct)
|
||||||
|
monitor_port = COM5
|
||||||
|
monitor_speed = 38400
|
||||||
|
|
||||||
|
build_flags =
|
||||||
|
-I${PROJECT_DIR}/inc/
|
||||||
|
-DUSE_HAL_DRIVER
|
||||||
|
-DSTM32F103xE
|
||||||
|
-Wl,-T./STM32F103RCTx_FLASH.ld
|
||||||
|
-Wl,-lc
|
||||||
|
-Wl,-lm
|
||||||
|
-g -ggdb ; to generate correctly the 'firmware.elf' for STM STUDIO vizualization
|
||||||
|
# -Wl,-lnosys
|
||||||
|
-D VARIANT_HOVERBOARD
|
||||||
|
|
||||||
|
;================================================================
|
||||||
|
|
||||||
[env:VARIANT_TRANSPOTTER]
|
[env:VARIANT_TRANSPOTTER]
|
||||||
platform = ststm32
|
platform = ststm32
|
||||||
framework = stm32cube
|
framework = stm32cube
|
||||||
|
|
Loading…
Reference in New Issue