Ahoj, potřeboval bych pár rad ohledně AVR ADC. S AVR jsem začátečník, a navíc s ADC jsem nikdyyy nic nedělal.
Pro začátek jsem si zvolil řekl bych ne zas tak moc obtížnou věc, a to zkusit vyrobit voltmetr s ATmega8, zobrazení na 4 místném 7seg LED displeji (4místný multiplex mám již zapojený, tak proč ho nepoužít, přinejhoršim se bude zobrazovat na míň míst).
JIž jsem pročítal datasheet, a něco jsem i pochopil. Napíšu vám, jak bych si to asi představoval, že to s tím ADC je, kdyžtak mě vyveďte z mých mylných dojmů:
Nejprve je potřeba ADC z inicializovat.
Použijeme vstup ADC0 MUX3:0=0000
rozsah 0…2.56V, zvolíme vnitřní referenci REFS1:0=11
“zarovnání” výsledku vpravo ADLAR=0
tedy registr ADMUX=0b11000000
Zajímalo by mě jakou kapacitu asi tak může mít ten kondenzátor venku na VREF, cca 100nF?? 1uF???
Nastavení ADC - registr ADCSRA:
Zapneme ADC (ADEN=1)
ADSC=0 (nic zatím nekonvertovat)
ADFR=0 (jen po jednom vzorku)
ADIF=0 - nejsem si jist, popis v datasheetu je nějaký pofidérní popis k tomuto bitu…??
Pochopil jsem, že bit je nastaven, je-li dokončena konverze. Pokud je ADIE=1, I=1, tak vznikne přerušení, a HW vynuluje tento bit po vzniku přerušení. A tedka to, co se mi nějak nezdá a nechápu:
Alternativně ADIF je vynulován zapsáním logické 1 do něj, (WTF?) atd, atd… zbytek odstavce jsem nepochopil (na straně 207 v datasheetu) - vysvětlíte mi to někdo, co s tím ADIF?
ADIE=0 přerušení nechci
Používám Xtal 4MHz, hodiny zvolím bezpečně 125kHz, tedy dělička 32:
ADPS2:0=101
tedy ADCSRA=0b10000101
pak už jen stačí dát bit ADSC do log.1, potom počkat až se zpět vrátí do nuly, a vyčíst výsledek: nejprve číst registr ADCL, potom ADCH.
Ovšem vůůůbec mi není jasné, kde a čím nastavím rozlišení AD převodníku, když chci třeba jen 8 bitový.
Zapomněl jsem ještě na něco, nebo je to takle správně (já si myslím že mi tam něco ale chybí, ale nevim co)
MOC DIKY VSEM, KDO POMOHOU
Honza