Zdravim, potrebuju poradt.
Mam program, kterej nedela nic jinyho nez, ze v jednom cyklu tisickat sejme hodnotu na vstupu A/D převodníku, vydeli tisicem a zobrazi na displeji a pokud prijde pozadavek tak tuto hodnotu odesle seriovym kanalem. Jakmile seriovy kanal prijme data, dojde k preruseni a me prave zajima jestli toto preruseni nejak neovlivni A/D prevod protoze ten v zadnem preruseni nepracuje, prevod odstartuji a cekam na dokonceni (testuji priznak GO/DONE). Je zapotrebi nejak upravit algoritmus, aby i A/D prevodnik pracoval v preruseni?
Dik za jakejkoliv nazor.
Netestuj priznak GO/DONE, ale múžeš čekat na přerusení od AD převodu a mezi tím může program dělat něco jiného, zapni si v PIE1,ADIE a do přerušení si přidej PIR1,ADIF. Při přerušení testuj PIR1,ADIF a pokud bude od AD převodu, musíš ADIF vynulovat a obsloužit AD převod.
Nemyslím, že přerušení s intervalem doby A/D převodu je účelná myšlenka. Daleko praktičtější je stanovit si požadovanou frekvenci vzorkování a podle ní nastavit přerušení časovačem. Když je interval přerušení větší než doba A/D převodu , tak nemusím testovat ani ukončení převodu. Zároveň toto přerušení můžu použít třeba pro inkrementaci čítače času a čtení tlačítek.