Аналого-цифровий перетворювач у складі мікроконтролера
Структура та управління АЦП rn Мікроконтролери ATmega16 оснащені 10-розрядним АЦП послідовного наближення. Основні параметри цього модуля наступні: rn абсолютна похибка: ± 2 МЗР; rn інтегральна нелінійність: ± 0.5 МЗР; rn швидкодію до 15 тис. вибірок /с. rn На вході модуля АЦП всіх моделей є 8-канальний аналоговий мультиплексор, що надає в розпорядження користувача 8 каналів з несиметричними входами. rn У моделі ATmega16 входи АЦП можуть також об'єднуватися попарно для формування в общей сложности до 13 каналів з диференційних входом. Два канали при цьому мають можливість 20 - і 200-кратного попереднього посилення вхідного сигналу. При коефіцієнта посилення 1х і 20х дійсна роздільна здатність - 8 розрядів, а при коефіцієнті 200х - 7 розрядів. rn В якості джерела опорного напруги для АЦП може використовуватися як напруга живлення мікроконтролера, так і внутрішній або зовнішній джерело напруги. rn АЦП може функціонувати в двох режимах: rn режим одиночного перетворення, коли запуск кожного перетворення ініціюється користувачем; rn режим безперервного перетворення, коли виконується безперервно через певні проміжки часу. rn Для управління модулем АЦП в мікроконтролера ATmega16 передбачені наступні регістри (табл. 28.2): rn Таблиця 28.2 rn Структура регістрів управління модулем АЦП rn rn rn rn rn Біт rn | rn rn Назва rn | rn rn Опис призначення rn | rn rn rn rn ADCSR - Register управління та стану rn | rn rn rn rn 7 rn | rn rn ADEN rn | rn rn Дозвіл АЦП (1 - включено, 0 - вимкнено) rn | rn rn rn rn 6 rn | rn rn ADSC rn | rn rn Запуск перетворення АЦП (1 - почати перетворення, запис 0 в цей біт ефекту не надає.) rn | rn rn rn rn 5 rn | rn rn ADATE rn | rn rn Вибір режиму роботи АЦП (0 - одиночний режим, 1 - циклічний режим або запуск від переривання) rn | rn rn rn rn 4 rn | rn rn ADIF rn | rn rn Прапор переривання АЦП (Встановлюється в 1 по завершенню циклу перетворення). rn | rn rn rn rn 3 rn | rn rn ADIE rn | rn rn Дозвіл переривання АЦП (При встановлених в стан 1 бите ADIE та бите I регістру SREG виникає переривання по завершенню перетворення). rn | rn rn rn rn 2 ... 0 rn | rn rn ADPS2 .. ADPS0 rn | rn rn Завдання коефіцієнта розподілу тактової частоти мікроконтролера для отримання тактової частоти АЦП rn | rn rn rn rn rn Закінчення табл. 28.2 rn rn rn rn rn Біт rn | rn rn Назва rn | rn rn Опис призначення rn | rn rn rn rn ADMUX- Регістр вибору мультиплексора АЦП rn | rn rn rn rn 7,6 rn | rn rn REFS1, REFS0 rn | rn rn Вибір джерела опорного напруги (в таблиці біти позначені як S1 і S0) rn rn rn rn rn S1 rn | rn rn S0 rn | rn rn Джерело опорного напруги rn | rn rn rn rn 0 rn | rn rn 0 rn | rn rn Зовнішній ИОН, підключений до висновку AREF; rn внутрішній ИОН відключений rn | rn rn rn rn 0 rn | rn rn 1 rn | rn rn Напруга живлення AVcc * rn | rn rn rn rn 1 rn | rn rn 0 rn | rn rn Зарезервовано rn | rn rn rn rn 1 rn | rn rn 1 rn | rn rn Внутрішній ИОН напругою 2.56 В rn | rn rn rn rn | rn rn rn rn 5 rn | rn rn ADLAR rn | rn rn Вирівнювання результату перетворення (мал. 3.2) rn | rn rn rn rn 4 ... 0 rn | rn rn MUX4 .. MUX0 rn | rn rn Біти вибору аналогового каналу та коефіцієнта попереднього посилення ( табл.3.15 ). rn | rn rn rn rn Регістр спеціальних функцій - SFIOR rn | rn rn rn rn 7 .. 5 rn | rn rn ADTS2 .. ADTS0 rn | rn rn Вибір джерела запуску перетворення АЦП при ADATE = 1 (в таблиці біти позначені як 2,1 і 0) rn rn rn rn rn 2 rn | rn rn 1 rn | rn rn 0 rn | rn rn Джерело стартового сигналу rn | rn rn rn rn 0 rn | rn rn 0 rn | rn rn 0 rn | rn rn Режим безперервного перетворення rn | rn rn rn rn 0 rn | rn rn 0 rn | rn rn 1 rn | rn rn Переривання від аналогового компаратор rn | rn rn rn rn 0 rn | rn rn 1 rn | rn rn 0 rn | rn rn Зовнішнє переривання INT0 rn | rn rn rn rn 0 rn | rn rn 1 rn | rn rn 1 rn | rn rn Подія «Режим» таймера /лічильника T0 rn | rn rn rn rn 1 rn | rn rn 0 rn | rn rn 0 rn | rn rn Переповнення таймера /лічильника T0 rn | rn rn rn rn 1 rn | rn rn 0 rn | rn rn 1 rn | rn rn Подія «Збіг У» таймера /лічильника T1 rn | rn rn rn rn 1 rn | rn rn 1 rn | rn rn 0 rn | rn rn Переповнення таймера /лічильника T1 rn | rn rn rn rn 1 rn | rn rn 1 rn | rn rn 1 rn | rn rn Подія «Захоплення» таймера /лічильника T1 rn | rn rn rn rn | rn rn rn rn 4 rn | rn rn ADHSM rn | rn rn Вибір режиму прискореного перетворення rn | rn rn rn rn 3 .. 0 rn | rn rn - rn | rn rn не використовуються rn | rn rn rn rn Регістри даних АЦП - ADCL і ADCH - фіксують результат перетворення в залежності від налаштування ADLAR (див. мал. 28.1). rn Біти результату перетворення rn rn rn rn rn - rn | rn rn - rn | rn rn - rn | rn rn - rn | rn rn - rn | rn rn - rn | rn rn 9 rn | rn rn 8 rn | rn | rn rn 7 rn | rn rn 6 rn | rn rn 5 rn | rn rn 4 rn | rn rn 3 rn | rn rn 2 rn | rn rn 1 rn | rn rn 0 rn | rn rn При ADLAR = 0 rn | rn rn rn rn ADCH ADCL rn Біти результату перетворення rn rn rn rn rn 9 rn | rn rn 8 rn | rn rn 7 rn | rn rn 6 rn | rn rn 5 rn | rn rn 4 rn | rn rn 3 rn | rn rn 2 rn | rn | rn rn 1 rn | rn rn 0 rn | rn rn - rn | rn rn - rn | rn rn - rn | rn rn - rn | rn rn - rn | rn rn - rn | rn rn При ADLAR = 1 rn | rn rn rn rn ADCH ADCL rn Рис. 28.1. Принцип вирівнювання результату перетворення АЦП rn Робота аналого-цифрового перетворювача rn Робота АЦП дозволяється установкою в стан 1 біту ADEN в регістрі ADCSR. Якщо АЦП буде вимкнено під час циклу перетворення, то перетворення завершено не буде (в регістрах даних АЦП залишиться результат попереднього перетворення). rn В режимі циклічного перетворення (ADATE = 1) запуск кожного наступного перетворення здійснюється автоматично після закінчення поточного. У режимі одиночного перетворення воно здійснюється по команді користувача. rn Перетворення починається з установки в стан «1» біта початку перетворення ADSC регістру ADCSR. Цей біт знаходиться в стані «1» протягом усього циклу перетворення та скидається, після завершення перетворення апаратно. Запуск перетворення за переривання здійснюється при встановленні в «1» прапора вибраного переривання. Розряд ADSC при цьому апаратно встановлюється в «1». Запуск перетворення в цих режимах також може бути здійснений записом «1» в розряд ADSC. rn Загальна тривалість циклу становить близько 15 тактів. Коли перетворення завершується, розряд ADSC апаратно скидається у «0» і результат перетворення зберігається в регістрах даних АЦП. Одночасно встановлюється прапор переривання ADIF регістру ADCSR і генерується запит на переривання. Дозвіл переривання здійснюється установкою в «1» розряду ADIE регістру ADCSR при встановленому прапорі I регістру SREG. rn Оскільки АЦП формує 10-розрядний результат, то дані розміщуються в двох регістрах даних ADCH і ADCL. При цьому використовується спеціальна логіка захисту: при зчитування даних першим повинен бути вважаю регістр ADCL, після чого звернення ADC до регістру даних блокується. Звернення АЦП до ADCH і ADCL дозволяється по завершенні зчитування вмісту регістра ADCH. rn Якщо результат перетворення вирівнюється вліво і досить точності 8-розрядної значення для отримання результату можна прочитати тільки вміст регістру ADCH. rn Для каналів з несиметричними входом результат перетворення визначається виразом , де - значення вхідної напруги, а - величина опорного напруги. rn Для каналів з диференційних входом результат перетворення визначається виразом , де - величина напруги на позитивному вході, - величина напруги на негативному вході, - коефіцієнт посилення. Результат перетворення представляється в додатковому коді. rn Найбільша точність перетворення досягається, якщо АЦП працює з тактовою частотою в діапазоні від 50 до 200 кГц. rn Висновки мікроконтролера, підключені до входу АЦП, визначаються станом розрядів MUX4 .. 0 регістру ADMUX. Для каналів з диференційних входом зазначені розряди визначають також коефіцієнт попереднього посилення вхідного сигналу. Принцип вибору вхідного каналу представлений в табл.28.3. rn Стан розрядів MUX4 .. 0 можна змінити в будь-який момент, однак, якщо це буде зроблено під час циклу перетворення, зміна каналу відбудеться тільки після завершення перетворення. rn Таблиця 28.3 rn Управління вхідними мультиплексорів в моделі ATmega16 rn rn rn rn rn MUX4 .. MUX0 rn | rn rn несиметричний rn вхід rn | rn rn Диференціальні вхід rn | rn rn Посилення rn | rn rn rn rn (позитивний) rn | rn rn (негативний) rn | rn rn rn rn 00000 rn | rn rn ADC0 rn | rn rn Не придатне rn | rn rn rn rn 00001 rn | rn rn ADC1 rn | rn rn rn rn 00010 rn | rn rn ADC2 rn | rn rn rn rn 00011 rn | rn rn ADC3 rn | rn rn rn rn 00100 rn | rn rn ADC4 rn | rn rn rn rn 00101 rn | rn rn ADC5 rn | rn rn rn rn 00110 rn | rn rn ADC6 rn | rn rn rn rn 00111 rn | rn rn ADC7 rn | rn rn rn rn 01000 rn | rn rn НЕ rn применимо rn | rn rn ADC0 rn | rn rn ADC0 rn | rn rn 10x rn | rn rn rn rn 01001 rn | rn rn ADC1 rn | rn rn ADC0 rn | rn rn 10x rn | rn rn rn rn 01010 rn | rn rn ADC0 rn | rn rn ADC0 rn | rn rn 200x rn | rn rn rn rn 01011 rn | rn rn ADC1 rn | rn rn ADC0 rn | rn rn 200x rn | rn rn rn rn 01100 rn | rn rn ADC2 rn | rn rn ADC2 rn | rn rn 10x rn | rn rn rn rn 01101 rn | rn rn ADC3 rn | rn rn ADC2 rn | rn rn 10x rn | rn rn rn rn 01110 rn | rn rn ADC2 rn | rn rn ADC2 rn | rn rn 200x rn | rn rn rn rn 01111 rn | rn rn ADC3 rn | rn rn ADC2 rn | rn rn 200x rn | rn rn rn rn 10000 rn | rn rn ADC0 rn | rn rn ADC1 rn | rn rn 1x rn | rn rn rn rn 10001 rn | rn rn ADC1 rn | rn rn ADC1 rn | rn rn 1x rn | rn rn rn rn 10010 rn | rn rn ADC2 rn | rn rn ADC1 rn | rn rn 1x rn | rn rn rn rn 10011 rn | rn rn ADC3 rn | rn rn ADC1 rn | rn rn 1x rn | rn rn rn rn 10100 rn | rn rn ADC4 rn | rn rn ADC1 rn | rn rn 1x rn | rn rn rn rn 10101 rn | rn rn ADC5 rn | rn rn ADC1 rn | rn rn 1x rn | rn rn rn rn 10110 rn | rn rn ADC6 rn | rn rn ADC1 rn | rn rn 1x rn | rn rn rn rn 10111 rn | rn rn ADC7 rn | rn rn ADC1 rn | rn rn 1x rn | rn rn rn rn 11000 rn | rn rn ADC0 rn | rn rn ADC2 rn | rn rn 1x rn | rn rn rn rn 11001 rn | rn rn ADC1 rn | rn rn ADC2 rn | rn rn 1x rn | rn rn rn rn 11010 rn | rn rn ADC2 rn | rn rn ADC2 rn | rn rn 1x rn | rn rn rn rn 11011 rn | rn rn ADC3 rn | rn rn ADC2 rn | rn rn 1x rn | rn rn rn rn 11100 rn | rn rn ADC4 rn | rn rn ADC2 rn | rn rn 1x rn | rn rn rn rn 11101 rn | rn rn ADC5 rn | rn rn ADC2 rn | rn rn 1x rn | rn rn rn rn 11110 rn | rn rn 1.22 В rn | rn rn Не придатне rn | rn rn rn rn 11111 rn | rn rn 0 В (GND) rn | rn rn rn
|