imas dva nacina da radis ad konverziju ..
1. zapocnes citanje, cekas da se adc konverzija zavrsi (Tad), procitas vrednost
2. zapocnes citanje, radis nesto drugo a adc kontroler ti pukne interapt kada zavrsi, ti procitas vrednost
e sad .. zavisno od biblioteke koju koristis (nemam pojma kako radi picbasic) moguce da ti kad uradis ADCIN da picbasic odradi ceo ciklus [1] tako da on sam zapocne, saceka, procita ..
pogledaj data sheet .. tu ti sve pise ..
Citat:
The following steps should be followed to perform an
A/D conversion:
1. Configure the A/D module:
• Configure analog pins, voltage reference and
digital I/O (ADCON1)
• Select A/D input channel (ADCON0)
• Select A/D acquisition time (ADCON2)
• Select A/D conversion clock (ADCON2)
• Turn on A/D module (ADCON0)
2. Configure A/D interrupt (if desired):
• Clear ADIF bit
• Set ADIE bit
• Set GIE bit
3. Wait the required acquisition time (if required).
4. Start conversion:
• Set GO/DONE bit (ADCON0 register)
u TABLE 21-1 imas tabelu koliko traje acquisition time
no obzirom da ti je citanje potenciometra "ok", bice da ti je problem sa nestabilnom referencom (ti koristis vcc za referencu) tako da ti je resenje ili da ides na stabilnu referencu ( LM336z-5.0 je zgodan posto je cistih 5V, mozes da napravis i 4.77 zenerku + otpornik, to je malo jeftinije ..) ili da "uprosecujes" rezultat kako ti je vec ellektrostudio rekao, neka od cestih resenje:
Code:
rezultat = (stara + nova)/2
rezultat = (stara + 2*nova)/3
rezultat = (2*stara + nova)/3
rezultat = sqrt(stara * nova) //ovaj je odlican ali nije bas preporucljiv uvek posto trosi puno cpu-a i rom-a