Ревич, Ю.В. Программирование микроконтроллеров AVR: от Arduino к ассемблеру

304 Часть 111. Практическое программирование микроконтроллеров А VR Если выбран режим запуска не от внешнего источника, то преобразование запуска­ ется установкой бита ADCS (бит 6 того же регистра ADCSRA). В непрерывном режиме (ADFRIADATE = 1) установка бита ADCS запустит первое преобразование, затем они бу­ дут автоматически повторяться. В режиме запуска через прерывания (в тех моде­ лях, где это возможно) установка бита ADCS происходит автоматически, и, соответ­ ственно, запуск преобразования производится при запуске соответствующего пре­ рывания . Отметим, что преобразование начинается по фронту первого тактового импульса (тактового сигнала АЦП, а не самого контроллера ! ) после установки бита ADCS. Само преобразование занимает 1 3 (или 1 4 - для дифференциального входа) периодов тактового сигнала АЦП (опять же - не контроллера ! ), кроме первого по­ сле включения АЦП преобразования, которое займет 25 тактов. По окончании одиночного преобразования бит ADCS аппаратно сбрасывается . Кроме того, по окончании любого преобразования (и в одиночном, и в непрерывном ре­ жиме) устанавливается флаг прерывания ADI F (бит 4 регистра ADCSRA). Чтобы оно реально произошло, необходимо прерывание АЦП разрешить, что осуществляется установкой бита ADIE (бит з) все того же регистра ADCSRA. Для работы с АЦП необходимо еще установить его тактовую частоту. Это делается тремя младшими битами ADPS2 : о регистра ADCSRA. Коэффициент деления частоты тактового генератора МК устанавливается по степеням двойки, при этом состояния о о о и 00 1 соответствуют коэффициенту 2, далее все, как обычно, вплоть до всех трех единиц - 1 28 . Напомним, что оптимальная частота преобразования лежит в диапазоне 50- 200 кГц, откуда вычислены допустимые значения коэффициента деления для раз­ ных тактовых частот контроллера (табл. 1 1 . 1 ) . Таблица 1 1 . 1 . Тактовые частоты АЦП для разных тактовых частот МК Тактовая частота Коэффициент Значения битов Тактовая частота АЦП мк деления ADPS2 : 0 1 МГц 8, 1 6 0 1 1 ; 1 00 1 25 кГц; 62 , 5 кГц 4 МГц 32, 64 1 0 1 , 1 1 0 1 25 кГц; 62 , 5 кГц 8 МГц 64; 1 28 1 1 0 ; 1 1 1 1 25 кГц; 62 , 5 кГц 16 МГц 1 28 1 1 1 1 25 кГц Из данных таблицы следует, что при тактовой частоте АЦП в указанных диапазо­ нах преобразования в 1 3 тактов каждое займут � 1 00 или �200 мкс - в зависимости от установленной частоты. При «ардуиновской» частоте 1 6 МГц в допустимый диапазон укладывается только коэффициент 1 28, при этом преобразование займет примерно 1 00 мкс, что хорошо коррелирует с максимальной допустимой частотой опроса с помощью функции analogRead ( J , равной 1 О ООО раз в секунду. Результат преобразования АЦП размещается в регистрах ADCH : ADCL. Поскольку ре­ зультат 1 О-разрядный, то по умолчанию старшие 6 битов в регистре ADCH оказыва-

RkJQdWJsaXNoZXIy MTExODQxMg==