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.