Convertisseur analogique numérique

Cette librairie fourni des fonctions permettant d'utiliser le convertisseur numérique AVR. Toutes les fonctions de conversion de la librairie sont bloquées, cela signifie que le processeur attend aussi longtemps qu'il sera nécessaire pour obtenir un résultat. Le temps de conversion dépend de l'horloge de l'ADC.

Types de données

  • adc_reference
    Type de donnée d'énumération de la tension de référence de l'ADC. Options:
    • ADC_REF_AREF - Tension de référence de la broche AREF.
    • ADC_REF_AVCC - Tension de référence de la broche AVCC.
    • ADC_REF_2V56 - Tension de référence interne de 2,56 V.
  • adc_prescale
    Type de donnée d'énumération du diviseur de fréquence de l'horloge de l'ADC. Il détermine le facteur de division du système d'horloge. Options:
    • ADC_PRESCALE_2 - Facteur de division par 2.
    • ADC_PRESCALE_4 - Facteur de division par 4.
    • ADC_PRESCALE_8 - Facteur de division par 8.
    • ADC_PRESCALE_16 - Facteur de division par 16.
    • ADC_PRESCALE_32 - Facteur de division par 32.
    • ADC_PRESCALE_64 - Facteur de division par 64.
    • ADC_PRESCALE_128 - Facteur de division par 128.

Fonctions

  • void adc_init(adc_reference reference, adc_prescale prescale)

Initialisation de l'ADC. Arguments:

  • reference - Sélection de la tension de référence.
  • prescale - Sélection du diviseur de l'horloge.
  • unsigned short adc_get_value(unsigned char channel)

Convertit la valeur analogique de la voie en argument en une valeur numérique. La fonction est bloquée. Arguments:

  • channel - Numéro de la voie ADC (de 0 à 7).
  • Retourne la valeur numérique sur 10 bits.
  • unsigned short adc_get_average_value(unsigned char channel, unsigned char num_samples)

Convertit la valeur analogique de la voie en argument en une valeur numérique en limitant le nombre d'itérations et calcule la précision. La fonction est bloquée. Arguments:

  • channel - Numéro de la voie ADC (de 0 à 7).
  • num_samples - Nombre d'itérations (de 1 à 64).
  • Retourne la valeur numérique sur 10 bits.

Exemple

Dans l'exemple suivant, l'ADC est initialisé et deux voies analogiques sont converties en numérique. La valeur de la voir 0 est assignée à la variable x et la précision de la valeur de la voie 1 à la variable y.

#include <homelab/adc.h>
 
int main(void)
{
	unsigned short x, y;
 
	// Initializing ADC. Reference voltage from AVCC.
	// Clock is 8 times slower than system clock.
	adc_init(ADC_REF_AVCC, ADC_PRESCALE_8);
 
	// Converting channel 0 value.
	x = adc_get_value(0);
 
	// Converting and averaging channel 1 value.
	y = adc_get_average_value(1, 10);
}
fr/software/homelab/library/adc.txt · Last modified: 2020/07/20 09:00 by 127.0.0.1
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0