ADC Control and Status Register (ADCSR)

Бит $06($26) R/W Нач.знач.                 ACSR
ADEN ADSC ADFR ADIF ADIE ADPS2 ADPS1 ADPS0
R/W R/W R/W R/W R/W R/W R/W R/W
    N/A          

Рисунок 11.2 – Регистр управления и состояния АЦП (ADCSR)

Таблица 11.1

Краткое описание битов регистра ADCSR

Бит Название Описание
  ADEN Разрешение АЦП (1 - включено, 0 – выключено)
  ADSC Запуск преобразования (1 - начать преобразование)
  ADFR Выбор режима работы АЦП (0 – одиночное преобразование)
  ADIF Флаг прерывания от компаратора
  ADIE Разрешение прерывания от компаратора
2…0 ADSP2…0 Выбор частоты преобразования

Бит 7 - ADEN (ADC Enable). Разрешение работы АЦП. Перед началом использования АЦП требуется разрешить его работу. Для этого необходимо записать лог. «1» в разряд ADEN регистра ADCSR, для запрета соответственно лог. «0». Причем если АЦП будет заблокировано во время цикла преобразования, то преобразование завершено не будет (в регистре данных АЦП останется результат предыдущего преобразования).

Бит 6 - ADSC (ADC Start Conversion). Запуск преобразования. Осуществляется установкой в «1» разряда ADSC регистра ADCSR, а сам цикл преобразования начинается по пер­вому нарастающему фронту тактового сигнала после установки этого разряда. Длительность цикла составляет 13 тактов; выборка и запомина­ние входного сигнала осуществляется в течение первых 1.5 такта. Через 13 тактов преобразование завершается, разряд ADSC аппаратно сбрасы­вается в «0» (в режиме одиночного преобразования), и результат преоб­разования сохраняется в регистре данных АЦП.

Бит 5 - ADFR (ADC Free Running Select). Выбор режима работы. Если разряда ADFR установлен в «1», АЦП работает в режиме непрерывного преобразования. В этом режиме запуск каждого следующего преобразования осу­ществляется автоматически после окончания текущего. Если же разряд ADFR сброшен в «0», АЦП работает в режиме одиночного преобразова­ния и запуск каждого преобразования осуществляется по команде пользователя.

Бит 4 - ADIF (ADC Interrupt Flag). Флаг прерывания. Устанав­ливается по окончании процесса преобразования и записи результата преобразования в регистре данных АЦП. Как и флаги остальных прерываний, флаг ADIF сбрасывается аппаратно при запуске подпрограммы обработки прерыва­ния от АЦП или программно — записью в него лог. «1».

Бит 3 - ADIE (ADC Interrupt Enable). Разрешение прерывания по окончании преобразования. Для возникновения прерывания, флаг I регистра SREG также должен быть установ­лен в «1».

Биты 2-0 – ADPS2…ADPS0 (ADC Prescaler Select Bits). Выбор коэффициента деления тактовой частоты. Тактовым сигналом модуля АЦП является сигнал с предделителя, на вход которого, в свою очередь, поступает тактовый сигнал микроконтрол­лера. Коэффициент деления предделителя и, соответственно, длитель­ность преобразования определяется состоянием разрядов ADPS2...ADPSO регистра ADCSR (см. табл.11.2).

Наибольшая точность преобразования достигается, если тактовая час­тота модуля АЦП находится в определенном диапазоне 50...200 кГц. Соответственно коэф­фициент деления предделителя рекомендуется выбирать таким, чтобы так­товая частота модуля АЦП находилась в указанном диапазоне.

Таблица 11.2

Задание коэффициента деления предделителя АЦП

ADPS2 ADPS1 ADPS0 Коэффициент деления
       
       
       
       
       
       
       
       

Если АЦП работает в режиме непрерывного преобразования, новый цикл начнется сразу же после записи результата в регистры данных. В режиме одиночного преобразования новое преобразование может быть запущено сразу же по­сле сброса разряда ADSC (до сохранения результата текущего преобразо­вания). Однако реально цикл преобразования начнется не ранее чем через один такт после окончания текущего преобразования. Временные диа­граммы, иллюстрирующие сказанное, приведены на рис.11.3.

При написании программ необходимо учитывать одну особенность: для первого после включения АЦП преобразования требуется на 12 тактов больше, чем для всех последующих. Это связано с тем, что при запуске первого преобразования сначала выполняется одно «холостое» преобразование, инициализирующее АЦП (см. рис.11.4). Разряд ADSC в этом случае сбрасывается только после окончания рабочего преобра­зования.

Таким образом, длительность преобразования зависит от режима рабо­ты АЦП и от порядкового номера преобразования. Соответствующие дан­ные приведены в табл.11.3 (нумерация циклов — согласно Рис.11.3 и 11.4).

а)

б)

Рисунок 11.3 - Временные диаграммы работы АЦП:

а — режим одиночного преобразования, б — режим непрерывного преобразования

Рисунок 11.4 - Временные диаграммы работы АЦП при первом преобразовании (режим одиночного преобразования)

Таблица 11.3

Длительность преобразования АЦП

Условия Выборка сигнала (№ такта) Готовность результата (№ такта) Общее время преобразования (тактов)
Непрерывный, 1-е преобразование      
Одиночный, 1-е преобразование      
Режим непрерывного преобразования      
Режим одиночного преобразования      

Как уже было сказано, результат преобразования сохраняется в регист­ре данных АЦП. Поскольку АЦП — 10-разрядный, этот регистр физичес­ки размещен в двух регистрах ввода/вывода ADCH:ADCL, доступных только для чтения. Эти регистры расположены по адресам $05:$04 (адре­са в адресном пространстве ОЗУ соответственно $25:$24) и при включе­нии питания содержат значение «$0000». Обращение к этим регистрам (для получения результата преобразования) должно выполняться в опреде­ленной последовательности: сначала необходимо прочитать регистр ADCL, а затем ADCH. Это требование связано с тем, что после обращения к регистру ADCL процессор блокирует доступ к регистрам данных со сто­роны АЦП до тех пор, пока не будет прочитан регистр ADCH. Благодаря этому можно быть уверенным, что при чтении регистров в них будут нахо­диться составляющие одного и того же результата. Соответственно, если очередное преобразование завершится до обращения к регистру ADCH, результат преобразования будет потерян.

Управление входным мультиплексором модуля АЦП осуществляется с помощью регистра ADMUX, расположенного по адресу $07 ($27). Формат эгого регистра приведен на рис.11.6.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: