Added Interlock

Fixed PID regulation functionality

git-svn-id: https://svn.vbchaos.nl/svn/hsb/trunk@250 05563f52-14a8-4384-a975-3d1654cca0fa
This commit is contained in:
mmi
2017-10-12 07:16:50 +00:00
parent 3df93a80d7
commit 54b6afe5a3
19 changed files with 504 additions and 261 deletions

View File

@@ -0,0 +1,133 @@
// -----------------------------------------------------------------------------
/// @file Interlock.h
/// @brief File description
// -----------------------------------------------------------------------------
// Micro-Key bv
// Industrieweg 28, 9804 TG Noordhorn
// Postbus 92, 9800 AB Zuidhorn
// The Netherlands
// Tel: +31 594 503020
// Fax: +31 594 505825
// Email: support@microkey.nl
// Web: www.microkey.nl
// -----------------------------------------------------------------------------
/// $Revision$
/// $Author$
/// $Date$
// (c) 2015 Micro-Key bv
// -----------------------------------------------------------------------------
/// @defgroup {group_name} {group_description}
/// Description
/// @file Interlock.h
/// @ingroup {group_name}
#ifndef INC_INTERLOCK_H_
#define INC_INTERLOCK_H_
// -----------------------------------------------------------------------------
// Include files
// -----------------------------------------------------------------------------
#include <stdbool.h>
#include "stm32f10x.h"
#include "platform.h"
#include "gpio.h"
#include "stm32f10x_exti.h"
// -----------------------------------------------------------------------------
// Constant and macro definitions
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
// Type definitions.
// -----------------------------------------------------------------------------
struct InterlockElement
{
struct Gpio* io;
EXTI_InitTypeDef ioEXTI;
};
struct Interlock
{
struct InterlockElement NO;
struct InterlockElement NC;
bool initialized;
};
// -----------------------------------------------------------------------------
// Function declarations
// -----------------------------------------------------------------------------
/** ----------------------------------------------------------------------------
* Interlock_construct
* Description of function
*
* @param self
* @param NO
* @param NOEXTI
* @param NC
* @param NCEXTI
*
* @return ErrorStatus
*
* @todo
* -----------------------------------------------------------------------------
*/
extern ErrorStatus Interlock_construct(struct Interlock* self, struct Gpio* NO, EXTI_InitTypeDef NOEXTI, struct Gpio* NC, EXTI_InitTypeDef NCEXTI);
/** ----------------------------------------------------------------------------
* Interlock_getStatus
* Get the current status of the interlock
*
* @param self Interlock object
* @param command Interrupt status
* @param NO value on GPIO NO
* @param NC value on GPIO NC
*
* @return void
*
* @todo
* -----------------------------------------------------------------------------
*/
extern void Interlock_getStatus(struct Interlock* self, FunctionalState* command, int* NO, int* NC);
/** ----------------------------------------------------------------------------
* Interlock_isClosed
* Check for interlock closed. Scans both I/Os
*
* @param self The interlock object
*
* @return bool TRUE is NC=1 and NO=0
*
* @todo
* -----------------------------------------------------------------------------
*/
extern bool Interlock_isClosed(struct Interlock* self);
/** ----------------------------------------------------------------------------
* Interlock_setEXTI
* Description of function
*
* @param self
* @param command
*
* @return void
*
* @todo
* -----------------------------------------------------------------------------
*/
extern void Interlock_setEXTI(struct Interlock* self, FunctionalState command);
#endif /* INC_INTERLOCK_H_ */

View File

@@ -39,7 +39,7 @@
// Constant and macro definitions
// -----------------------------------------------------------------------------
#define PID_FIXED_POINT_FACTOR (1000)
#define PID_FIXED_POINT_FACTOR (10000)
// -----------------------------------------------------------------------------
// Type definitions.
@@ -92,6 +92,6 @@ extern ErrorStatus PID_construct(struct Pid* self, int Kp, int Ki, int Kd, int i
* @todo
* -----------------------------------------------------------------------------
*/
extern int PID_calculate(struct Pid* self, int input, int error);
extern int PID_calculate(struct Pid* self, int error);
#endif /* INC_PID_H_ */