Forum: Mikrocontroller und Digitale Elektronik init_ADC dsPIC33


von Cygenix (Gast)


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.

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.