real_time/software/robot/src/system_dumby.h
2018-10-10 10:22:57 +02:00

106 lines
3 KiB
C

/**
******************************************************************************
* @file system_dumby.h
* @author Lucien Senaneuch
* @version V1.0
* @date 19-June-2017
* @brief Configure les variables globals, les timers necessaires.
*
* Configure la pin de shutdown.
* Initialise le systick.
* Initialise les valeurs de shutdown avec le watchdog.
* Initialise les variables global des commandes.
* Initialise la strucutre Settings contenant les paramètres de dumber.
*
*@note Les différentes commande sont :
* PingCMD 'p'
* ResetCMD 'r'
* SetMotorCMD 'm'
* StartWWatchDogCMD 'W'
* ResetWatchdogCMD 'w'
* GetBatteryVoltageCMD 'v'
* GetVersionCMD 'V'
* StartWithoutWatchCMD 'u'
* MoveCMD 'M'
* TurnCMD 'T'
* BusyStateCMD 'b'
******************************************************************************
******************************************************************************
*/
#ifndef _SYSTEM_DUMBY_H_
#define _SYSTEM_DUMBY_H_
#include "stm32f10x.h"
/* Déclaration des Constantes */
#define VERSION "version 1.4\r"
#define SPI 10
#define USART 20
#define I2C 30
#define TRUE 40
#define FALSE 50
#define VOLTAGE 98
#define CURRENT 99
#define UNDEFINED 101
#define TIMER_1s 1000 // 1 sec
//#define TIMER_Watchdog 3050
//#define TTMER_Inactivity 120000 // 2 min
#define WATCHDOG_MIN 970
#define WATCHDOG_MAX 1030
#define WATCHDOG_INVALID_COUNTER_MAX 3
#define COMMONSPEED 5
#define LOWSPEED 2
#define HYPERVITESSE 7
/* Déclaration de structure */
enum States {
STATE_IDLE = 0,
STATE_RUN,
STATE_LOW,
STATE_DISABLE,
STATE_WATCHDOG_DISABLE
};
typedef enum States States;
struct Settings
{
// Information
uint16_t BatteryPercentage; // Retourne le pourcentage de charge de la batterie
uint16_t BatteryCurrent; //
States StateSystem; // État de la MAE
char AddOn; // Un AddOn a été détecté
// Les instructions seront sur le protocole SPI
char BatterieChecking; // On doit vérifier la valeur de la batterie
uint16_t cpt_systick;
char WatchDogStartEnable; // Le Robot a été lancé en mode WithWatchDog ou WithoutWatchDog
uint16_t cpt_watchdog;
uint8_t InvalidWatchdogResetCpt; // Compteur de remise à zéro du watchdog en dehors du temps imparti
char busyState;
int cpt_inactivity;
char acquisition;
char stateBattery;
char flagSystick;
};
typedef struct Settings Settings;
/* Déclaration des variables systèmes */
extern Settings Dumber;
/* Prototype Fonctions */
void systemConfigure(void);
void systemChangeState(States state);
char systemResetWatchdog(void);
void systemShutDown(void);
#endif /* _SYSTEM_DUMBY_H_ */