/* Reflow Oven Controller * * Copyright (C) 2020 Mario Hüttel * * This file is part of the Reflow Oven Controller Project. * * The reflow oven controller is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * * The Reflow Oven Control Firmware is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the reflow oven controller project. * If not, see . */ #ifndef __SAFETY_CONFIG_H__ #define __SAFETY_CONFIG_H__ enum safety_flag { ERR_FLAG_MEAS_ADC_OFF = (1<<0), ERR_FLAG_MEAS_ADC_OVERFLOW = (1<<1), ERR_FLAG_MEAS_ADC_WATCHDOG = (1<<2), ERR_FLAG_MEAS_ADC_UNSTABLE = (1<<3), ERR_FLAG_TIMING_PID = (1<<4), ERR_FLAG_TIMING_MEAS_ADC = (1<<5), ERR_FLAG_AMON_VREF = (1<<6), ERR_FLAG_AMON_UC_TEMP = (1<<7), ERR_FLAG_STACK = (1<<8), }; enum timing_monitor { ERR_TIMING_PID = (1<<0), ERR_TIMING_MEAS_ADC = (1<<1), ERR_TIMING_SAFETY_ADC = (1<<2), }; enum analog_value_monitor { ERR_AMON_VREF = (1<<0), ERR_AMON_UC_TEMP = (1<<1), }; /** * @brief Magic key used to reset the watchdog using the @ref watchdog_ack function */ #define WATCHDOG_MAGIC_KEY 0x1a2c56F4 /** * @brief If one, the watchdog is halted whenever the core is halted by the debugger. * * This is only applicable in a debug build. In release mode, the watchdog stays always enabled */ #define WATCHDOG_HALT_DEBUG (1) #define WATCHDOG_PRESCALER 4 #define SAFETY_MIN_STACK_FREE 0x100 #define PID_CONTROLLER_ERR_CAREMASK (ERR_FLAG_STACK | ERR_FLAG_AMON_UC_TEMP | ERR_FLAG_AMON_VREF | \ ERR_FLAG_TIMING_PID | ERR_FLAG_TIMING_MEAS_ADC | ERR_FLAG_MEAS_ADC_OFF | \ ERR_FLAG_MEAS_ADC_OVERFLOW) #define HALTING_CAREMASK (ERR_FLAG_STACK | ERR_FLAG_AMON_UC_TEMP) #endif /* __SAFETY_CONFIG_H__ */