Хочу в прерывании от 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; // возврат из прерывания
}