H
hhhsssmmm
Guest
Hej
Im benytter PIC12F675 med intern OSC kører @ 4MHz.Im benytter MikroC compiler version 8.2.
Jeg ønsker at gøre en simpel ADC eksperiment.Se venligst vedlagte diagram.
Før PIC er placeret i kredsløb, de 10K pot er først trimmes for at få støt 5.03V MAX output fra 15V DC forsyning, der er en stabil variabel DC strømforsyning.Den 5V forsyning for PIC leveres fra 78L05 regulator IC.Jordreferenceniveauet er den samme for hele kredsløbet.
Nu når 15V DC forsyning er på 15V MAX,
et 10K pot output lyder på volt meter som 5.03V.Tilsvarende hvis 15V jævnstrømsforsyning sænkes til 10V, så de 10k pot output lyder på volt meter som 3.4V.Jeg formoder, at disse spænding ses også af PIC ADC pin (AN1) som vist på tegningen.
Mit program nedenfor simpelthen kontrol for at se, at hvis ADC spænding er lig med eller over 3.4V, så PIC tændes lysdioden.Hvis spændingen falder til under 3.4V, så
LED'en forbliver slukket.
Desværre er dette ikke sker, og
LED'en forbliver på selvom jævnstrømsforsyning sænkes ned til 6V.Så tilsvarende spænding ud fra POT lyder 2V.Jeg har forsøgt at variere "ADC_Result" variable værdi til en langt højere vaule (800), men selv det ikke hjælper, og det samme problem tilbage.
I mikroC compiler, jeg har konfigureret mit projekt som ....
CPD_OFF
CP_OFF
BODEN_OFF
MCLRE_OFF
PWRTE_OFF
WDT_OFF
INTRC_OSC_NOCLKOUT = ON
Nedenfor er mit program.Please kan nogen hjælpe mig med at løse dette problem.
Tak
Haseeb
Code:usignerede int ADC_Result / / ADC resultat bedrift variablevoid Main (void)
(OSCCAL = 0x80; / / trimning indre 4MHz OSC ned til 'Center'GPIO = 0 / / intiallize havnen/ / intillize de Comparitor knappenåle (GP0 til GP1) til digitale I / O ben
CMCON = 7;ADCON0.ADFM = 1 / / Resultat Højre berettiget
ADCON0.VCFG = 1 / / Spænding Reference er Vref/ / Kanal 01 (AN1) UDVALGT
ADCON0.CHS1 = 0;
ADCON0.CHS0 = 1;ADCON0.GO_DONE = 0; / / Stop ADC Conversion
ADCON0.ADON = 0; / / ADC Deaktiveret/ / A / D Conversion Ur er FOSC / 8
ANSEL.ADCS2 = 0;
ANSEL.ADCS1 = 0;
ANSEL.ADCS0 = 1;/ / AN1 er Analog .....
resten alle er Digital
ANSEL.ANS0 = 0;
ANSEL.ANS1 = 1;
ANSEL.ANS2 = 0;
ANSEL.ANS3 = 0;TRISIO.GP5 = 0; / / LED output
TRISIO.GP1 = 1 / / Kanal AN1 inputINTCON = 0; / / deaktivere alle interrupts
PIE1 = 0; / / deaktivere alle perifere interruptsADCON0.ADON = 1 / / ADC Enabledmens (1) / / loop evigt
(ADCON0.GO_DONE = 1 / / Start ADC Conversionwhile (ADCON0.GO_DONE == 1) / / Vent, indtil Konverteringsfrekvens finishmidlerADC_Result = (ADRESH * 256) ADRESL / / Fusionerende High byte med lav byteif (ADC_Result> = 696) / / hvis vi får 3.4VGPIO.GP5 = 1 / / LED påandenGPIO.GP5 = 0; / / LED slukket)) / / Udgang vigtigste ()
Im benytter PIC12F675 med intern OSC kører @ 4MHz.Im benytter MikroC compiler version 8.2.
Jeg ønsker at gøre en simpel ADC eksperiment.Se venligst vedlagte diagram.
Før PIC er placeret i kredsløb, de 10K pot er først trimmes for at få støt 5.03V MAX output fra 15V DC forsyning, der er en stabil variabel DC strømforsyning.Den 5V forsyning for PIC leveres fra 78L05 regulator IC.Jordreferenceniveauet er den samme for hele kredsløbet.
Nu når 15V DC forsyning er på 15V MAX,
et 10K pot output lyder på volt meter som 5.03V.Tilsvarende hvis 15V jævnstrømsforsyning sænkes til 10V, så de 10k pot output lyder på volt meter som 3.4V.Jeg formoder, at disse spænding ses også af PIC ADC pin (AN1) som vist på tegningen.
Mit program nedenfor simpelthen kontrol for at se, at hvis ADC spænding er lig med eller over 3.4V, så PIC tændes lysdioden.Hvis spændingen falder til under 3.4V, så
LED'en forbliver slukket.
Desværre er dette ikke sker, og
LED'en forbliver på selvom jævnstrømsforsyning sænkes ned til 6V.Så tilsvarende spænding ud fra POT lyder 2V.Jeg har forsøgt at variere "ADC_Result" variable værdi til en langt højere vaule (800), men selv det ikke hjælper, og det samme problem tilbage.
I mikroC compiler, jeg har konfigureret mit projekt som ....
CPD_OFF
CP_OFF
BODEN_OFF
MCLRE_OFF
PWRTE_OFF
WDT_OFF
INTRC_OSC_NOCLKOUT = ON
Nedenfor er mit program.Please kan nogen hjælpe mig med at løse dette problem.
Tak
Haseeb
Code:usignerede int ADC_Result / / ADC resultat bedrift variablevoid Main (void)
(OSCCAL = 0x80; / / trimning indre 4MHz OSC ned til 'Center'GPIO = 0 / / intiallize havnen/ / intillize de Comparitor knappenåle (GP0 til GP1) til digitale I / O ben
CMCON = 7;ADCON0.ADFM = 1 / / Resultat Højre berettiget
ADCON0.VCFG = 1 / / Spænding Reference er Vref/ / Kanal 01 (AN1) UDVALGT
ADCON0.CHS1 = 0;
ADCON0.CHS0 = 1;ADCON0.GO_DONE = 0; / / Stop ADC Conversion
ADCON0.ADON = 0; / / ADC Deaktiveret/ / A / D Conversion Ur er FOSC / 8
ANSEL.ADCS2 = 0;
ANSEL.ADCS1 = 0;
ANSEL.ADCS0 = 1;/ / AN1 er Analog .....
resten alle er Digital
ANSEL.ANS0 = 0;
ANSEL.ANS1 = 1;
ANSEL.ANS2 = 0;
ANSEL.ANS3 = 0;TRISIO.GP5 = 0; / / LED output
TRISIO.GP1 = 1 / / Kanal AN1 inputINTCON = 0; / / deaktivere alle interrupts
PIE1 = 0; / / deaktivere alle perifere interruptsADCON0.ADON = 1 / / ADC Enabledmens (1) / / loop evigt
(ADCON0.GO_DONE = 1 / / Start ADC Conversionwhile (ADCON0.GO_DONE == 1) / / Vent, indtil Konverteringsfrekvens finishmidlerADC_Result = (ADRESH * 256) ADRESL / / Fusionerende High byte med lav byteif (ADC_Result> = 696) / / hvis vi får 3.4VGPIO.GP5 = 1 / / LED påandenGPIO.GP5 = 0; / / LED slukket)) / / Udgang vigtigste ()