Хочу в прерывании от PIT запускать ADC и переводить процессор в idle mode для уменьшения шума, а возвращатся из IDLE mode он будет по прерыванию от ADC. И не работает- процессор так и остаётся в IDLE. А если всё то же самое делать не в прерывании от таймера- работает .
Почему так ? В обработчике прерывания нельзя переходить в IDLE mode ?
Спасибо !
__irq void PIT_interrupt(void) //прерывание от PIT { x=*AT91C_PITC_PIVR; //сбрасываем флаг прерывания *AT91C_ADC_CR|=AT91C_ADC_START; //запускаем ADC AT91C_BASE_PMC->PMC_SCDR|=(1<<0); // idle mode *AT91C_AIC_EOICR = 0; // возврат из прерывания }
__irq void ADC_interrupt(void) // прерывание от ADC {
x=*AT91C_ADC_LCDR; //сбрасываем флаг прерывания *AT91C_AIC_EOICR = 0; // возврат из прерывания }
Сообщение отредактировал MiklPolikov - Aug 3 2008, 14:32
--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
|