михайлов_дз2 (1044808), страница 2
Текст из файла (страница 2)
.
Схема цифро-аналогового преобразователя
Описание работы АЦП
Аналого-цифровой преобразователь может работать в двух режимах: режиме однократного преобразования и режиме циклического преобразования. В режиме однократного преобразования каждое преобразование инициируется пользователем. В режиме циклического преобразования ADC осуществляет выборку и обновление содержимого регистра данных ADC непрерывно. Выбор режима производится битом ADFR регистра ADCSR.
Работа ADC разрешается установкой в состояние 1 бита ADEN в регистре ADCSR. Первому преобразованию, начинающемуся после разрешения ADC, предшествует пустое инициализирующее преобразование.
Преобразование начинается с установки в состояние 1 бита начала преобразования ADSC регистра ADCSRA. Этот бит находится в состоянии 1 в течение всего цикла преобразования и сбрасывается, по завершении преобразования, аппаратно. Если в процессе выполнения преобразования выполняется смена канала данных, то ADC вначале закончит текущее преобразование и лишь потом выполнит переход к другому каналу.
Поскольку ADC формирует 10-разрядный результат, то по завершении преобразования результирующие данные размещаются в двух регистрах данных ADCH и ADCL. Для обеспечения соответствия результирующих данных считываемому уровню используется специальная логика защиты. Этот механизм работает следующим образом: при считывании данных первым должен быть считан регистр ADCL. Как только ADCL считан обращение ADC к регистрам данных блокируется. Таким образом, если после считывания состояния ADCL, но до считывания ADCH, будет завершено следующее преобразование, ни один из регистров не будет обновлен и записанный ранее результат не будет искажен. Обращение ADC к регистрам ADCH и ADCL разрешается по завершении считывания содержимого регистра ADCH.
ADC имеет свое собственное прерывание, которое может быть активировано по завершению преобразования.
Описание регистров АЦП
ADMUX (ADC Multiplexer)
Разряд | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
REFS1 | REFS0 | ADLAR | MUX4 | MUX3 | MUX2 | MUX1 | MUX0 | |
Чтение/запись | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
Исх. значение | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Разряд 7:6 - REFS1:0: Биты выбора источника опорного напряжения
Данные биты определяют какое напряжение будет использоваться в качестве опорного для АЦП. Если изменить значения данных бит в процессе преобразования, то новые установки вступят в силу только по завершении текущего преобразования (т.е. когда установится бит ADIF в регистре ADCSRA). Внутренний ИОН можно не использовать, если к выводу AREF подключен внешний опорный источник.
Выбор опорного источника АЦП
REFS1 | REFS0 | Опорный источник |
0 | 0 | AREF, внутренний VИОН отключен |
0 | 1 | AVCC с внешним конденсатором на выводе AREF |
1 | 0 | Зарезервировано |
1 | 1 | Внутренний источник опорного напряжения 2.56В с внешним конденсатором на выводе AREF |
Разряд 5 – ADLAR: Бит управления представлением результата преобразования
Бит ADLAR влияет на представление результата преобразования в паре регистров результата преобразования АЦП. Если ADLAR = 1, то результат преобразования будет иметь левосторонний формат, в противном случае - правосторонний. Действие бита ADLAR вступает в силу сразу после изменения, независимо от выполняющегося параллельно преобразования.
Разряд 4:0 – MUX4:0: Биты выбора аналогового канала и коэффициента усиления
Данные биты определяют какие из имеющихся аналоговых входов подключаются к АЦП. Если значения бит изменить в процессе преобразования, то механизм их действия вступит в силу только после завершения текущего преобразования (после установки бита ADIF в регистре ADCSRA).
MUX[4:0] | Описание |
00000 | ADC0 |
00001 | ADC1 |
00010 | ADC2 |
00011 | ADC3 |
00100 | ADC4 |
00101 | ADC5 |
00110 | ADC6 |
00111 | ADC7 |
01000 | ADC8 |
01001 | ADC9 |
01010 | ADC10 |
01011 | Темп. датчик |
01100 | VCC/4 |
01101 | ISRC |
01110 | AMP0 |
01111 | AMP1 |
10000 | AMP2 |
10001 | Bandgap |
10010 | GND |
10011 | Зарезервировано |
101xx | Зарезервировано |
1xxxx | Зарезервировано |
ADCSRA (ADC Control and Status A)
Разряд | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
ADEN | ADSC | ADATE | ADIF | ADIE | ADPS2 | ADPS1 | ADPS0 | |
Чтение/запись | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
Исх. значение | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Разряд 7 – ADEN: Разрешение работы АЦП
Запись в данный бит лог. 1 разрешает работу АЦП. Если в данный бит записать лог. 0, то АЦП отключается, даже если он находился в процессе преобразования.
Разряд 6 – ADSC: Запуск преобразования АЦП
В режиме одиночного преобразования установка данного бита инициирует старт каждого преобразования. В режиме автоматического перезапуска установкой этого бита инициируется только первое преобразование, а все остальные выполняются автоматически.
В процессе преобразования при опросе бита ADSC возвращается лог. 1, а по завершении преобразования – лог. 0. Запись лог. 0 в данный бит не предусмотрено и не оказывает никакого действия.
Разряд 5 – ADATE: Выбор режима автоматического перезапуска АЦП
Если в данный бит записать лог. 1, то АЦП перейдет в режим автоматического перезапуска. В этом режиме АЦП автоматически выполняет преобразования и модифицирует регистры результата преобразования через фиксированные промежутки времени. Запись лог. 0 в этот бит прекращает работу в данном режиме.
Разряд 4 – ADIF: Флаг прерывания АЦП
Данный флаг устанавливается после завершения преобразования АЦП и обновления регистров данных. Если установлены биты ADIE и I (регистр SREG), то происходит прерывание по завершении преобразования. Флаг ADIF сбрасывается аппаратно при переходе на соответствующий вектор прерывания. Альтернативно флаг ADIF сбрасывается путем записи лог. 1 в него.
Разряд 3 – ADIE: Разрешение прерывания АЦП
После записи лог. 1 в этот бит, при условии, что установлен бит I в регистре SREG, разрешается прерывание по завершении преобразования АЦП.
Разряды 2:0 – ADPS2:0: Биты управления предделителем АЦП
Данные биты определяют на какое значение тактовая частота ЦПУ будет отличаться от частоты входной синхронизации АЦП.
Управление предделителем АЦП
ADPS2 | ADPS1 | ADPS0 | Коэффициент деления |
0 | 0 | 0 | 2 |
0 | 0 | 1 | 2 |
0 | 1 | 0 | 4 |
0 | 1 | 1 | 8 |
1 | 0 | 0 | 16 |
1 | 0 | 1 | 32 |
1 | 1 | 0 | 64 |
1 | 1 | 1 | 128 |
Регистры данных АЦП – ADCL и ADCH
а). ADLAR = 0 (из регистра ADMUX)
Разряд | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | |
- | - | - | - | - | - | ADC9 | ADC8 | ADCH | |
ADC7 | ADC6 | ADC5 | ADC4 | ADC3 | ADC2 | ADC1 | ADC0 | ADCL | |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||
Чтение/запись | Чт. | Чт. | Чт. | Чт. | Чт. | Чт. | Чт. | Чт. | |
Чт. | Чт. | Чт. | Чт. | Чт. | Чт. | Чт. | Чт. | ||
Исх. значение | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
б). ADLAR = 1 (из регистра ADMUX)
Разряд | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | |
ADC9 | ADC8 | ADC7 | ADC6 | ADC5 | ADC4 | ADC3 | ADC2 | ADCH | |
ADC1 | ADC0 | - | - | - | - | - | - | ADCL | |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||
Чтение/запись | Чт. | Чт. | Чт. | Чт. | Чт. | Чт. | Чт. | Чт. | |
Чт. | Чт. | Чт. | Чт. | Чт. | Чт. | Чт. | Чт. | ||
Исх. значение | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
По завершении преобразования результат помещается в этих двух регистрах (ADCH и ADCL). При использовании дифференциального режима преобразования результат представляется в коде двоичного дополнения.