реклама на сайте
подробности

 
 
> нет прерывания по заполнению буфера от adc
sergey sva
сообщение Feb 27 2009, 15:10
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Не как не могу найти причину в чем дело, ацп запускаю от таймера, то есть в прерывании от таймера запускаю
преобразование, после прерывание, по заполнению буфера,но его нет.
CODE

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_CH4 | AT91C_ADC_CH5 | AT91C_ADC_CH6 | AT91C_ADC_CH7);
/* razreshenie kanalov 1 2 3 4 */
p_ADC->ADC_MR = (AT91C_ADC_LOWRES_10_BIT | ( (6) << 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] = 0x06;
/* 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[0];
/* 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;
}//end
//------------------------------------------------------------


void Func_Irq_Adc(void) { AT91C_BASE_PIOA->PIO_CODR = REL1; //для проверки вставил эту строчку она просто включает реле, но
// реле не включается
unsigned int status;
/* peremennaja statusa preobrazovanija */
status = p_ADC->ADC_SR;
/* zapis v peremennuu statusa */
if(status & AT91C_ADC_ENDRX){
/* proverca zapolnenija bufera */
p_ADC->ADC_RPR = (unsigned long)(ADCBUFER);
p_ADC->ADC_RCR = sizeof(ADCBUFER);
FlagAdcEnd = 145;
}//end if(status & AT91C_ADC_ENDRX)

p_AIC->AIC_EOICR = status;
}//end void Func_Irq_Adc(void)
//------------------------------------------------------------

Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 16:44
Рейтинг@Mail.ru


Страница сгенерированна за 0.0136 секунд с 7
ELECTRONIX ©2004-2016