Forum: Mikrocontroller und Digitale Elektronik PIC24F Delay fuer ADC


von Mr. Mister (Gast)


Lesenswert?

Hallo,

ich bin noch relativ neue im Bereich der uP Programmierung und daher 
bitte ich gleich mal um Entschuldigung fuer meine wahrscheinlich 
trivialen Fragen...

...ich moechte gerne einen ADC meines PICs verwenden und brauche dazu 
eine delay-Funktion um die sample-Zeit vorzugeben....

...ich programmiere in MPLAB mit C30 Compiler...gibt es da vorgegebene 
Funktionen fuer ein Delay? bzw. gibt es andere Moeglichkeiten dem ADC 
des Pics die Sample time anzugeben?

...mein Code im main.c schaut ungefaehr so aus:

  int ADCValue;

  AD1PCFG  =  0xFFFB;  //set AN2 as analog
  AD1CON1  =  0x0000;  //SAMP bit=0 ends sampling

  AD1CHS  =  0x0002;  //connect AN2 as CH0 input
  AD1CSSL  =  0;
  AD1CON3 =  0x0002;  //Manual Sample, Tad=2Tcy
  AD1CON2  =  0;

  AD1CON1bits.ADON  =  1;  //Turn on ADC

  while(1)
  {
    AD1CON1bits.SAMP=1;    //start sampling
    Delay(10);

    AD1CON1bits.SAMP=0;    //start converting
    while(!AD1CON1bits.DONE);  //conversion done?
    ADCValue = ADC1BUF0;  //yes then get ADC value
  }

..und die Delayfunktion hab ich hier nur mal so reingeschrieben...

von Wolfgang M. (womai)


Lesenswert?

Am elegantesten loest Du das ueber einen Timer-Interrupt (der ADC wird 
in der Interrupt-Routine gestartet und gelesen0 - dann bleibt Deine 
Hauptroutine frei fuer andere Taetigkeiten.

von Bernd R. (Firma: Promaxx.net) (bigwumpus)


Lesenswert?

Wenn wir wüssten, welchen PIC Du einsetzt, würden wir glatt im 
Datenblatt nachsehen, ob der PIC die Fähigkeit hat, die Sample-Zeit 
automatisch abzuarbeiten (ADxCON3: SAMC) und Dir die Suche nach dem 
richtigen C-Befehl ersparen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.