PIC12F675 A / D problem

H

hhhsssmmm

Guest
Zdravo

Im uporabo PIC12F675 z notranjim OSC teče @ 4MHz.Im uporabo MikroC sestavljač različico 8.2.

Rad bi naredil preprost ADC poskusa.Zaprto glej diagram.

Pred PIC se postavi v stik z 10k lonec je prvi priti enakomerno obrezani 5.03V MAX output iz 15v DC ponudbe, ki je stalno spremenljivko DC napajanja.V 5V napajanje za PIC je predvidena od 78L05 regulator IC.Tlemi referenčnega je enaka za celotno vezje.

Zdaj, ko je 15v DC oskrbe na 15v MAX je 10k lonec izhodno glasi na volt meter kot 5.03V.Podobno, če je 15v DC oskrbe se zniža na 10V, potem je 10k lonec output glasi na volt meter kot 3.4V.Domnevam, da so te napetosti tudi vidijo PIC ADC pin (AN1), kakor je prikazano v diagramu.

Moj program, spodaj preprosto preveri, da če ADC napetost je enaka ali nad 3.4V, nato PIC vklopi LED.Če napetost pade pod 3.4V, potem je LED ostaja off.

Žal to ne dogaja in LED ostaja na celo če DC oskrbe se zniža na 6V.Potem ustrezno napetost ven iz POT glasi 2V.Imam preizkušen spreminjanjem "ADC_Result" spremenljive vrednosti precej višje vaule (800), ampak tudi to ne pomaga in problem ostaja enak.

V mikroC sestavljač,
imam konfiguriran kot moj projekt ....

CPD_OFF
CP_OFF
BODEN_OFF
MCLRE_OFF
PWRTE_OFF
WDT_OFF
INTRC_OSC_NOCLKOUT = O

Spodaj je moj program.Lahko nekdo prosim pomagajte mi rešiti ta problem.

Hvala
Haseeb

Koda:nepotpisani int ADC_Result; / / ADC Rezultati spremenljivke gospodarstvoneveljaven glavne (neveljaven)

(OSCCAL = 0x80; / / rezanje notranjih 4MHz OSC navzdol "CENTER"GPIO = 0; / / intiallize pristanišču/ / intillize je Comparitor zatiči (GP0 za GP1) za Digital I / O zatiči

CMCON = 7;ADCON0.ADFM = 1; / / Result desno poravnano

ADCON0.VCFG = 1; / / Voltage Reference je Vref/ / Channel 01 (AN1) IZBRANI

ADCON0.CHS1 = 0;

ADCON0.CHS0 = 1;ADCON0.GO_DONE = 0; / / Stop ADC Conversion

ADCON0.ADON = 0; / / ADC Onemogočene/ / A / D Conversion Clock je FOSC / 8

ANSEL.ADCS2 = 0;

ANSEL.ADCS1 = 0;

ANSEL.ADCS0 = 1;/ / AN1 je analogna .....
vse ostalo je digitalna

ANSEL.ANS0 = 0;

ANSEL.ANS1 = 1;

ANSEL.ANS2 = 0;

ANSEL.ANS3 = 0;TRISIO.GP5 = 0; / / LED proizvodnja

TRISIO.GP1 = 1; / / Channel AN1 inputINTCON = 0; / / onemogočite vse prekinja

PIE1 = 0; / / onemogočite vse periferne prekinjaADCON0.ADON = 1; / / ADC Enabledmedtem ko (1) / / zanka za vedno

(ADCON0.GO_DONE = 1; / / Start ADC Conversionmedtem ko (ADCON0.GO_DONE == 1); / / Počakajte Preusmeritveno oblogamiADC_Result = (ADRESH * 256) ADRESL; / / spojitev visoki bajt z nizko bajtif (ADC_Result> = 696) / / če dobimo 3.4VGPIO.GP5 = 1; / / LED našeGPIO.GP5 = 0; / / LED off)) / / End of main ()

 
Živjo,

Ne morem pomagati z oznako C, ampak ko ste testiranje, zakaj ne priključite 10k Kondenzator s
5 proti železnici v Pic, tako da so na isti ravni energije in zmanjšanje tveganja za napihovanje vam pic gor.

 
Dragi Haseeb,
Sem temeljito prebral kodo, v skladu z mano ni nič narobe, ampak jaz predlagam, da zamenjate 3 lines: --
ADCON0.GO_DONE = 1; / / Start ADC Conversion
medtem ko (ADCON0.GO_DONE == 1); / / Počakajte Preusmeritveno oblogami
ADC_Result = (ADRESH * 256) ADRESL; / / spojitev visoki bajt z nizko bajt
z:
ADC_Result = ADC_Read (1);

Mislim, da bo to rešilo tvoj problem.Ker ni nič narobe s kodo, včasih sestavljač naredi nekaj napak pri pripravi Hex datoteke, sedaj pa je zelo težko opredeliti teh napak.inside void main()
in the middle of the program, according to the compiler there was an error within this line, but when i shifted this line to outside void main()
OR

even inside void main()
after {
, compiler compiled the program and BUILD SUCCESSFULLY.

Ko sem napisal int i; praznino
znotraj glavne ()
na sredini programa, v skladu s sestavljač je bila napaka v tej vrstici, vendar ko sem preusmerila ta postavka izven glavne neveljaven ()
ali

celo znotraj neveljaven Glavni ()
po (,
sestavljač pripravijo program in graditi uspešno.
Upam, da dela za vas
S spoštovanjem,
Babar Khan

 
GPIO.GP5 = 1; / / LED naGPIO.GP5 = 0;nepravilna

je treba

GPIO.f5 = 1; / / LED naGPIO.f5 = 0;f ni male črke, tako da lahko uporablja bodisi na f ali F & spomnite, to je samo za MikroC.
Ko uporabite sestavljač morate prebrati svoje HELP file & vzorca programov, ki jih pomagajo veliko.

 

Welcome to EDABoard.com

Sponsor

Back
Top