AvrIO  1.4.5
Bibliothèque C modulaire pour ATMEL AVR
Convertisseur Analogique-Numérique

Description détaillée

Ce module permet de gérer le convertisseur intégré au MCU.

Graphe de collaboration de Convertisseur Analogique-Numérique:

Fonctions

uint8_t ucAdcGetDiv (void)
 Renvoie le facteur de division de l'horloge de l'ADC.
 
uint16_t usAdcRead (uint8_t ucChannel)
 Lecture de l'ADC. Plus de détails...
 
static uint16_t usAdcReadAverage (uint8_t ucChannel, uint8_t ucTerms)
 Lecture de l'ADC avec moyennage. Plus de détails...
 
uint16_t usAdcReadFilter (uint8_t ucChannel, uint8_t ucTerms, eAdcFilter eFilter)
 Lecture de l'ADC avec filtrage. Plus de détails...
 
void vAdcDisable (void)
 Dévalide l'ADC. Plus de détails...
 
void vAdcEnable (void)
 Valide l'ADC. Plus de détails...
 
void vAdcInit (void)
 Initialise et valide l'ADC pour l'utilisation. Plus de détails...
 
static void vAdcSetChannel (uint8_t ucChan)
 Modifie la voie du multiplexeur. Plus de détails...
 
void vAdcSetDiv (uint8_t ucDiv)
 Modifie le facteur de division de l'horloge de l'ADC. Plus de détails...
 
static void vAdcSetRef (uint8_t ucRef)
 Modifie la tension de référence. Plus de détails...
 

Énumérations

enum  eAdcFilter { eAdcRaw = 0, eAdcAverage = 1, eAdcMin = 2, eAdcMax = 4 }
 Type de filtrage de la mesure. Plus de détails...
 
enum  eAdcRef { eAdcExternal = 0, eAdcVcc = 1, eAdcInternal = 3, eAdcInternal2 = 2 }
 Tension de référence. Plus de détails...
 

Documentation du type de l'énumération

enum eAdcFilter

Type de filtrage de la mesure.

Valeurs énumérées
eAdcRaw 

Mesure directe de l'ADC.

eAdcAverage 

Mesure avec moyennage.

eAdcMin 

Mesure valeur maximale.

eAdcMax 

Mesure valeur minimale.

Définition à la ligne 64 du fichier adc.h.

64  {
65  eAdcRaw = 0,
66  eAdcAverage = 1,
67  eAdcMin = 2,
68  eAdcMax = 4,
69 } eAdcFilter;
Mesure valeur maximale.
Definition: adc.h:67
eAdcFilter
Type de filtrage de la mesure.
Definition: adc.h:64
Mesure avec moyennage.
Definition: adc.h:66
Mesure directe de l'ADC.
Definition: adc.h:65
Mesure valeur minimale.
Definition: adc.h:68
enum eAdcRef

Tension de référence.

Ces valeurs correspondent aux bits REFS0 et REFS1 alignés à droite sur la plupart des modèles, mais sur certains modèles les valeurs sont spécifiques... cf la paragraphe ADC du datasheet.

Valeurs énumérées
eAdcExternal 

Broche AREF.

eAdcVcc 

Tension AVCC avec un condensateur sur AREF.

eAdcInternal 

