AvrIO  1.4.5
Bibliothèque C modulaire pour ATMEL AVR
hsc.h
1 
18 #ifndef _AVRIO_HSC_H_
19 #define _AVRIO_HSC_H_
20 #include <avrio/defs.h>
21 
22 __BEGIN_C_DECLS
23 /* ========================================================================== */
24 
53 /* macros =================================================================== */
57 #define PSI_TO_PA(_psi) ((double)(_psi)*6894.76f)
58 #define PSI_TO_HPA(_psi) ((double)(_psi)*68.9476f)
59 
60 /* constants ================================================================ */
66 typedef enum {
69 } eHscBus;
70 
76 typedef enum {
84  HSC_DIAGNOSTIC = -3,
85  HSC_TWI_ERROR = -4
86 } eHscStatus;
87 
91 #define HSC_DEFAULT_TWIADDR (0x28)
92 
93 /* types ==================================================================== */
97 typedef void (*vHscSpiSelect)(bool);
98 
102 typedef void (*vHscSpiInit)(void);
103 
104 /* structures =============================================================== */
108 typedef struct xHscRaw {
109 
110  uint16_t usPress;
111  uint16_t usTemp;
112 } xHscRaw;
113 
117 typedef struct xHscValue {
118 
119  double dPress;
120  double dTemp;
121 } xHscValue;
122 
126 typedef struct xHscSensor {
127 
128  double dPressMin;
129  double dPressMax;
131  union {
132  uint8_t ucTwiAddr;
133  struct {
136  };
137  };
138 } xHscSensor;
139 
140 /* internal public functions ================================================ */
151 int iHscGetValue (xHscSensor *pSensor, xHscValue *pValue);
152 
161 void vHscRawToValue (xHscSensor *pSensor, const xHscRaw *pRaw, xHscValue *pValue);
162 
172 int iHscGetRaw (xHscSensor *pSensor, xHscRaw *pRaw);
173 
174 # if defined(__DOXYGEN__)
175 /*
176  * __DOXYGEN__ defined
177  * Partie documentation ne devant pas être compilée.
178  * =============================================================================
179  */
180 
195 int
196 iHscInitSpiSensor (xHscSensor *pSensor, double dPressMin, double dPressMax,
197  vHscSpiInit vInit, vHscSpiSelect vSelect);
209 int
210 iHscInitTwiSensor (xHscSensor *pSensor, double dPressMin, double dPressMax,
211  uint8_t ucTwiAddr);
216 # else
217 /*
218  * __DOXYGEN__ not defined
219  * Partie ne devant pas être documentée.
220  * =============================================================================
221  */
222 
223 /* internal inline functions ================================================ */
224 
225 // -----------------------------------------------------------------------------
226 INLINE int
227 iHscInitSpiSensor (xHscSensor *pSensor, double dPressMin, double dPressMax,
228  vHscSpiInit vInit, vHscSpiSelect vSelect) {
229 
230  pSensor->dPressMin = dPressMin;
231  pSensor->dPressMax = dPressMax;
232  pSensor->vInit = vInit;
233  pSensor->vSelect = vSelect;
234  pSensor->eBus = HSC_SPI;
235 
236  if (pSensor->vInit)
237  pSensor->vInit();
238  return 0;
239 }
240 
241 // -----------------------------------------------------------------------------
242 INLINE int
243 iHscInitTwiSensor (xHscSensor *pSensor, double dPressMin, double dPressMax,
244  uint8_t ucTwiAddr) {
245 
246  pSensor->dPressMin = dPressMin;
247  pSensor->dPressMax = dPressMax;
248  pSensor->eBus = HSC_TWI;
249  pSensor->ucTwiAddr = ucTwiAddr;
250  return 0;
251 }
252 // -----------------------------------------------------------------------------
253 # endif /* __DOXYGEN__ not defined */
254 
255 /* ========================================================================== */
256 __END_C_DECLS
257 #endif /* _AVRIO_HSC_H_ not defined */
eHscBus eBus
Type de bus utilisé par le capteur.
Definition: hsc.h:130
Valeurs calculées de la pression et de la température.
Definition: hsc.h:117
void(* vHscSpiInit)(void)
Definition: hsc.h:102
int iHscInitSpiSensor(xHscSensor *pSensor, double dPressMin, double dPressMax, vHscSpiInit vInit, vHscSpiSelect vSelect)
Initialisation capteur HSC SPI.
vHscSpiSelect vSelect
Pointeur sur la fonction de validation du capteur.
Definition: hsc.h:135
double dPress
Pression exprimée dans l&#39;unité fournie à l&#39;initialiasation.
Definition: hsc.h:119
int iHscGetRaw(xHscSensor *pSensor, xHscRaw *pRaw)
Lecture valeurs brutes.
uint16_t usTemp
Température sur 11 bits alignés à droite.
Definition: hsc.h:111
uint16_t usPress
Pression sur 14 bits alignés à droite (sans status)
Definition: hsc.h:110
struct xHscValue xHscValue
Valeurs calculées de la pression et de la température.
void vHscRawToValue(xHscSensor *pSensor, const xHscRaw *pRaw, xHscValue *pValue)
Convertit des valeurs brutes en grandeurs capteur.
int iHscGetValue(xHscSensor *pSensor, xHscValue *pValue)
Lecture capteur.
Definition: hsc.h:68
double dTemp
Température exprimée en °C.
Definition: hsc.h:120
void(* vHscSpiSelect)(bool)
Definition: hsc.h:97
int iHscInitTwiSensor(xHscSensor *pSensor, double dPressMin, double dPressMax, uint8_t ucTwiAddr)
Initialisation capteur HSC I2C.
eHscStatus
Code d&#39;état.
Definition: hsc.h:76
Capteur HSC.
Definition: hsc.h:126
vHscSpiInit vInit
Pointeur sur la fonction d&#39;initialisation capteur.
Definition: hsc.h:134
double dPressMax
Pression maximale du capteur.
Definition: hsc.h:129
struct xHscSensor xHscSensor
Capteur HSC.
eHscBus
Bus utilisé par le capteur.
Definition: hsc.h:66
struct xHscRaw xHscRaw
Données brutes lues dans un capteur.
Données brutes lues dans un capteur.
Definition: hsc.h:108
double dPressMin
Pression minimale du capteur.
Definition: hsc.h:128
Definition: hsc.h:67