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:
tutaj widac, ze kanal 0 jedynie bedzie mierzony.
i wywolywanie pomiaru:
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)
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 channelstutaj 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)