Référence interne (sur tous les MCU AVR8 disposant d'un ADC)

eAdcInternal2 

Référence interne supplémentaire (REFS = 10, seuleument sur certains MCU)

Définition à la ligne 54 du fichier adc.h.

54  {
55  eAdcExternal = 0,
56  eAdcVcc = 1,
57  eAdcInternal = 3,
58  eAdcInternal2 = 2
59 } eAdcRef;
eAdcRef
Tension de référence.
Definition: adc.h:54
Broche AREF.
Definition: adc.h:55
Référence interne supplémentaire (REFS = 10, seuleument sur certains MCU)
Definition: adc.h:58
Référence interne (sur tous les MCU AVR8 disposant d'un ADC)
Definition: adc.h:57
Tension AVCC avec un condensateur sur AREF.
Definition: adc.h:56

Documentation des fonctions

uint16_t usAdcRead ( uint8_t  ucChannel)

Lecture de l'ADC.

Paramètres
ucChannelNuméro de la voie du multiplexeur ADC
Renvoie
Valeur mesurée sur 10 bits
static uint16_t usAdcReadAverage ( uint8_t  ucChannel,
uint8_t  ucTerms 
)
inlinestatic

Lecture de l'ADC avec moyennage.

Effectue ucTerms mesures à 100 µs d'intervalle et en calcul la moyenne. La valeur de l'écart de temps entre deux mesures peut être modifié en définissant la macro ADC_FILTER_DELAYUS dans le fichier avrio-board-adc.h à une valeur en µs. La somme est effectuée sur 32 bits.

Paramètres
ucChannelNuméro de la voie du multiplexeur ADC
ucTermsNombre de termes de la moyenne
Renvoie
Valeur moyennée sur 10 bits sur ucTerms mesures
Exemples:
adc/demo_adc.c, et sensor/ntc/demo_sensor_ntc.c.
uint16_t usAdcReadFilter ( uint8_t  ucChannel,
uint8_t  ucTerms,
eAdcFilter  eFilter 
)

Lecture de l'ADC avec filtrage.

Effectue ucTerms mesures à 100 µs d'intervalle et effectue un filtrage. La valeur de l'écart de temps entre deux mesures peut être modifié en définissant la macro ADC_FILTER_DELAYUS dans le fichier avrio-board-adc.h à une valeur en µs. La somme est effectuée sur 32 bits.

Paramètres
ucChannelNuméro de la voie du multiplexeur ADC
ucTermsNombre de termes pour le filtrage
eFilterType de filtrage
Renvoie
Valeur filtrée sur 10 bits sur ucTerms mesures
void vAdcDisable ( void  )

Dévalide l'ADC.

Si le MCU dispose d'un registre PRR, le bit PRADC est validé pour permettre d'économiser sur la consommation de courant en cas d'endormissement du MCU.

Exemples:
idwarf/terminal/sensor/terminal_sensor.c.
void vAdcEnable ( void  )

Valide l'ADC.

Si le MCU dispose d'un registre PRR, le bit PRADC est dévalidé pour permettre le fonctionnement de l'ADC.

Exemples:
idwarf/terminal/sensor/terminal_sensor.c.
void vAdcInit ( void  )

Initialise et valide l'ADC pour l'utilisation.

Les constantes d'initialisation dans avrio-board-adc.h sont les suivantes :

  • ADC_CLKDIV: facteur de division de l'horloge
  • ADC_REF: Tension de référence (codage conforme au registre ADMUX)
Exemples:
adc/demo_adc.c, sensor/hih4000/demo_sensor_hih4000.c, sensor/lmt87/demo_sensor_lmt87.c, sensor/mpx/demo_sensor_mpx.c, sensor/mq135/demo/demo_sensor_mq135.c, sensor/ntc/demo_sensor_ntc.c, sensor/pot/demo_sensor_pot.c, et sensor/rtd/demo_sensor_rtd.c.
static void vAdcSetChannel ( uint8_t  ucChan)
inlinestatic

Modifie la voie du multiplexeur.

Cette fonction ne devrait pas être appellée par l'utilisateur mais uniquement par les fonctions de lecture.
Cette fonction est implémentée dans avrio-board-adc.h

Paramètres
ucChanNuméro de la voie du multiplexeur ADC
void vAdcSetDiv ( uint8_t  ucDiv)

Modifie le facteur de division de l'horloge de l'ADC.

Le facteur de division se trouver dans la liste {2,4,8,16,32,64,128}. Une conversion prend 13 cycles d'horloge ADC (sauf la première 25 cycles). Par exemple, si l'horloge du MCU est de 8 Mhz avec un facteur division de 8, la conversion prendra 13 microsecondes.

Exemples:
sensor/mq135/demo/demo_sensor_mq135.c.
static void vAdcSetRef ( uint8_t  ucRef)
inlinestatic

Modifie la tension de référence.

Paramètres
ucRefcette valeur correspond aux bits REFS0, REFS1... alignés à droite et dépend du modèle de MCU. Sur la plupart des modèles, les valeurs correspondent à l'énumération eAdcRef, mais sur certains modèles les valeurs sont spécifiques... cf la paragraphe ADC du datasheet.
Exemples:
adc/demo_adc.c, sensor/hih4000/demo_sensor_hih4000.c, sensor/lmt87/demo_sensor_lmt87.c, sensor/mpx/demo_sensor_mpx.c, sensor/mq135/demo/demo_sensor_mq135.c, sensor/ntc/demo_sensor_ntc.c, sensor/pot/demo_sensor_pot.c, et sensor/rtd/demo_sensor_rtd.c.