ADC liest stets falschen PIN ein

Gast #2784245
Lesenswert?

Hallo,
ich arbeite gerade mit einem TMS320F2844 von TI und habe insgesamt 8 PWM 
mit Totzeit sowie Phasenverschiebung generiert. Nun möchte ich gern bei 
UP-DOWN-COUNT bei PRD einen Stromwert einlesen (werden mit LEM-Modul 
gemessen). Hierzu habe ich das ADC-Modul wie folgt initialisiert:
1
 
2
AdcRegs.ADCREFSEL.bit.REF_SEL = 0x0;  // interene Reference on ADCREFIN
3
AdcRegs.ADCTRL3.bit.ADCBGRFDN = 0x3;  // power up bandgap and reference 
4
AdcRegs.ADCTRL3.bit.ADCPWDN = 1;      // power up ADC    
5
DELAY_US(5000);        
6
AdcRegs.ADCTRL1.bit.CPS = 0;          // ADCCLK = HSPCLK
7
AdcRegs.ADCTRL3.bit.ADCCLKPS = 0x1;   // ADCCLKPS=1 ==> ADCCLK =
8
                                          (HSPCLK/2)/(1+CPS)
9
AdcRegs.ADCMAXCONV.all = 0x0;    // 1 double conversion 
10
AdcRegs.ADCTRL1.bit.SEQ_CASC = 0;  // SEQ1 und SEQ2 operate as two 
11
                                           8-state sequencers
12

13
AdcRegs.ADCTRL1.bit.ACQ_PS = 0x3;    
14
AdcRegs.ADCTRL3.bit.SMODE_SEL=0;  //Setup sequential sampling mode
15
//AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x0;// Setup conv from ADCINA0 &
16
                                           ADCINB0
17
AdcRegs.ADCCHSELSEQ1.bit.CONV02 = 0x1;  // Setup conv from ADCINA1 & 
18
                                           ADCINB1
19
AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 1;   // Enable SEQ1 interrupt (every EOS)
20
AdcRegs.ADCTRL2.bit.INT_MOD_SEQ1 = 0;  // 0 = INT_SEQ1 is set at the end of every SEQ1 sequence
21
                      // 1 = INT_SEQ1 is set at the end of every other SEQ1 sequence
22
AdcRegs.ADCTRL1.bit.CONT_RUN = 0;  // Stoppt nach EOS; 
23
DELAY_US(5000);
In der Timer-Interrupt-Service-Routine mach ich dann folgendes:
1
AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1;  // Reset SEQ1
2
AdcRegs.ADCTRL2.bit.RST_SEQ2 = 1;
3
DELAY_US(2);
4
AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1;  // clear interrupt flag
5
AdcRegs.ADCTRL2.bit.SOC_SEQ1 = 1;  // start conversion
6
while(AdcRegs.ADCST.bit.INT_SEQ1== 0);  // Wait for interrupt -> warten bis Wandlung abgeschlossen ist
Im Debug-Modus kann ich dann mit CSS4 mit der Watch-Funktion die 
einzelnen Register beobachten -> nur das ADCRESULT0 ändert sich und 
liest auch noch den falschen Wert ein. Obwohl ich eigentlich das 
RESULT02 ausgewählt habe.

Habe ich falsch Konfiguriert ? Bin um jede Hilfe dankbar. Schon mal im 
voraus Dankeschön.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren