Pulsilaiuse modulatsioon

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:
    • 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.
  • 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.
  • unsigned short adc_get_value(unsigned char channel)
    Soovitud ADC sisendkanali väärtuse muundamine. Funktsioon on blokeeruv. Parameetrid:
    • channel - ADC kanali number (0 kuni 7).
    • Tagastab 10-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 (0 kuni 7).
    • num_samples - Keskmistamiste arv. Lubatud arv on 1 kuni 64.
    • Tagastab 10-bitise 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/pwm.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