/* 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 __WATCHDOG_H__ #define __WATCHDOG_H__ #include #include #include /** * @brief Setup the watchdog for the safety controller * * The watchdog timeout can be calculated with: * \f[ t = \frac{(\mathrm{RELOAD_VAL} + 1)\cdot \mathrm{PRESCALER}}{32000 } s\f] * * Valid prescaler values are: 4, 8, 16, 32, 64, 128, 256. * @param prescaler Prescaler to use for the 32 KHz LSI clock * @param reload_value Reload value to reload the timer with when reset. 0 to 0xFFF * @return 0 if successful * @return -1 if prescaler is wrong * @return -2 if a reload value > 0xFFF is selected. 0xFFF will be used in this case * @note Once the watchdog is enabled, it cannot be turned off! */ int watchdog_setup(uint16_t prescaler, uint16_t reload_value); /** * @brief Reset watchdog counter * @param magic Magic value to prevent this fuinction from being called randomly * @return 0 if successful */ int watchdog_ack(uint32_t magic); #endif /* __WATCHDOG_H__ */