Сделал. Компилятор не ругается. Но в ходе отладки установлено, что программа виснет в цикле while ( ADCSRA & (1 << ADIF) );
Стал я дальше ковырять. Ну вот это мне совсем не понятно... Залез я в генератор кода в CodeVision. Сгенерировал. Установил источником опорного напряжения AVCC. В коде появилась такая строчка : #define ADC_VREF_TYPE 0x40
ОДнако ниже есть еще вот что: ADMUX=ADC_VREF_TYPE;
Что же это получается.... Я думал что ADMUX - это номер канала ADC0, ADC1... То есть тот пин, куда подается измеряемое напряжение.
Так... надо подучить матчасть. Почитал я все что нашел на эту тему, некоторые моменты остались непонятны. Если несложно проясните их для меня.
1. Для чего необходима установка частоты АЦП? Правильно ли я думаю, чтоэ АЦП работает как отдельный блок, помещая результат в регистр, из которого мы читаем впоследсвии? Или же АЦП спит, а когда мы ставим бит в ADSC он включается, конвертирует, возвращает результат? ТОгда в этом случает непонятно для чего нужен этот параметр - частота.
2. Источник опорного напряжения. Что надо сделать? Подключить к плюсу AREF и AVCC? И что лучше выбрать потом - AREF или внутренний опорник?
P.S. ПРошу прощения, если кому мои вопросы покажутся глупыми.
|