AvrIO  1.4.5
Bibliothèque C modulaire pour ATMEL AVR
tsl230.h
1 
18 #ifndef _AVRIO_TSL230_H_
19 #define _AVRIO_TSL230_H_
20 #include <avrio/defs.h>
21 
22 __BEGIN_C_DECLS
23 /* ========================================================================== */
24 
44 /* constants ================================================================ */
51 typedef enum {
56 } eTsl230Range;
57 
58 
73 typedef enum {
74  eTsl230Off = 0,
79 
89 typedef enum {
90 
95 #ifndef __DOXYGEN__
96  /* Obsolete */
97  eTsl230Scale1 = eTsl230ScaleDiv100,
98  eTsl230Scale10 = eTsl230ScaleDiv10,
99  eTsl230Scale50 = eTsl230ScaleDiv2,
100  eTsl230Scale100 = eTsl230ScaleDiv1,
101 #endif
102 } eTsl230Scale;
103 
108 /* structures =============================================================== */
109 
110 /* types ==================================================================== */
111 
112 /* internal public functions ================================================ */
118 void vTsl230Init (void);
119 
126 double dTsl230FreqToIrradiance (double dFreq);
127 
140 void vTsl230SetRange (uint16_t usRange);
141 
146 uint16_t usTsl230Range (void);
147 
154 uint16_t usTsl230AutoRange (void);
155 
166 double dTsl230ReadFreq (bool bAutoRange);
167 
168 #if defined(__DOXYGEN__)
169 /*
170  * __DOXYGEN__ defined
171  * Partie documentation ne devant pas être compilée.
172  * =============================================================================
173  */
182 inline double dTsl230ReadIrradiance (bool bAutoRange);
183 
190 inline void vTsl230Enable (void);
191 
198 inline void vTsl230Disable (void);
199 
207 inline double dTsl230Freq (void);
208 
216 inline double dTsl230Irradiance (void);
217 
224 inline void vTsl230SetDarkFreq (double dDarkFreq);
225 
229 inline double dTsl230GetDarkFreq (void);
230 
237 inline void vTsl230SetResponsivity (double dResponsivity);
238 
242 inline double dTsl230GetResponsivity (void);
243 
269 inline void vTsl230Start (void);
270 
277 inline bool bTsl230IsComplete (void);
278 
282 inline void vTsl230WaitForComplete (void);
283 
296 inline void vTsl230SetSensitivity (eTsl230Sensitivity eSensitivity);
297 
302 
306 inline void vTsl230SetScale (eTsl230Scale eScale);
307 
311 inline eTsl230Scale eTsl230GetScale (void);
312 
321 inline void vTsl230SetWindow (uint16_t usWindowMs);
322 
332 #else
333 /*
334  * __DOXYGEN__ not defined
335  * Partie ne devant pas être documentée.
336  * =============================================================================
337  */
338 #include "avrio-config.h"
339 
340 #ifdef AVRIO_TSL230_ENABLE
341 // -----------------------------------------------------------------------------
342 #include "avrio-board-tsl230.h"
343 
344 #if ! defined(AVRIO_TASK_ENABLE)
345 #error AVRIO_TASK_ENABLE should be defined for TSL230 module
346 #endif
347 
348 #ifdef TSL230_INT
349 /*******************************************************************************
350  * Version avec comptage interruption
351  */
352 #include "icounter.h"
353 
354 #if ! defined(AVRIO_IRQ_ENABLE) && defined(TSL230_INT)
355 #error AVRIO_IRQ_ENABLE should be defined for TSL230 module with icounter
356 #endif
357 
358 /* structures =============================================================== */
359 typedef struct xTsl230Context {
360  eTsl230Sensitivity eSensitivity;
361  eTsl230Scale eScale;
362  xICounter xCounter;
363  double dDarkFreq;
364  double dResponsivity;
365 } xTsl230Context;
366 
367 /* public variables ========================================================= */
368 extern xTsl230Context xTsl230;
369 
370 /* inline public functions ================================================== */
371 
372 // -----------------------------------------------------------------------------
373 INLINE void
374 vTsl230Start (void) {
375 
376  vICounterStart (&xTsl230.xCounter);
377 }
378 
379 // -----------------------------------------------------------------------------
380 INLINE bool
381 bTsl230IsComplete (void) {
382 
383  return bICounterIsComplete (&xTsl230.xCounter);
384 }
385 
386 // -----------------------------------------------------------------------------
387 INLINE void
388 vTsl230WaitForComplete (void) {
389 
390  vICounterWaitForComplete (&xTsl230.xCounter);
391 }
392 
393 // -----------------------------------------------------------------------------
394 INLINE double
395 dTsl230Freq (void) {
396 
397  return dICounterFreq (&xTsl230.xCounter);
398 }
399 
400 // -----------------------------------------------------------------------------
401 INLINE
402 void vTsl230SetWindow (uint16_t usWindowMs) {
403 
404  vICounterSetWindow (&xTsl230.xCounter, usWindowMs);
405 }
406 
407 #else /* TSL230_INT not defined */
408 /*******************************************************************************
409  * Version avec comptage d'événements (Timer en horloge externe généralement)
410  */
411 #include "counter.h"
412 
413 /* structures =============================================================== */
414 typedef struct xTsl230Context {
415  eTsl230Sensitivity eSensitivity;
416  eTsl230Scale eScale;
417  xCounter xCounter;
418  double dDarkFreq;
419  double dResponsivity;
420 } xTsl230Context;
421 
422 /* public variables ========================================================= */
423 extern xTsl230Context xTsl230;
424 
425 /* inline public functions ================================================== */
426 
427 // -----------------------------------------------------------------------------
428 INLINE void
429 vTsl230Start (void) {
430 
431  vCounterStart (&xTsl230.xCounter);
432 }
433 
434 // -----------------------------------------------------------------------------
435 INLINE bool
436 bTsl230IsComplete (void) {
437 
438  return bCounterIsComplete (&xTsl230.xCounter);
439 }
440 
441 // -----------------------------------------------------------------------------
442 INLINE void
443 vTsl230WaitForComplete (void) {
444 
445  vCounterWaitForComplete (&xTsl230.xCounter);
446 }
447 
448 // -----------------------------------------------------------------------------
449 INLINE double
450 dTsl230Freq (void) {
451 
452  return dCounterFreq (&xTsl230.xCounter);
453 }
454 
455 // -----------------------------------------------------------------------------
456 INLINE
457 void vTsl230SetWindow (uint16_t usWindowMs) {
458 
459  vCounterSetWindow (&xTsl230.xCounter, usWindowMs);
460 }
461 
462 #endif /* TSL230_INT not defined */
463 
464 /* inline public functions ================================================== */
465 
466 // -----------------------------------------------------------------------------
467 INLINE double
468 dTsl230ReadIrradiance (bool bAutoRange) {
469 
470  return dTsl230FreqToIrradiance (dTsl230ReadFreq (bAutoRange));
471 }
472 
473 // -----------------------------------------------------------------------------
474 INLINE double
475 dTsl230Irradiance (void) {
476 
478 }
479 
480 // -----------------------------------------------------------------------------
481 INLINE void
483 
484  xTsl230.eSensitivity = eSensitivity;
485  vTsl230PinSetSensitivity (eSensitivity);
486 }
487 
488 // -----------------------------------------------------------------------------
489 INLINE eTsl230Sensitivity
490 eTsl230GetSensitivity (void) {
491 
492  return xTsl230.eSensitivity;
493 }
494 
495 // -----------------------------------------------------------------------------
496 INLINE void
497 vTsl230SetScale (eTsl230Scale eScale) {
498 
499  xTsl230.eScale = eScale;
500  vTsl230PinSetScale (eScale);
501 }
502 
503 // -----------------------------------------------------------------------------
504 INLINE eTsl230Scale
505 eTsl230GetScale (void) {
506 
507  return xTsl230.eScale;
508 }
509 
510 // -----------------------------------------------------------------------------
511 INLINE void
512 vTsl230SetDarkFreq (double dDarkFreq) {
513  xTsl230.dDarkFreq = dDarkFreq;
514 }
515 
516 // -----------------------------------------------------------------------------
517 INLINE double
518 dTsl230GetDarkFreq (void) {
519  return xTsl230.dDarkFreq;
520 }
521 
522 // -----------------------------------------------------------------------------
523 INLINE void
524 vTsl230SetResponsivity (double dResponsivity) {
525  xTsl230.dResponsivity = dResponsivity;
526 }
527 
528 // -----------------------------------------------------------------------------
529 INLINE double
530 dTsl230GetResponsivity (void) {
531 
532  return xTsl230.dResponsivity;
533 }
534 
535 #endif /* AVRIO_TSL230_ENABLE defined */
536 
537 #endif /* __DOXYGEN__ not defined */
538 
539 /* ========================================================================== */
540 __END_C_DECLS
541 #endif /* _AVRIO_TSL230_H_ */
double dCounterFreq(struct xCounter *c)
Dernière fréqunence.
double dTsl230Freq(void)
Lit la dernière mesure d&#39;irradiance en Hertz.
void vCounterStart(struct xCounter *c)
Démarre la mesure.
void vTsl230SetScale(eTsl230Scale eScale)
Modifie l&#39;échelle de fréquence du capteur.
void vTsl230SetWindow(uint16_t usWindowMs)
Modifie la durée de la fenêtre de mesure de la fréquence.
void vTsl230SetResponsivity(double dResponsivity)
Modifie la réceptivité du capteur.
uint16_t usTsl230Range(void)
Lecture de la plage de mesure du capteur.
void vICounterWaitForComplete(struct xICounter *c)
Attends que la mesure se termine.
void vTsl230Init(void)
Initialisation du capteur et de son fréquencemètre.
void vTsl230SetSensitivity(eTsl230Sensitivity eSensitivity)
Modifie la sensibilité du capteur.
eTsl230Sensitivity eTsl230GetSensitivity(void)
Sensibilité du capteur.
void vCounterSetWindow(struct xCounter *c, uint16_t usWindowMs)
Modifie la durée de la fenêtre de mesure.
void vTsl230WaitForComplete(void)
Attends que la mesure se termine.
void vTsl230SetDarkFreq(double dDarkFreq)
Modifie la fréquence capteur dans le noir.
void vTsl230Enable(void)
Valide la broche OE du capteur.
double dICounterFreq(struct xICounter *c)
Dernière fréqunence.
bool bCounterIsComplete(struct xCounter *c)
Teste si la mesure est terminée.
double dTsl230GetResponsivity(void)
Réceptivité du capteur.
bool bICounterIsComplete(struct xICounter *c)
Teste si la mesure est terminée.
double dTsl230FreqToIrradiance(double dFreq)
Convertit une fréquence en irradiance.
bool bTsl230IsComplete(void)
Teste si la mesure est terminée.
void vCounterWaitForComplete(struct xCounter *c)
Attends que la mesure se termine.
void vTsl230Start(void)
Démarre la mesure.
double dTsl230ReadIrradiance(bool bAutoRange)
Mesure bloquante de l&#39;irradiance du capteur.
double dTsl230GetDarkFreq(void)
Fréquence capteur dans le noir.
eTsl230Range
Plage de mesure capteur.
Definition: tsl230.h:51
void vICounterSetWindow(struct xICounter *c, uint16_t usWindowMs)
Modifie la durée de la fenêtre de mesure.
void vTsl230Disable(void)
Dévalide la broche OE du capteur.
eTsl230Scale
Division de fréquence du capteur.
Definition: tsl230.h:89
eTsl230Sensitivity
Sensibilité du capteur.
Definition: tsl230.h:73
void vTsl230SetRange(uint16_t usRange)
Réglage la plage de mesure du capteur.
void vICounterStart(struct xICounter *c)
Démarre la mesure.
uint16_t usTsl230AutoRange(void)
Réglage automatique de la plage de mesure du capteur.
double dTsl230Irradiance(void)
Lit la dernière mesure d&#39;irradiance en µW/cm²
eTsl230Scale eTsl230GetScale(void)
Sensibilité du capteur.
double dTsl230ReadFreq(bool bAutoRange)
Mesure bloquante de la fréquence du capteur.