михайлов_дз2 (1044808), страница 3
Текст из файла (страница 3)
Если выполнено чтение ADCL, то доступ к этим регистрам для АЦП будет заблокирован (т.е. АЦП не сможет в дальнейшем модифицировать результат преобразования), пока не будет считан регистр ADCH.
Левосторонний формат представления результата удобно использовать, если достаточно 8 разрядов. В этом случае 8-разрядный результат хранится в регистре ADCH и, следовательно, чтение регистра ADCL можно не выполнять. При правостороннем формате необходимо сначала считать ADCL, а затем ADCH.
ADC9:0 - Результат преобразования АЦП
ЦАП
Atmega16M1 имеет встроенный 10-битный ЦАП.
Схема цифро-аналогового преобразователя
Настройка ЦАП осуществляется с помощью регистра DACON. Как только выставлен бит DAEN в регистре DACON, ЦАП начинает преобразование значения, находящегося в регистрах DACH и DACL.
Другой вариант работы — преобразование может быть начато сигналами от других источников. Автоматическое непрерывное преобразование включено, когда выставлен бит DAATE в регистре DACON. Источник сигналов, задающих момент начала преобразования, выставляется битами DATS. ЦАП начинает преобразование по переднему фронту выбранного сигнала.
Опорным напряжением может служить или AVCC, или внутренний ИОН 2.56 В, или питание со входа AREF.
Описание регистров ЦАП
DACON (Digital to Analog Conversion Control Register)
Разряд | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
DAATE | DATS2 | DATS1 | DATS0 | - | DALA | DAOE | DAEN | |
Чт/запись | R/W | R/W | R/W | R/W | - | R/W | R/W | R/W |
Начальное значение | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Бит 7 — DAATE (DAC Auto Trigger Enable):
Если DAATE=1, входное значение ЦАП будет обновляться по переднему фронту сигнала, выбранного в битах DATS[2..0]
Если DAATE=0, входное значение ЦАП будет обновляться при записи в регистр DACH.
Биты 6:4 – DATS (DAC Trigger Selection)
Выбор источника, прерывание с которого определяет момент начала преобразования.
Имеет значение, только если DAATE=1.
DATS[2:0] | Описание |
000 | Аналоговый компаратор 0 |
001 | Аналоговый компаратор 1 |
010 | Внешний запрос прерывания 0 |
011 | Таймер/Счетчик 0 по совпадению |
100 | Таймер/Счетчик 0 по переполнению |
101 | Таймер/Счетчик 1 по совпадению |
110 | Таймер/Счетчик 1 по переполнению |
111 | Таймер/Счетчик 1 по захвату события |
Бит 2 — DALA (Digital to Analog Left Adjust)
Если DALA = 1, выравнивание входных данных ЦАП по левому краю.
Если DALA = 0, выравнивание входных данных ЦАП по правому крую.
Бит 1 — DAOE (Digital to Analog Output Enable bit)
Если DAOE = 1, происходит вывод результата преобразования на пин D2A.
Бит 0 – DAEN (Digital to Analog Enable)
Если DAEN = 1, ЦАП включен.
DACH и DACL
Эти два регистра содержат значение, которое будет преобразовано в аналоговое напряжение.
Чтобы обновить значение на входе АЦП, необходимо сначала занести данные в DACL, а затем в DACH.
Для облегчения работы с 8-битными значением, есть возможность левого выравнивания входного результата.В этом случае достачно занести данные в DACH, чтобы обновить входное значение ЦАП.
а) DALA=0 (в регистре DACON)
Разряд | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
DACH | - | - | - | - | - | - | DAC9 | DAC8 |
DACL | DAC7 | DAC6 | DAC5 | DAC4 | DAC3 | DAC2 | DAC1 | DAC0 |
Чт/запись | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Начальное значение | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
б) DALA=1 (в регистре DACON)
Разряд | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
DACH | DAC9 | DAC8 | DAC7 | DAC6 | DAC5 | DAC4 | DAC3 | DAC2 |
DACL | DAC1 | DAC0 | - | - | - | - | - | - |
Чт/запись | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Начальное значение | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Если DAATE = 1, входные значения ЦАП будут обновлены при наступлении прерывания от источника, выбранного битами DATS.
Если DAATE = 0, ЦАП работает в режиме автоматического обновления. Запись в ргеистр DACH автоматически повлечет за собой обновления входного значения ЦАП значениями, занесенными в регистры DACH и DACL.