Add overtemperature shutdown

This commit is contained in:
Mario Hüttel 2021-05-10 18:44:56 +02:00
parent d9769e7b34
commit 93d15fc549

View File

@ -4,6 +4,7 @@
#include <ring-light/temp-adc.h> #include <ring-light/temp-adc.h>
#define RING_MAX_LED 32u #define RING_MAX_LED 32u
#define MAX_TEMP_CELSIUS 70
enum ring_modes { enum ring_modes {
RING_MODE_ALL, /*!< control all LEDs at once */ RING_MODE_ALL, /*!< control all LEDs at once */
@ -63,30 +64,37 @@ int main(void)
TIM3->PSC = 0; TIM3->PSC = 0;
TIM3->CR1 = TIM_CR1_CEN; TIM3->CR1 = TIM_CR1_CEN;
/*! -# init TIM14 for PWM control of the magic LED driver */ /*! -# Init TIM14 for PWM control of the magic LED driver */
/*! -# count up to 255 (0 bit resolution) */ /*! -# Count up to 255 (8 bit resolution) */
TIM14->ARR = 0x00FFu; TIM14->ARR = 0x00FFu;
TIM14->CNT = 0u; TIM14->CNT = 0u;
TIM14->CCR1 = 0u; TIM14->CCR1 = 0u;
/*! -# set prescaler to 16 ==> ca. 11 KHz */ /*! -# Set prescaler to 16 ==> ca. 11 KHz */
TIM14->PSC = 15u; TIM14->PSC = 15u;
/*! -# PWM Mode 1 + prefetch */ /*! -# PWM Mode 1 + prefetch */
TIM14->CCMR1 = TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1PE; TIM14->CCMR1 = TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1PE;
/*! -# enable Output compare 1 */ /*! -# Enable Output compare 1 */
TIM14->CCER = TIM_CCER_CC1E; TIM14->CCER = TIM_CCER_CC1E;
/*! -# finally enable TIM14 */ /*! -# Finally, enable TIM14 */
TIM14->CR2 = 0; TIM14->CR2 = 0;
TIM14->CR1 = TIM_CR1_CEN; TIM14->CR1 = TIM_CR1_CEN;
/*! -# set initial state to all 25% */ /*! -# Set initial state to all 25% */
led_val = 64u; led_val = 64u;
mode = RING_MODE_ALL; mode = RING_MODE_WHITE_DISCRETE;
temperature_adc_init(); temperature_adc_init();
SysTick_Config(800000); SysTick_Config(800000);
while(1) { while(1) {
temperature = temperature_adc_get_temp(); temperature = temperature_adc_get_temp();
/*! -# Gradually dim down the LED brightness in case the temperature is too high */
if (temperature > ((MAX_TEMP_CELSIUS) * 10)) {
if (led_val > 20)
led_val--;
}
led_pwm_val = 0u; led_pwm_val = 0u;
switch (mode) switch (mode)
{ {