logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

TMS320F2809 - ADC, pomiar z roznych kanalow

hardtmuth 29 Cze 2009 12:45 1400 0
REKLAMA
  • #1 6717382
    hardtmuth
    Poziom 20  
    Mam pytanie jak nalezy zainicjowac rejestry ADC w tym procku, by mozna bylo mierzyc na rzadanie raz z kanalu 1, a jesli zajdzie potrzeba to z kanalu 0?

    Init robie tak:

    	AdcRegs.ADCTRL1.bit.ACQ_PS = ADC_SHCLK; 	// s/h width in adc module periods
       AdcRegs.ADCTRL3.bit.ADCCLKPS = ADC_CKPS; 	// adc module clock = HSPCLK/2*ADC_CKPS
       AdcRegs.ADCTRL1.bit.SEQ_CASC = 1;        	// 1 - Cascaded mode
    	AdcRegs.ADCTRL1.bit.CONT_RUN = 0; 			// Setup start/stop run (0)
       
       AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x0;		// adc0 channel
      
    	AdcRegs.ADCTRL3.bit.ADCBGRFDN = 0x3; 		// Power up bandgap/ref cirq
       AdcRegs.ADCTRL3.bit.ADCPWDN = 1; 			// Power up rest of ADC
       DELAY_US(5000L);         						// Delay before converting ADC channels


    tutaj widac, ze kanal 0 jedynie bedzie mierzony.

    i wywolywanie pomiaru:

    AdcRegs.ADCTRL2.bit.SOC_SEQ1 = 1;
    				while(AdcRegs.ADCST.bit.SEQ1_BSY) {};  
    				return = AdcRegs.ADCRESULT0 >>4;


    I teraz pytanie, czy tutaj przy wywolywaniu pomiaru (SOC), przed samym wywolaniem powinienem ustawic np jesli chce uzyskac pomiar z ch1

    AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x1;

    i wywolac SOC, a jesli np kanal 0 no to zmienic na 0x0? Czy to jest wlasciwy sposob? Poki co soft pisze na sucho, dlatego nie moge tego przetestowac.

    EDIT: Odpowiedz uzyskalem gdzie indziej, wszystko sie zgadza, wywolanie jest poprawne, jedynie przed zmiana kanalu nalezy zrobic reset sequencera (RST_SEQ1)
  • REKLAMA
REKLAMA