ADC 16f88 nejasan rezultat merenja
Moderators: pedja089, stojke369, [eDo], trax
ADC 16f88 nejasan rezultat merenja
Pozdrav svima.Pravio sam nesto sa 16f88 i postavio sam da bude 10 bitni ADC pa mislim da bi pri merenju napona od 5V trebalo da pokaze rezultat 1024 a meni pokazuje 256
Evo dva primera ADC gde je u oba slucajeva postavljen da bude 10 bitni a rezultet je 256
Da li ja gresim ili treba tako?
Prvi primer:
Define ADC_BITS 10 ' Set number of bits in result
Define ADC_CLOCK 3 ' Set clock source (3=rc)
Define ADC_SAMPLEUS 50 ' Set sampling time in uS
ANSEL=%11111111
ADCON1=%10000000
ADCON0=%11000101
TRISA = %11111111
adval Var WORD ' Create adval to store result
mainloop:
ADCON0.2 = 1 ' Start Conversion
notdone :
Pause 5
If ADCON0.2 = 1 Then notdone :
adval.highbyte = ADRESH ' Move HIGH byte of result to adval
adval.lowbyte = ADRESL ' Move LOW byte of result to adval
lcdout $FE, $80, "DC Volts=",#adval ' 256
Drugi primer:
Define ADC_BITS 10 ' Set number of bits in result
Define ADC_CLOCK 3 ' Set clock source (3=rc)
Define ADC_SAMPLEUS 50 ' Set sampling time in uS
ANSEL=%11111111
ADCON1=%10000000
ADCON0=%11000101
TRISA = %11111111
BROJ Var WORD
POCETAK:
ADCIN 0 , BROJ
lcdout $FE, $80, "DC Volts=",#broj '256
pause 10
GOTO POCETAK:
END
Evo dva primera ADC gde je u oba slucajeva postavljen da bude 10 bitni a rezultet je 256
Da li ja gresim ili treba tako?
Prvi primer:
Define ADC_BITS 10 ' Set number of bits in result
Define ADC_CLOCK 3 ' Set clock source (3=rc)
Define ADC_SAMPLEUS 50 ' Set sampling time in uS
ANSEL=%11111111
ADCON1=%10000000
ADCON0=%11000101
TRISA = %11111111
adval Var WORD ' Create adval to store result
mainloop:
ADCON0.2 = 1 ' Start Conversion
notdone :
Pause 5
If ADCON0.2 = 1 Then notdone :
adval.highbyte = ADRESH ' Move HIGH byte of result to adval
adval.lowbyte = ADRESL ' Move LOW byte of result to adval
lcdout $FE, $80, "DC Volts=",#adval ' 256
Drugi primer:
Define ADC_BITS 10 ' Set number of bits in result
Define ADC_CLOCK 3 ' Set clock source (3=rc)
Define ADC_SAMPLEUS 50 ' Set sampling time in uS
ANSEL=%11111111
ADCON1=%10000000
ADCON0=%11000101
TRISA = %11111111
BROJ Var WORD
POCETAK:
ADCIN 0 , BROJ
lcdout $FE, $80, "DC Volts=",#broj '256
pause 10
GOTO POCETAK:
END
Re: ADC 16f88 nejasan rezultat merenja
Cudno mi je da pokazuje 256.
U prvom primeru gde ne koristis ADCIN, one define na pocetku su ne bitni. I gledajuci registre sve deluje ok.
Da nisi mozda omasio pin na koji dovodis napon ili slicno?
Probaj ovo promeniti
lcdout $FE, $80, "DC Volts=",dec4 adval ' 256
U prvom primeru gde ne koristis ADCIN, one define na pocetku su ne bitni. I gledajuci registre sve deluje ok.
Da nisi mozda omasio pin na koji dovodis napon ili slicno?
Probaj ovo promeniti
lcdout $FE, $80, "DC Volts=",dec4 adval ' 256
Re: ADC 16f88 nejasan rezultat merenja
I meni je cudno,probao sam to valjda ali nisam siguran,sutra cu ponovo.Jedino da to proteus nepravi problem.
A kad se ovako nalise onda je rezultat 1024
Nisam ja da znam nesto mnogo ali vidim da nije uredu pa sam se zato javio jer nema logike da bude 256
Define ADC_BITS 10 ' Set number of bits in result
Define ADC_CLOCK 3 ' Set clock source (3=rc)
Define ADC_SAMPLEUS 50 ' Set sampling time in uS
ANSEL=%00001111
ADCON1=%10000000
TRISA = %11111111
ADCON0 = %11000101
adrez Var word ' Create adval to store result
napon var word
dumu var word
mainloop:
ADCIN 0,adrez ' Start Conversion
dumu=adrez*5*100
napon=Div32 1024
Lcdout $fe, 2 ' Clear screen
Lcdout "Value: ", ovde je uredu 1024
Pause 100 ' Wait .1 second
Goto mainloop ' Do it forever
End
A kad se ovako nalise onda je rezultat 1024
Nisam ja da znam nesto mnogo ali vidim da nije uredu pa sam se zato javio jer nema logike da bude 256
Define ADC_BITS 10 ' Set number of bits in result
Define ADC_CLOCK 3 ' Set clock source (3=rc)
Define ADC_SAMPLEUS 50 ' Set sampling time in uS
ANSEL=%00001111
ADCON1=%10000000
TRISA = %11111111
ADCON0 = %11000101
adrez Var word ' Create adval to store result
napon var word
dumu var word
mainloop:
ADCIN 0,adrez ' Start Conversion
dumu=adrez*5*100
napon=Div32 1024
Lcdout $fe, 2 ' Clear screen
Lcdout "Value: ", ovde je uredu 1024
Pause 100 ' Wait .1 second
Goto mainloop ' Do it forever
End
Re: ADC 16f88 nejasan rezultat merenja
Obrisao si LCDOUT pa ne znam sta je u redu.
Ali ako imas ono mnozenje i deljenje, onda ne treba da pise 1024...
Ali ako imas ono mnozenje i deljenje, onda ne treba da pise 1024...
Re: ADC 16f88 nejasan rezultat merenja
Obrisao sam ovde da bih napisao 1024 da se vidi rezultat,u programu je sve normalno napisano. Ovde jeste 1024 a zasto u ona dva primera nije neznam. Kad stignem probacu uzivo, ovo je sad sve u proteus.
Re: ADC 16f88 nejasan rezultat merenja
Evo sta je bio problem,da nepoverujes.U proteusu sam nacrtao semu ADC ali celu,sa kristalom,kondenzatorima ka kristalu,baterja pa 7805... i zeza.Kad sve to pobrisem,ostavim samo 16f88,displej i dovedem 5V (ona strelica u proteusu) onda je sve uredu.
Re: ADC 16f88 nejasan rezultat merenja
Genijalno
Re: ADC 16f88 nejasan rezultat merenja
eto,ispade da jeste.Ja vrlo malo znam o programiranju i ovo je bilo kao nabrzinu,da iscrtam samo ono sto mora pa da probam i tad kad je proradio kako treba video sam o cemu se radi,kad sam ubacio i ostale komponente opet nije htelo.Vise puta me je proteus zeznuo ali sobzirom da nepoznajem dovoljno programiranje samim tim sam uvek sumnjao u sebe da sam nesto lose uradio.
Re: ADC 16f88 nejasan rezultat merenja
Ako te ne mrzi, probaj sa i bez kristala. Dal samo on cini razliku.
Ja generalno izbegavam simulatore uopste.
Ja generalno izbegavam simulatore uopste.
Re: ADC 16f88 nejasan rezultat merenja
Probam veceras i javljam kako je sa i bez kristala.
Re: ADC 16f88 nejasan rezultat merenja
Probao sam.Svejedno je da li ima kristal ili ne u priteusu,problem je pravilo kako postavis napajanje.Kad je baterja meni je tad bio problem a kad je strelica sa 5V tad je ok.Kristal koliki upises tamo u pdesavanju tako radi,nema potrebe da se stavlja na semi tj veze na pic.
Re: ADC 16f88 nejasan rezultat merenja
OK. Mislim da ni napajanje ne moras stavljati...