mirror of https://github.com/rusefi/bldc.git
supports shutdown
This commit is contained in:
parent
a062730113
commit
e934541740
|
@ -15,7 +15,6 @@
|
||||||
//
|
//
|
||||||
|
|
||||||
#include "hw.h"
|
#include "hw.h"
|
||||||
|
|
||||||
#include "ch.h"
|
#include "ch.h"
|
||||||
#include "hal.h"
|
#include "hal.h"
|
||||||
#include "stm32f4xx_conf.h"
|
#include "stm32f4xx_conf.h"
|
||||||
|
@ -25,6 +24,8 @@
|
||||||
|
|
||||||
// Variables
|
// Variables
|
||||||
static volatile bool i2c_running = false;
|
static volatile bool i2c_running = false;
|
||||||
|
static mutex_t shutdown_mutex;
|
||||||
|
static float bt_diff = 0.0;
|
||||||
|
|
||||||
// I2C configuration
|
// I2C configuration
|
||||||
static const I2CConfig i2cfg = {
|
static const I2CConfig i2cfg = {
|
||||||
|
@ -34,6 +35,7 @@ static const I2CConfig i2cfg = {
|
||||||
};
|
};
|
||||||
|
|
||||||
void hw_init_gpio(void) {
|
void hw_init_gpio(void) {
|
||||||
|
chMtxObjectInit(&shutdown_mutex);
|
||||||
// GPIO clock enable
|
// GPIO clock enable
|
||||||
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
|
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
|
||||||
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
|
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
|
||||||
|
@ -109,7 +111,7 @@ void hw_init_gpio(void) {
|
||||||
palSetPadMode(GPIOC, 2, PAL_MODE_INPUT_ANALOG);
|
palSetPadMode(GPIOC, 2, PAL_MODE_INPUT_ANALOG);
|
||||||
palSetPadMode(GPIOC, 3, PAL_MODE_INPUT_ANALOG);
|
palSetPadMode(GPIOC, 3, PAL_MODE_INPUT_ANALOG);
|
||||||
palSetPadMode(GPIOC, 4, PAL_MODE_INPUT_ANALOG);
|
palSetPadMode(GPIOC, 4, PAL_MODE_INPUT_ANALOG);
|
||||||
palSetPadMode(GPIOC, 5, PAL_MODE_INPUT_ANALOG);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void hw_setup_adc_channels(void) {
|
void hw_setup_adc_channels(void) {
|
||||||
|
@ -258,4 +260,26 @@ float hw84_100_get_temp(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool hw_sample_shutdown_button(void) {
|
||||||
|
chMtxLock(&shutdown_mutex);
|
||||||
|
|
||||||
|
bt_diff = 0.0;
|
||||||
|
|
||||||
|
for (int i = 0;i < 3;i++) {
|
||||||
|
palSetPadMode(HW_SHUTDOWN_GPIO, HW_SHUTDOWN_PIN, PAL_MODE_INPUT_ANALOG);
|
||||||
|
chThdSleep(5);
|
||||||
|
float val1 = ADC_VOLTS(ADC_IND_SHUTDOWN);
|
||||||
|
chThdSleepMilliseconds(1);
|
||||||
|
float val2 = ADC_VOLTS(ADC_IND_SHUTDOWN);
|
||||||
|
palSetPadMode(HW_SHUTDOWN_GPIO, HW_SHUTDOWN_PIN, PAL_MODE_OUTPUT_PUSHPULL);
|
||||||
|
chThdSleepMilliseconds(1);
|
||||||
|
|
||||||
|
bt_diff += (val1 - val2);
|
||||||
|
}
|
||||||
|
|
||||||
|
chMtxUnlock(&shutdown_mutex);
|
||||||
|
|
||||||
|
return (bt_diff > 0.12);
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue