PIC12F675 A / D-probleem

H

hhhsssmmm

Guest
Hallo

Im using PIC12F675 met interne OSC draaien @ 4MHz.Im using MikroC compiler versie 8.2.

Ik wil niet een eenvoudige ADC experiment.Zie het bijgevoegde schema.

Voordat de PIC wordt geplaatst in het circuit, de 10K pot is in de eerste getrimd te krijgen 5.03V MAX constante output van de supply DC 15V, die een constante variabele DC voeding.De 5V leveren voor de PIC is voorzien van 78L05 regulator IC.De grond verwijzing is hetzelfde voor het gehele circuit.

Toen nu de supply DC 15V is 15V MAX, de 10K pot uitgang leest volt meter als 5.03V.Ook indien de levering 15V DC is verlaagd tot 10V, dan is de 10k pot uitgang leest op de volt meter als 3.4V.Ik neem aan dat deze spanningen ook worden gezien door de PIC ADC-pin (AN1), zoals weergegeven in het diagram.

Mijn programma hieronder gewoon controles om te zien dat als de ADC spanning is gelijk of hoger 3.4V, dan is de PIC afhangt van de LED.Als de spanning daalt onder 3.4V, dan is de LED blijft uit.

Helaas is dit niet gebeurt en de LED blijft zelfs als de DC-levering wordt verlaagd tot 6V.Daarna wordt de bijbehorende spanning uit de POT leest 2V.Ik heb geprobeerd het variëren van de "ADC_Result" variabele waarde aan een veel hogere vaule (800), maar zelfs dat niet helpt en hetzelfde probleem blijft.

In mikroC compiler, heb ik geconfigureerd mijn project als ....

CPD_OFF
CP_OFF
BODEN_OFF
MCLRE_OFF
PWRTE_OFF
WDT_OFF
INTRC_OSC_NOCLKOUT = ON

Hieronder is mijn programma.Please kan iemand mij helpen om dit probleem op te lossen.

Bedankt
Haseeb

Code:unsigned int ADC_Result; / / ADC resultaat bedrijf variabelevoid main (void)

(OSCCAL = 0x80; / / trimmen interne 4MHz OSC tot 'center'GPIO = 0; / / intiallize de haven/ / intillize de Comparitor pennen (GP0 tot GP1) naar digitale I / O pinnen

CMCON = 7;ADCON0.ADFM = 1; / / Resultaat Recht gerechtvaardigd

ADCON0.VCFG = 1; / / Voltage Reference is VREF/ / Channel 01 (AN1) geselecteerd

ADCON0.CHS1 = 0;

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

ADCON0.ADON = 0; / / ADC Gehandicapten/ / A / D Conversion Clock is FOSC / 8

ANSEL.ADCS2 = 0;

ANSEL.ADCS1 = 0;

ANSEL.ADCS0 = 1;/ / Analog AN1 is .....
rest is alle Digitale

ANSEL.ANS0 = 0;

ANSEL.ANS1 = 1;

ANSEL.ANS2 = 0;

ANSEL.ANS3 = 0;TRISIO.GP5 = 0; / / LED-uitgang

TRISIO.GP1 = 1; / / Channel AN1 inputINTCON = 0; / / disable all interrupts

PIE1 = 0; / / disable alle perifere interruptsADCON0.ADON = 1; / / ADC ingeschakeldwhile (1) / / loop forever

(ADCON0.GO_DONE = 1; / / Start ADC Conversionwhile (ADCON0.GO_DONE == 1); / / Wacht tot Conversie voltooidADC_Result = (ADRESH * 256) ADRESL; / / Samenvoegen Hoge byte met een lage byteif (ADC_Result> = 696) / / als we 3.4V krijgenGPIO.GP5 = 1; / / op LEDandersGPIO.GP5 = 0; / / LED uit)) / / Einde van main ()

 
Hoi,

Kan het niet helpen met de C-code, maar terwijl je testen waarom niet de 10K trimmer verbinding te maken met de 5 V-spoor van de Pic, zodat u zich op hetzelfde energieniveau en het risico te blazen je pic up.

 
Geachte Haseeb,
Ik heb goed gelezen uw code, volgens mij is er niets mis, maar ik stel voor dat je de 3 lijnen vervangen: --
ADCON0.GO_DONE = 1; / / Start ADC Conversion
while (ADCON0.GO_DONE == 1); / / Wacht tot Conversie voltooid
ADC_Result = (ADRESH * 256) ADRESL; / / Samenvoegen Hoge byte met een lage byte
door:
ADC_Result = ADC_Read (1);

Ik denk dat dit uw probleem op te lossen.Aangezien er niets mis met uw code, soms de compiler maakt een aantal fouten bij de voorbereiding van HEX bestand, nu is het zeer moeilijk om deze fouten te identificeren.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.

Eens schreef ik int i;
binnen void main ()
in het midden van het programma, volgens de compiler er was een fout in deze lijn, maar als ik deze lijn verschoven naar buiten void main ()
of

zelfs binnen void main ()
na (,
compiler gecompileerd het programma en BUILD SUCCES.
Hoop dat het werkt voor u,
Groeten,
BABAR KHAN

 
GPIO.GP5 = 1; / / op LEDGPIO.GP5 = 0;onjuist

moet worden

GPIO.f5 = 1; / / op LEDGPIO.f5 = 0;f is niet hoofdlettergevoelig, zodat u kunt ofwel f of F & onthoud dit is alleen voor MikroC.
Wanneer u een compiler te gebruiken moet je eerst de Help-bestand en voorbeeldprogramma's, helpen ze veel.

 

Welcome to EDABoard.com

Sponsor

Back
Top