ADCS0 у регістрі ADCON0);
2. Настроїти переривання від модуля АЦП (при необхідності):
3. Витримати паузу 20 – 30 мкс.
4. Почати аналого-цифрове перетворення:
5. Очікувати закінчення перетворення, наприкінці якого автоматично виконується:
6. Отримати результати перетворення:
7. Виконати дії, починаючи з пункту 1 або пункту 2, для виконання наступного перетворення.
2.2 Вивод аналогових сигналів виконується за допомогою цифро-аналогових перетворювачів. Сигнал з амплітудою, пропорційною цифровому коду, можна також одержати, використовуючи широтноімпульсну модуляцію (ШІМ), що представляє собою сигнали змінної тривалості при постійному періоді. Амплітуда такого сигналу, що пройшов через інтегруючий ланцюжок або через фільтр низької частоти (ФНЧ), пропорційна тривалості ШІМ сигналу.
На рисунку 5.2 наведений приклад формування ШІМ сигналу з різною тривалістю tи1, tи2, tи3 і постійним періодом T.
tі1
Рисунок 5.2- Форма ШІМ сигналу
На рисунку 5.3 наведений приклад схеми формування аналогового сигналу з ШІМ сигналу із використанням RC ланцюжка у якості ФНЧ першого порядку і повторювача на операційному підсилювачі.
Рисунок 5.3 - Формування аналогового сигналу
Для розрахунку значень R і C звернемося до амплітудно-частотної характеристики (АЧХ) ФНЧ, що представлена на рисунок 5.4.
1
0,707
Рисунок 5.4 - Амплітудно-частотна характеристика ФНЧ
3 Завдання по лабораторній роботі 3.1 Введення аналогових сигналів.
3.1.1 Виконати конфігурацію мікроконтролера на вводу аналогових сигналів.
3.1.2 Ввести сигнали з двох аналогових датчиків U1 і U2.
3.1.3 Зробити порівняння введених сигналів.
3.1.4 За результатами порівняння виконати підпрограму згідно варіанту.
3.1.5 Визначити час виконання перетворення АЦП.
3.2 Вивід аналогових сигналів.
3.2.1 На заданому виводі мікроконтролера сформувати сигнал із заданим періодом повторення T і числом рівнів квантування N.
4 Варіанти завдання 4.1.
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | |
U1 < U2 | A | B | C | D | E | F | G | H | I | J | A | B | C | D | E | F | D | C | I | J |
U1 = U2 | I | J | G | H | E | F | D | C | B | J | A | I | C | G | F | E | G | H | I | A |
U1 > U2 | A | J | C | H | B | D | G | C | I | E | J | B | H | D | E | E | D | H | B | J |
Дії підпрограм:
A – інкремент комірки пам'яті даних;
B – декремент 16-розрядного лічильника в пам'яті даних;
C – читання 8-розрядного числа з порту B і запис його в комірку пам'яті даних;
D – запис поточного значення таймера (регістр TMR0) в комірку пам'яті даних;
E
F – інкремент 16-розрядного лічильника в пам'яті даних;
G – одночасне інвертування сигналів на виводах RB0 і RB1;
H – декремент комірки пам'яті даних;
I – обмін рівнів сигналів на виводах RB1 і RB2;
J – прийом дискретного сигналу з виводу RB3 і видача його на вивід RB0. Варіанти завдання 4.2
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | |
Вивід RB | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 0 | 1 | 2 | 3 |
T, мс | 2 | 4 | 8 | 16 | 32 | 64 | 2 | 4 | 8 | 16 | 64 | 2 | 4 | 8 | 16 | 32 | 64 | 2 | 4 | 8 |
N | 25 6 | 12 8 | 64 | 32 | 25 6 | 12 8 | 64 | 32 | 25 6 | 12 8 | 64 | 32 | 25 6 | 12 8 | 64 | 32 | 25 6 | 12 8 | 64 | 32 |
Приклад програми. Фрагмент програми, що виконує настроювання АЦП і аналого-цифрове перетворення вхідного сигналу з виводу RA2/AN2.
; підключення файлу з описом стандартних констант і значень #include p16c71.inc
…
; Настроювання АЦП
initAD
bsf STATUS, RP0 ; вибір банку 1
movlw b‘00000000‘ ; вив.RA3-RA0–аналогові входи
movwf ADCON1
bcf STATUS, RP0 ; вибір банку 0
movlw b'11010001' ; RC-генератор для АЦП,
movwf ADCON0 ; канал 2, дозвіл АЦП
; Перетворення Convert
call Delay30us ; затримка 30 мкс
bsf ADCON0, GO_DONE ; запуск АЦП loop btfsc ADCON0, GO_DONE ; перетворення закінчене?
goto loop ; продовжити чекання
movf ADRES, W ; результат перетворення в W
… ; продовження програми
5.1 Створити текстовий файл із передбачуваними значеннями результатів перетворення АЦП, наприклад adcres.reg
5.2 Відкрити вікно Register Stimulus через меню: Debug->Simulator Stimulus->Register Stimulus->Enable...
5.3 У полі Program Memory Address вказати адресу команди в пам'яті програм (дозволяється і рекомендується вказувати мітку), наприклад, ares.
5.4 У полі Register Address вкажіть адресу або символьне ім'я регістра, наприклад, ADRES.
5.5 Натисніть кнопку Browse... для вказівки файлу стимулу, наприклад, adcres.reg.
5.6 Після скидання мікроконтролера, щораз, коли значення лічильника команд PC співпаде з указаною адресою ares, у регістр ADRES буде занесене значення з файлу adcres.reg. При досягненні кінця файлу adcres.reg підстановка почнеться з початку файлу, тобто буде виконуватися циклічно.
6 Зміст звіту 6.1 Тема.