Лекция - Си
.pdfПример.
Работа с АЦП с использованием прерываний (4)
// Настройка АЦП void setUpAdc (void)
{
//Режим: 8 бит, не спящий; остальные параметры - по умолчанию
//Время выборки и частота тактирования здесь не настроены; adc->ADC_MR =
AT91C_ADC_LOWRES_8_BIT | AT91C_ADC_SLEEP_NORMAL_MODE;
//Включить 4й канал (потенциометр)
adc->ADC_CHER = AT91C_ADC_CH4;
//Включить выставление сигнала прерывания
//по завершению преобразования
adc->ADC_IER = AT91C_ADC_EOC4;
}
51
Пример. Работа с АЦП с использованием прерываний (5)
// Флаг, свидетельствующий о том, что выполняется преобразование static volatile unsigned char adcIsRunning = false;
// Обработчик прерывания от АЦП static void adcInterruptHandler(void)
{
}
int main(void)
{setUpAic(); setUpAdc(); while (1)
{// Если преобразование не выполняется, запускаем снова if (!adcIsRunning) // if (adcIsRunning == false)
{adcIsRunning = true;
adc->ADC_CR = AT91C_ADC_START; // 0x02; Запуск АЦП
|
} |
|
// ... Делаем что-то полезное |
} } |
52 |
|
Спасибо за внимание!
Вопросы?
53