More refinements to the HCI calibration

pull/62/head
Mike Hojnowski 2023-10-11 14:12:26 -04:00
rodzic 324c3bf83b
commit 0901b02de4
5 zmienionych plików z 61 dodań i 2 usunięć

Wyświetl plik

@ -69,6 +69,9 @@
#define BANK_GREEN_LED GPIOC
#define PIN_GREEN_LED GPIO_Pin_6
#define BANK_YELLOW_LED GPIOC
#define PIN_YELLOW_LED GPIO_Pin_7
#define BANK_MOSI GPIOA
#define PIN_MOSI GPIO_Pin_7
#define BANK_SCK GPIOA

Wyświetl plik

@ -12,6 +12,7 @@
#include "delay.h"
#include "log.h"
#include "gpio.h"
#include "millis.h"
#define BUTTON_PRESS_LONG_COUNT SYSTEM_SCHEDULER_TIMER_TICKS_PER_SECOND
@ -126,6 +127,15 @@ static void gpio_init()
gpio_init.GPIO_Mode = GPIO_Mode_Out_PP;
gpio_init.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(BANK_RED_LED, &gpio_init);
#ifdef DFM17
// Yellow LED
gpio_init.GPIO_Pin = PIN_YELLOW_LED;
gpio_init.GPIO_Mode = GPIO_Mode_Out_PP;
gpio_init.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(BANK_YELLOW_LED, &gpio_init);
#endif //DFM17
}
/**
@ -343,6 +353,24 @@ void system_set_red_led(bool enabled)
#endif
}
void system_set_yellow_led(bool enabled)
{
#ifdef RS41
if (enabled) {
GPIO_ResetBits(BANK_YELLOW_LED, PIN_YELLOW_LED);
} else {
GPIO_SetBits(BANK_YELLOW_LED, PIN_YELLOW_LED);
}
#endif
#ifdef DFM17
if (enabled) {
GPIO_SetBits(BANK_YELLOW_LED, PIN_YELLOW_LED);
} else {
GPIO_ResetBits(BANK_YELLOW_LED, PIN_YELLOW_LED);
}
#endif
}
void system_disable_irq()
{
__disable_irq();

Wyświetl plik

@ -1,6 +1,7 @@
#ifndef __HAL_SYSTEM_H
#define __HAL_SYSTEM_H
#include "config.h"
#include "hal.h"
#define GPIO_PIN_LED_GREEN GPIO_Pin_7
@ -17,6 +18,9 @@ void system_disable_irq();
void system_enable_irq();
void system_set_green_led(bool enabled);
void system_set_red_led(bool enabled);
#ifdef DFM17
void system_set_yellow_led(bool enabled);
#endif //DFM17
uint16_t system_get_battery_voltage_millivolts();
uint16_t system_get_button_adc_value();

Wyświetl plik

@ -77,7 +77,7 @@ void EXTI9_5_IRQHandler(void)
old_millis = m; // First timepulse. Just store millis.
} else {
d_millis = m - old_millis;
delta = (int) (m - old_millis - 1000) / 5;
delta = (int) (1000 - d_millis) / 5;
if (((delta + calib_suggestion) >= 0) &&
((delta + calib_suggestion <= 31)) ) {
// If the delta makes sense, apply to the suggestion. Otherwise, skip.

Wyświetl plik

@ -1,3 +1,4 @@
#include "hal/stm_lib/inc/stm32f10x_rcc.h"
#include "hal/system.h"
#include "hal/spi.h"
#include "hal/usart_gps.h"
@ -13,6 +14,7 @@
#include "config.h"
#include "log.h"
#include "hal/timepulse.h"
#include "hal/millis.h"
#ifdef RS41
#include "hal/i2c.h"
@ -75,9 +77,24 @@ void set_red_led(bool enabled)
system_set_red_led(enabled);
}
#ifdef DFM17
void set_yellow_led(bool enabled)
{
if ((LEDS_DISABLE_ALTITUDE_METERS > 0) && (current_gps_data.altitude_mm / 1000 > LEDS_DISABLE_ALTITUDE_METERS)) {
enabled = false;
}
system_set_yellow_led(enabled);
}
#endif //DFM17
int main(void)
{
bool success;
bool yellowLEDstate = false;
int old_calib_suggestion = 16;
int calib_changes = 0;
// Set up interrupt handlers
system_handle_timer_tick = handle_timer_tick;
@ -121,8 +138,15 @@ int main(void)
timepulse_init();
while (1) {
if (timepulsed != 0) {
log_info("Time Pulse. Calib: %d, Delta: %d\n", calib_suggestion, d_millis);
log_info("Time Pulse. Calib: %d, Delta: %d\n", calib_suggestion, (int) d_millis);
timepulsed = 0;
if (calib_suggestion != old_calib_suggestion) {
old_calib_suggestion = calib_suggestion;
RCC_AdjustHSICalibrationValue(calib_suggestion);
yellowLEDstate = !yellowLEDstate;
set_yellow_led(yellowLEDstate);
calib_changes++;
}
}
}
#endif //DFM17