Использую 4 канала ацп, один буфер, вопрос собственно в порядке записи
результатов измерения в буфер, результат измерения будет записываться сначала с
одного канала потом с другого, или сначала буфер заполнится с одного канала, после
будет прерывание по заполнению буфера?
Код
//------------------------------------------------------------
unsigned char ADCBUFER[4] = {0,0,0,0};
void InitADC(void){
p_PMC->PMC_PCER = BV(AT91C_ID_ADC);
/* razreshenie tactirovanija ADC */
p_ADC->ADC_CR = AT91C_ADC_SWRST;
/* sbros ADC */
p_ADC->ADC_CHER = AT91C_ADC_CH1 | AT91C_ADC_CH2 | AT91C_ADC_CH3 | AT91C_ADC_CH4;
/* razreshenie kanalov 1 2 3 4 */
p_ADC->ADC_MR = AT91C_ADC_LOWRES_10_BIT | ( (MCK/2/ADC_CLK - 1) << 8 ) | (5 << 24);
/* razreshenie 8 ili 10 bit; chastota sinh ADC; wrema viborki hranenija; */
p_AIC->AIC_SVR[AT91C_ID_ADC] = (unsigned long)Func_Irq_Adc;
/* vector programm prer. ADC */
p_AIC->AIC_SMR[AT91C_ID_ADC] = 0x05;
/* prioritet prer. ot T0 0 7 */
p_AIC->AIC_IECR = BV(AT91C_ID_ADC);
/* razreshenie prer. ot ADC */
p_ADC->ADC_RPR = (unsigned long)(ADCBUFER);
/* ukazatel na bufer priema */
p_ADC->ADC_RCR = sizeof(ADCBUFER);
/* razmer bufera priema */
p_ADC->ADC_RNPR = 0;
/* ukazatel na bufer 2 priema */
p_ADC->ADC_RNCR = 0;
/* razmer bufera 2 priema */
p_ADC->ADC_PTCR = AT91C_PDC_RXTEN;
/* razreshenie priema peredachi */
p_ADC->ADC_IER = AT91C_ADC_ENDRX; /*| AT91C_ADC_EOC3; */
/* Prerivanie po zapolneniu bufera */
// p_ADC->ADC_CR = AT91C_ADC_START;
}
//------------------------------------------------------------
unsigned char ADCBUFER[4] = {0,0,0,0};
void InitADC(void){
p_PMC->PMC_PCER = BV(AT91C_ID_ADC);
/* razreshenie tactirovanija ADC */
p_ADC->ADC_CR = AT91C_ADC_SWRST;
/* sbros ADC */
p_ADC->ADC_CHER = AT91C_ADC_CH1 | AT91C_ADC_CH2 | AT91C_ADC_CH3 | AT91C_ADC_CH4;
/* razreshenie kanalov 1 2 3 4 */
p_ADC->ADC_MR = AT91C_ADC_LOWRES_10_BIT | ( (MCK/2/ADC_CLK - 1) << 8 ) | (5 << 24);
/* razreshenie 8 ili 10 bit; chastota sinh ADC; wrema viborki hranenija; */
p_AIC->AIC_SVR[AT91C_ID_ADC] = (unsigned long)Func_Irq_Adc;
/* vector programm prer. ADC */
p_AIC->AIC_SMR[AT91C_ID_ADC] = 0x05;
/* prioritet prer. ot T0 0 7 */
p_AIC->AIC_IECR = BV(AT91C_ID_ADC);
/* razreshenie prer. ot ADC */
p_ADC->ADC_RPR = (unsigned long)(ADCBUFER);
/* ukazatel na bufer priema */
p_ADC->ADC_RCR = sizeof(ADCBUFER);
/* razmer bufera priema */
p_ADC->ADC_RNPR = 0;
/* ukazatel na bufer 2 priema */
p_ADC->ADC_RNCR = 0;
/* razmer bufera 2 priema */
p_ADC->ADC_PTCR = AT91C_PDC_RXTEN;
/* razreshenie priema peredachi */
p_ADC->ADC_IER = AT91C_ADC_ENDRX; /*| AT91C_ADC_EOC3; */
/* Prerivanie po zapolneniu bufera */
// p_ADC->ADC_CR = AT91C_ADC_START;
}
//------------------------------------------------------------