Для работы с аналоговыми сигналами на вход требуется настроить АЦП
Настройка АЦП сводится к следующим действиям:
1. Необходимо настроить регистр ADMUX (Регистр настройки мультиплексора АЦП).
2. Настройки регистра ADCSRA (Регистр статуса и контроля А)
3. При необходимости, настройке DCSRB (Регистр статуса и контроля B)
3. Чтение результата преобразования
А теперь приступим к самому интересному:
И начинаем запуск преобразования. В регистре ADCSRA, битом ADSC необходимо запустить преобразование и выполнять его,
пока не будет выставлен бит о свидетельствующий о том, что преобразование завершено (бит ADIF).
Данной строчкой (ADCSRA & (1
<< ADIF) == 0 происходит проверка и одновременное сбрасывание
флага об окончании преобразования.
Далее считываем полученное значение, как видно использовать АЦП не так уж и сложно!
unsigned int data;
int main()
Serial.begin(9600);
DDRC = 0x00; // назначает выводы с 14 по 19 входными
PORTC = 0x00;
ADCSRA |= (1 << ADEN)|(1 << ADPS2)|(1 << ADPS1)|(1 << ADPS0);
ADMUX |= (0 << REFS1)|(1 << REFS0)|(0 << MUX0)|(0 << MUX1)|(0 << MUX2)|(0 << MUX3);
L0:;
ADCSRA |= (1 << ADSC); // Начинаем преобразование
L1:;
if((ADCSRA & (1 << ADIF)) == 0) goto L1;
// пока не будет выставлен флаг об окончании преобразования
data = (ADCL|ADCH << 8); // Считываем полученное значение
Serial.println(data);
goto L9;
}