From 5edd735f725675b507bca54627031a9e692fc4d9 Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Mon, 18 Apr 2022 19:46:47 +1000 Subject: [PATCH] Buttons working --- source/Core/BSP/Magic/BSP.cpp | 15 +++++---------- source/Core/BSP/Magic/IRQ.cpp | 5 +++-- source/Core/BSP/Magic/Setup.cpp | 4 ++-- source/Core/Threads/GUIThread.cpp | 1 + 4 files changed, 11 insertions(+), 14 deletions(-) diff --git a/source/Core/BSP/Magic/BSP.cpp b/source/Core/BSP/Magic/BSP.cpp index f749a782..0fd337b4 100644 --- a/source/Core/BSP/Magic/BSP.cpp +++ b/source/Core/BSP/Magic/BSP.cpp @@ -22,7 +22,7 @@ void resetWatchdog() { } uint16_t getHandleTemperature(uint8_t sample) { -#ifdef TEMP_TMP36 + // We return the current handle temperature in X10 C // TMP36 in handle, 0.5V offset and then 10mV per deg C (0.75V @ 25C for // example) STM32 = 4096 count @ 3.3V input -> But We oversample by 32/(2^2) = @@ -37,9 +37,6 @@ uint16_t getHandleTemperature(uint8_t sample) { result *= 100; result /= 993; return result; -#else -#error only uses TMP36 -#endif } uint16_t getInputVoltageX10(uint16_t divisor, uint8_t sample) { @@ -73,14 +70,12 @@ void unstick_I2C() { } uint8_t getButtonA() { - //#TODO - return false; - // return (gpio_input_bit_get(KEY_A_GPIO_Port, KEY_A_Pin) == SET) ? 1 : 0; + uint8_t val = gpio_read(KEY_A_Pin); + return val; } uint8_t getButtonB() { - //#TODO - return false; - // return (gpio_input_bit_get(KEY_B_GPIO_Port, KEY_B_Pin) == SET) ? 1 : 0; + uint8_t val = gpio_read(KEY_B_Pin); + return val; } void reboot() { diff --git a/source/Core/BSP/Magic/IRQ.cpp b/source/Core/BSP/Magic/IRQ.cpp index 92f6bd3a..75e0b09f 100644 --- a/source/Core/BSP/Magic/IRQ.cpp +++ b/source/Core/BSP/Magic/IRQ.cpp @@ -131,7 +131,7 @@ void timer0_irq_callback(struct device *dev, void *args, uint32_t size, uint32_t portYIELD_FROM_ISR(xHigherPriorityTaskWoken); } } - MSG((char *)"timer event comp2! \r\n"); + // MSG((char *)"timer event comp2! \r\n"); } } @@ -173,6 +173,7 @@ void setTipPWM(const uint8_t pulse, const bool shouldUseFastModePWM) { // disabled if the PID task is not scheduled often enough. pendingPWM = pulse; fastPWM = shouldUseFastModePWM; + MSG((char *)"PWM Output %d, %d\r\n", pulse, (int)shouldUseFastModePWM); } extern osThreadId POWTaskHandle; @@ -199,7 +200,7 @@ bool getFUS302IRQLow() { // return (RESET == gpio_input_bit_get(FUSB302_IRQ_GPIO_Port, FUSB302_IRQ_Pin)); } -uint16_t getADCHandleTemp(uint8_t sample) { return ADC_Temp.average(); } +uint16_t getADCHandleTemp(uint8_t sample) { return ADC_Temp.average() >> 1; } uint16_t getADCVin(uint8_t sample) { return ADC_Vin.average(); } diff --git a/source/Core/BSP/Magic/Setup.cpp b/source/Core/BSP/Magic/Setup.cpp index 702c99d7..83925c65 100644 --- a/source/Core/BSP/Magic/Setup.cpp +++ b/source/Core/BSP/Magic/Setup.cpp @@ -23,8 +23,8 @@ void setup_slow_PWM(); void setup_adc(void); void hardware_init() { gpio_set_mode(OLED_RESET_Pin, GPIO_OUTPUT_MODE); - // gpio_set_mode(KEY_A_Pin, GPIO_INPUT_PD_MODE); - // gpio_set_mode(KEY_B_Pin, GPIO_INPUT_PD_MODE); + gpio_set_mode(KEY_A_Pin, GPIO_INPUT_PD_MODE); + gpio_set_mode(KEY_B_Pin, GPIO_INPUT_PD_MODE); setup_slow_PWM(); setup_adc(); } diff --git a/source/Core/Threads/GUIThread.cpp b/source/Core/Threads/GUIThread.cpp index d9582bdb..460f9b32 100644 --- a/source/Core/Threads/GUIThread.cpp +++ b/source/Core/Threads/GUIThread.cpp @@ -896,6 +896,7 @@ void startGUITask(void const *argument) { for (;;) { ButtonState buttons = getButtonState(); + MSG((char *)"Buttons %d\r\n", int(buttons)); if (buttons != BUTTON_NONE) { OLED::setDisplayState(OLED::DisplayState::ON); }