Analoog-digitaalmuundur

Analoog-digitaalmuunduri teek on AVR ADC mooduli kasutamise lihtsustamiseks. Teegi muundamise funktsioonid on blokeeruvad ehk nende väljakutsumisel jääb protsessor muundamise lõppu ootama. Muundamise aeg sõltub ADC taktijagurist.

Andmetüübid

  • adc_reference
    Analoog-digitaalmuunduri võrdluspinge valiku tüüp. Väärtuste variandid ja tähendused
    • Kodulabori I ja II generatsioon:
      • ADC_REF_AREF - Võrdluspinge saadakse AREF viigult.
      • ADC_REF_AVCC - Võrdluspinge saadakse AVCC viigult.
      • ADC_REF_2V56 - Võrdluspinge on sisemine 2,56 V.
    • Kodulabori III generatsioon:
      • ADC_REF_AREF - Võrdluspinge saadakse AREFA(ADC0) viigult (Maksimaalselt 2.7V).
      • ADC_REF_AREFB - Võrdluspinge saadakse AREFB(ADC8) viigult (Maksimaalselt 2.7V).
      • ADC_REF_AVCC - Võrdluspinge saadakse VCC viigult ja jagatakse 1.6ga.
      • ADC_REF_VCCDIV2 - Võrdluspinge saadakse VCC viigult ja jagatakse 2ga.
      • ADC_REF_1V0 - Võrdluspinge on sisemine 1,00 V.
  • adc_prescale
    Analoog-digitaalmuunduri taktijaguri valiku tüüp. Väärtuste variandid:
    • ADC_PRESCALE_2 - Jagamistegur 2.
    • ADC_PRESCALE_4 - Jagamistegur 4.
    • ADC_PRESCALE_8 - Jagamistegur 8.
    • ADC_PRESCALE_16 - Jagamistegur 16.
    • ADC_PRESCALE_32 - Jagamistegur 32.
    • ADC_PRESCALE_64 - Jagamistegur 64.
    • ADC_PRESCALE_128 - Jagamistegur 128.

Funktsioonid

  • void adc_init(adc_reference reference, adc_prescale prescale)
    ADC tööks ettevalmistamine. Parameetrid:
    • reference - Võrdluspinge valik.
    • prescale - Taktijaguri valik. Mida suurem on jaguri tegur, seda rohkem võtab muundamine aega, kuid seda mürakindlam see on. Kodulabor I ja II puhul on maksimaalne sagedus 125kHz, Kodulabor III puhul 2MHz.
  • unsigned short adc_get_value(unsigned char channel)
    Soovitud ADC sisendkanali väärtuse muundamine. Funktsioon on blokeeruv. Parameetrid:
    • channel - ADC kanali number.
    • Tagastab 10-bitise väärtuse. (Kodulabor III puhul 11-bitise väärtuse)
  • unsigned short adc_get_average_value(unsigned char channel, unsigned char num_samples)
    Soovitud ADC sisendkanali väärtuse mitmekordne muundamine ja keskmise võtmine. Funktsioon on blokeeruv. Parameetrid:
    • channel - ADC kanali number.
    • num_samples - Keskmistamiste arv. Lubatud arv on 1 kuni 64.
    • Tagastab keskmistatud väärtuse.

 

Näide

Näites seatakse analoog-digitaalmuundur töövalmis ja loetakse kahelt sisendkanalilt pinge. Kanali 0 pingemuundamise väärtus loetakse muutujasse x ja kanali 1 väärtus kümnekordse ümardamise tulemusena muutujasse y.

#include <homelab/adc.h>
 
int main(void)
{
	unsigned short x, y;
 
	// Analoog-digitaalmuunduri seadistamine
	// Võrdluspinge tuleb AVCC viigult. Muunduri töötakt
	// on 8 korda madalam kontrolleri taktist.
	adc_init(ADC_REF_AVCC, ADC_PRESCALE_8);
 
	// Kanali 0 muundatud väärtuse lugemine muutujasse x
	x = adc_get_value(0);
 
	// Kanali 1 muundatud ja keskmistatud väärtuse lugemine muutujasse y
	y = adc_get_average_value(1, 10);
}
et/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