Forum: Mikrocontroller und Digitale Elektronik PIC24 ADC Handling


von Hans P. (hanspaul)


Lesenswert?

Hallo Freunde,

ich habe ein Problem mit dem ADC. Was möchte ich machen:
Ich will eine Gruppe von ADC Eingängen in einem bestimmten Zeitintervall 
abfragen.
Grundsätzlicvh habe ich das Ding laufen aber nicht so wie ich es will 
habe schon viel gelesen und auch nach dem Microchip Example versucht.Ja 
er liest die Werte ein aber in einem nicht nachvollziebaren 
Zeitintervall. Egal was ich einstelle. Z.B. start durch Timer, Timer ist 
auf 2ms tatsächlich liest er einen Burst 1 MS lang  und macht dann 11ms 
Pause.
Hat da jemand Erfahrung und kann mir weiterhelfn, kann doch nicht so 
schwer sein.
lg
Hansp

PS.: ich habe einen PIC aus der PIC24FJ Family

von Andi B. (andi_b2)


Lesenswert?

Alle 16 channels automatisch und dann gemütlich alle paar ms die Werte 
aus dem ADC buffer auslesen und filter und was auch immer so z.B. 
initialisieren -
1
  // turn of ADC
2
  AD1CON1bits.ADON = 0;
3
4
  // configure pins as analog inputs (all 16 channels)
5
    AD1PCFGL = 0x00;
6
  // disable band gab channels in scan
7
  AD1PCFGH = 0x00;
8
9
  // init ADC
10
  OpenADC10(  ADC_MODULE_ON |                 // Adcon1   /* A/D Converter on */
11
        ADC_IDLE_CONTINUE |                         /* A/D Operate in Idle mode */
12
        ADC_FORMAT_INTG |                           /* A/D data format integer */
13
        ADC_CLK_AUTO |                              /* Internal counter ends sampling and starts conversion (Auto convert) */
14
        ADC_AUTO_SAMPLING_ON |                     /* Sampling begins immediately after last conversion */
15
        ADC_SAMP_ON                                 /* sample / hold amplifiers are sampling */
16
        ,
17
        ADC_VREF_AVDD_AVSS |           // Adcon2   /* A/D Voltage reference configuration Vref+ is AVdd and Vref- is AVss */
18
        ADC_SCAN_ON |                               /* A/D Scan Input Selections for CH0 during SAMPLE A */
19
        ADC_INTR_16_CONV |                          /* Interrupts at the completion of conversion of 16 samples */
20
        ADC_ALT_BUF_OFF |                           /* Buffer configured as 1 16-word buffer */
21
        ADC_ALT_INPUT_OFF                           /* use MUXA only */
22
        ,
23
        ADC_SAMPLE_TIME_10 |         // Adcon3   /* A/D Auto Sample Time 10 Tad */
24
                                // 55us with 4MHz FCY and CLK_11Tcy
25
        ADC_CONV_CLK_SYSTEM |                       /* Clock derived from system clock */
26
        ADC_CONV_CLK_11Tcy                          /* A/D Conversion Clock is 11*Tcy */
27
                                // 365kHz - 2.75us, 10 clk for sample and 12 clk for conversion = 22 clk
28
                                // x 16 channels = 352 clk = 0.968ms, for all 16 channels
29
        ,
30
        ENABLE_ALL_ANA_0_15             // PinConfig
31
        ,
32
        ENABLE_ALL_INPUT_SCAN       // Scanselect
33
      );

: Bearbeitet durch User
von Hans P. (hanspaul)


Lesenswert?

Hallo Andi,

danke für die Antwort, bin erst jetzt wieder dazu gekommen mich damit zu 
beschäftigen.

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.