This is an old revision of the document!


Analog-Digital-Wandler

Diese Bibliothek enthält Funktionen um den AVR Analog-Digital-Wandler zu nutzen. Sämtliche Funktionen dieser Bibliothek sind blockierend, d.h. der Prozessor wartet so lange, bis die Ergebnisse da sind. Die Zeit für die Konvertierung hängt von der ADC-Taktung ab.

Datentypen

  • adc_reference
    ADC Vergleichsspannung, Aufzählung der Datentypen. Möglichkeiten:
    • ADC_REF_AREF - Vergleichsspannung vom AREF Pin.
    • ADC_REF_AVCC - Vergleichsspannung vom AVCC Pin.
    • ADC_REF_2V56 - Interne 2,56 V Vergleichsspannung.
  • adc_prescale
    ADC clock prescaler enumration data type. It determines the division factor of system clock. Options:
    • ADC_PRESCALE_2 - Division factor 2.
    • ADC_PRESCALE_4 - Division factor 4.
    • ADC_PRESCALE_8 - Division factor 8.
    • ADC_PRESCALE_16 - Division factor 16.
    • ADC_PRESCALE_32 - Division factor 32.
    • ADC_PRESCALE_64 - Division factor 64.
    • ADC_PRESCALE_128 - Division factor 128.

Funktionen

  • void adc_init(adc_reference reference, adc_prescale prescale)

Initialisiert ADC. Parameter:

  • reference - Vergleichsspannungsauswahl.
  • prescale - Clock prescaler selection.
  • unsigned short adc_get_value(unsigned char channel)

Konvertiert spezifische ADC Kanal Analogwerte ins Digitale. Die Funktion blockt. Parameter:

  • channel - ADC channel number (0 to 7).
  • Return 10-bit digital value.
  • unsigned short adc_get_average_value(unsigned char channel, unsigned char num_samples)

Konvertiert spezifische ADC Kanal Analogwerte zu Digitalen desired number of times and calculates the average. Die Funktion blockiert. Parameter:

  • channel - ADC channel number (0 to 7).
  • num_samples - Number of samples for calculation (1 to 64).
  • Return 10-bit digital value.

Beispiel

Als Beispiel der ADC ist initialisiert und zwei Analogkanal-Werte werden zu digitalen konvertiert. Der Wert von Kanal 0 wird der Variable x zugewiesen und der durchschnittliche Wert von Kanal 1 der 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);
}
de/software/homelab/library/adc.1313495051.txt.gz · Last modified: (external edit)
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