www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik init_ADC dsPIC33


Autor: Cygenix (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

Ich möchte den dsPIC33 zum Einlesen von ca. 20 analogen Sensoren 
benutzen und anschließend über SPI an ein PC senden. SPI und senden 
funktioniert problemlos. Anders die AD-Einstellungen. Die AN von 
Microchip funktioniert für die Pins 4,5,10,13. Ich möchte jedoch von 
0..19 alle benutzen.
Wie muss ich die mitgelieferte init_ADC ändern, dass der Controller das 
macht?

void initAdc1(void)
{
AD1CON1bits.FORM   = 0;    // Data Output Format: Integer
AD1CON1bits.SSRC   = 2;    // GP Timer starts conversion
AD1CON1bits.ASAM   = 1;    // begins immediately after conversion
AD1CON1bits.AD12B  = 0;    // 10-bit ADC operation
AD1CON2bits.CSCNA = 1;    // CH0+ during Sample A bit
AD1CON2bits.CHPS  = 0;    // Converts CH0

AD1CON3bits.ADRC = 0;    // ADC Clock is derived from Systems Clock
AD1CON3bits.ADCS = 63;    // ADC Conversion Clock

AD1CON1bits.ADDMABM = 0;   // DMA scatter/gather mode
AD1CON2bits.SMPI    = 3;  // 4 ADC Channel is scanned
AD1CON4bits.DMABL   = 3;  // Each buffer contains 8 words

//AD1CSSH/AD1CSSL: A/D Input Scan Selection Register
AD1CSSH = 0x0000;
AD1CSSLbits.CSS4=1;    // Enable AN4 for channel scan
AD1CSSLbits.CSS5=1;    // Enable AN5 for channel scan
AD1CSSLbits.CSS10=1;    // Enable AN10 for channel scan
AD1CSSLbits.CSS13=1;    // Enable AN13 for channel scan

//AD1PCFGH/AD1PCFGL: Port Configuration Register
AD1PCFGL=0xFFFF;
AD1PCFGH=0xFFFF;
AD1PCFGLbits.PCFG4 = 0;    // AN4 as Analog Input
AD1PCFGLbits.PCFG5 = 0;    // AN5 as Analog Input
AD1PCFGLbits.PCFG10 = 0;  // AN10 as Analog Input
AD1PCFGLbits.PCFG13 = 0;  // AN13 as Analog Input

IFS0bits.AD1IF   = 0;    // Clear the A/D interrupt flag bit
IEC0bits.AD1IE   = 0;    // Do Not Enable A/D interrupt
AD1CON1bits.ADON = 1;    // Turn on the A/D converter

  tglPinInit();
}

Ich dachte mir, setze AD1CSSL = 0xffff und AD1CSSH = 0x0004 danach 
entsprechend die PCFG Register.

Ist das zu einfach, oder sehe ich den Wald vor lauter Bäume nicht?
Ich bin für jede Hilfe echt dankbar.

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.