User Manual

89
Příklady:
uint16_t ubat = readADC(ADC_BAT);
uint16_t iMotorR = readADC(ADC_MCURRENT_R);
uint16_t iMotorL = readADC(ADC_MCURRENT_L);
uint16_t lsL = readADC(ADC_LS_L);
uint16_t lsR = readADC(ADC_LS_R);
uint16_t free_adc0 = readADC(ADC_ADC0);
uint16_t free_adc1 = readADC(ADC_ADC1);
if(ubat < 580)
writeString_P("Warning! Low battery level!");
Jako reference se používá základní najecí napě5 V, ale funkce se může modifikovat tak, že
se použije vnitřní referenční napě 2,56V obvodu ATmega32 (viz katalogo list MEGA32).
Standardní snímače RP6 to obvykle nepotřebují.
Před dalším zpracováním ADC výstupu se provede posloupnost několika měření, sledky se
uloží do pole a vypočítá střední nebo minimální/maximální hodnota.
Zpracování několika hodnot může snížit chybu měření. Předpokládáme, že metoda střední
hodnoty je například potřeba při měření napě baterie. Napě baterie se velmi mění podle
zátěže, zvláště při změně podmínek zažení vlivem motorů.
Analogicky můžeme snímače razníků realizovat pomocí ADC měření a v hlavním programu
jednoduše použít pohodlnou funkci:
void task_ADC(void)
která během krátkého času vyhodno echny ADC kanály. Volání této funkce provede
postupné čtení ech ADC kanálů na pozadí (m se ušetří čas, měření se automaticky spusi
přečte...) a sledky se uloží v předem definovaných proměnných.
Kaž ADC měření vyžaduje určitý čas a funkce readADC může blokovat průběh programu.
Vlstní měření nepotřebuje programo zásah, během tohoto času můžeme provádět něco
jiného (ADC je samostatný hardwaro modul).
Měření z jednotlich kanálů se uloží do následujících 16-bitových proměnných, které mohou
být kdykoliv použity na libovolném místě programu:
ADC_BAT: adcBat
ADC_MCURRENT_L: adcMotorCurrentLeft
ADC_MCURRENT_R: adcMotorCurrentRightADC_LS_L: adcLSL
ADC_LS_R: adcLSR
ADC_ADC0: adc0
ADC_ADC1: adc1
Jak vidíte, na rozdíl od funkce readADC, musíte při volání funkce task_ADC() používat tyto
proměnné.