mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AD Wandler des PIC32 für 16 Kanäle


Autor: Matthias M (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich habe ein Problem mit dem ADU des PIC32MX795F512H.Ich versuche alle 
16 analogen Kanäle  im alternating input Modus einzulesen.Es wird mir im 
dazugehörigen Puffer des ADU aber für jeden Eingang der gleiche Wert 
dargestellt.Im scan mode ist es mir möglich alle 8 Eingänge des MUXA zu 
verarbeiten. Es scheint als würde die Umschaltung zwischen MUXA und MUXB 
nicht zu funktionieren .Anbei noch der von mir verwendete code.Hoffe es 
kann mir jemand weiter helfen.

int main(void)
{

#define PARAM1  ADC_MODULE_ON | ADC_FORMAT_INTG | ADC_CLK_AUTO | 
ADC_AUTO_SAMPLING_ON


#define PARAM2  ADC_VREF_AVDD_AVSS | ADC_OFFSET_CAL_DISABLE | 
ADC_SCAN_OFF | ADC_SAMPLES_PER_INT_14 | ADC_ALT_BUF_ON | 
ADC_ALT_INPUT_ON

#define PARAM3  ADC_CONV_CLK_INTERNAL_RC | ADC_SAMPLE_TIME_12


#define PARAM4 
ENABLE_AN0_ANA|ENABLE_AN1_ANA|ENABLE_AN2_ANA|ENABLE_AN3_ANA|ENABLE_AN4_A 
NA|ENABLE_AN5_ANA|ENABLE_AN6_ANA|ENABLE_AN7_ANA|ENABLE_AN8_ANA|ENABLE_AN 
9_ANA|ENABLE_AN10_ANA|ENABLE_AN11_ANA|ENABLE_AN12_ANA|ENABLE_AN13_ANA|EN 
ABLE_AN14_ANA|ENABLE_AN15_ANA


#define PARAM5  SKIP_SCAN_AN0|SKIP_SCAN_AN1|SKIP_SCAN_AN2 |SKIP_SCAN_AN3 
|SKIP_SCAN_AN4|SKIP_SCAN_AN5|SKIP_SCAN_AN6|SKIP_SCAN_AN7|SKIP_SCAN_AN8 
|SKIP_SCAN_AN9 |SKIP_SCAN_AN10 |SKIP_SCAN_AN11 | SKIP_SCAN_AN12 
|SKIP_SCAN_AN13 |SKIP_SCAN_AN14 |SKIP_SCAN_AN15

CloseADC10();

INTEnableSystemMultiVectoredInt();

PORTSetPinsAnalogIn(IOPORT_B,BIT_0|BIT_1|BIT_2|BIT_3|BIT_4|BIT_5|BIT_6|B 
IT_7|BIT_8|BIT_9|BIT_10|BIT_11|BIT_12|BIT_13|BIT_14|BIT_15);

OpenADC10( PARAM1, PARAM2, PARAM3, PARAM4, PARAM5 );

SetChanADC10( 
ADC_CH0_NEG_SAMPLEA_NVREF|ADC_CH0_POS_SAMPLEA_AN2|ADC_CH0_POS_SAMPLEA_AN 
3|ADC_CH0_POS_SAMPLEA_AN4|
        ADC_CH0_POS_SAMPLEA_AN5 |ADC_CH0_POS_SAMPLEA_AN6 
|ADC_CH0_POS_SAMPLEA_AN7 |ADC_CH0_POS_SAMPLEA_AN8 |
        ADC_CH0_POS_SAMPLEA_AN9|
        ADC_CH0_NEG_SAMPLEB_NVREF|ADC_CH0_POS_SAMPLEB_AN10|ADC_CH0_POS_SAMPLEB_A 
N11|ADC_CH0_POS_SAMPLEB_AN12|
        ADC_CH0_POS_SAMPLEB_AN13|ADC_CH0_POS_SAMPLEB_AN14|ADC_CH0_POS_SAMPLEB_AN 
15);

mPORTDSetPinsDigitalOut(BIT_0|BIT_1|BIT_2|BIT_3|BIT_4|BIT_5|BIT_6|BIT_7| 
BIT_8|BIT_9|BIT_10|BIT_11);

ConfigIntADC10(ADC_INT_PRI_2 | ADC_INT_SUB_PRI_2 | ADC_INT_ON);

mAD1ClearIntFlag();

EnableADC10();

  while(1)
  {
  }

}

void __ISR(_ADC_VECTOR, ipl6) AdcHandler(void)
{

mAD1ClearIntFlag();

int Zahl=0,i=0,Zeit=0;
unsigned int result;
unsigned long int a=0;

a=8 * ((~ReadActiveBufferADC10() & 0x01));;
result = ReadADC10(a);
result2= ReadADC10(a+1);
}

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.