МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
Курсова робота
ПРОЕКТУВАННЯ МІКРОКОМП’ЮТЕРА
Зміст
1.
Технічне завдання………………… ...................................................................
3
2.
Опис схеми електричної функціональної ...............……………...................
3
3.
Опис мікропроцесора PIC16F887………………………………………….
4
3.1.
Загальний опис мікроЕОМ MC68HC908QT4……………………………………
4
3.2.
Пам'ять………………………………………………………………………………….
7
3.3.
Регістри загального призначення……………………………………................
8
3.4.
Регістри спеціального призначення…………………………………………..
8
3.5.
Вичисляючий перехід……………………………………………………………..
11
3.6.
Стек…………………………………………………………….…………….……….…
11
3.7.
Сторінки памяті програм…………………………………………………………
11
3.8.
Непряма адресація, регістри INDF і FSR………………………………………
11
4.0
Універсальний синхронно-асинхронний приймач-передавач
(USART)……………………………………………………….…………….……….…
12
4.1
Генератор частоти обміну USART BRG……………………………………
13
4.1.1
Вибірка…………………………………………………………………………………
14
4.2
Асинхронний режим USART…………………………………..…………..…..
15
4.2.1
Асинхронний передавач USART……………………………............................
15
4.2.2
Асинхронний приймач USART……………………..……………………..……..
17
5.0
Модуль 10-розрядного АЦП………………………………………………………
19
5.1
Тимчасові вимоги до підключення каналу АЦП……………………………
22
5.2
Вибір джерела тактових імпульсів для АЦП………..…………..……………
23
5.3
Настроювання аналогових входів………..………………………..……………
23
5.4
Аналого-цифрове перетворення…..………………………..…………………
23
5.4.1
Вирівнювання результату перетворення………………..……………………
24
5.5
Ефект скидання…..………………………..…………………..……………………
24
6.0
Особливості мікроконтролерів PІC16F87X……………..……………………
25
6.1
Біти конфігурації..………………………..…………………..………………………
25
6.2
Настроювання тактового генератора…………………..………………………
27
6.2.1
Режими тактового генератора………..…………………..……………………
27
6.2.2
Кварцовий/керамічний резонатор…..…………………..……………………
27
6.2.3
RC генератор…..…………………..…………………………..……………………
28
6.3
Скидання…..…………………..…………………………..…………………………
29
6.4
Скидання по включенню живлення POR…………..…………………………
30
6.5
Таймер включення живлення PWRT………………..…………………………
30
6.6
Таймер запуску генератора OST……………………..…………………………
31
6.7
Скидання по зниженню напруги живлення BOR..…………………………
31
7
Опис схеми електричної принципової……………..…………………………
31
8
Блок-схема та програми початкової ініціалізації..…………………………
31
Використана література……………..……………………………………………
33
Додаток 1……………..………………………………………………………………
34
Додаток 2……………..………………………………………………………………
35
Додаток 3……………..………………………………………………………………
36
1. Технічне завдання
На базі мікроконтролера PIC16f877 розробити вимірювальний пристрій, який буде передавати значення температури на персональний комп”ютер по інтерфейсу RS-232, отриманого даним мікроконтролером. Значенню напруги на давачі ставиться у відповідність його температура.
В якості додаткових елементів проекту використати буферний перетворювач рівнів LT1280A, який перетворює TTL рівні виводів мікроконтролера у відповідні рівні напруги інтерфейсу RS-232 персонального комп”ютера. Серед дискретних елементів використати конденсатор в колі живлення, температурний давач, резистори, кварцевий резонатор, роз”єм DB9S та вилку (розєм) для підведення живлення на плату.
2. Опис схеми електричної функціональної
Схема пристрою складається із трьох основних компонентів, які відображені на схемі електричній функціональній. Ними являються:
- коло давача
мікроконтролер
перетворювач рівнів
Перетворювач
Давач Мікроконтролер рівнів
RX До PC
АС0 TX
Коло давача формує напругу, по якій ставиться у відповідність температура. Мікроконтролер оцифровує цю напругу і по заданому закону знаходиться відповідне значення температури
Перетворювач рівнів LT1280A, який перетворює TTL рівні виводів мікроконтролера у відповідні рівні напруги інтерфейсу RS-232 персонального комп”ютера.
Характеристика давача(залежність опору від температури)
Аналітичний вираз залежності:
Таким чином по заданому графіку отримуємо необхідний результат .
3. Опис мікроконтролера PIC16F877
3.1. Загальний опис PIC16F877
PIC16F877 відноситься до 8-розрядних мікроконтроллерів (MCU).
Характеристики мікроконтролера:
Високошввидкісна RISC архітектура
35 інструкцій
Всі команди виконуються за один цикл,крім
інструкцій переходів, які виконуються за два цикла
Тактова частота:
- DC – 20 МГц, тактовий сигнал
- DC – 200нс, один машинний цикл
До 8к х 14 слів FLASH памяті програм Розміщення виводів
До 368 х 8 байт памяті даних
До 256 х 8 байт EEPROM памяті даних
Сумісність по виводам з PIC16C3B/74B/76/77
Система переривань (до 14 джерел)
8-рівневий апаратний стек
Прямий і відносний режим адресації
Скидання по включенню живлення(POR)
Програмуючий захист памяті програм
Режим енергозбереження SLEEP
Вибір параметрів тактового генератора
Високошвидкісна, енергозберігаюча CMOS
FLASH/EEPROM технологія
Повністю статична архітектура
Програмування в готовому пристрої
Низьковольтний режим програмування
Режим внутрісхемної відладки
Шрокий діапазон напруг живлення
від 2.0В до 5.5В
Підвищена нагрузочна можливість портів
вводу/виводу(25мА)
Мале енерговживання:
- <0.6мA @ 3.0В, 4.0МГц
- 20мкА @ 3.0В, 32кГц
- 1мкА в режимі енергозбереження
Характеристика переферійних модулів:
Багатоканальний 10-розрядний АЦП
Послідовний синхронний порт MSSP
Послідовний синхронний- асинхронний
приймач-передавач USART з підтримкою
детектування адресу
8-розрядний паралельний порт PSP з підтримкою
внутрішніх сигналів –RD,-WR, -CS
Детектор пониженої напруги(BOD) для скидання
по зниженню напруги живлення(BOR)
Параметр
PIC16F877
Тактова частота
DC – 20МГц
Скидання
POR, BOR (PWRT, OST)
FLASH память програм (14-розрядних слів)
8K
Память даних (байт)
368
EEPROM память даних (байт)
256
Переривання
14
Порти вводу/виводу
Порти A, B, C, D, E
Модулі послідовного інтерфейса
MSSP, USART
Модулі паралельного інтерфейса
PSP
Модуль 10-розрядного АЦП
8 каналів
Інструкції
35
Структурна схема мікроконтролера
Призначення виводів мікросхеми
Імя виводу
Опис
OSC1/CLKIN
Вхід генератора/вхід зовнішнього тактового сигналу
OSC2/CLKOUT
Вихід генератора. Підключається кварцевий або керамічний резонатор.
-MCLR/Vpp
Вхід скидання мікроконтролера або вхід напруги програмування. Скидання
мікроконтролера відбувається при низькому логічному рівні сигнала на вході
RA0/AN0
RA1/AN1
RA2/AN2/Vref-
RA3/AN3/Vref+
RA4/T0CKI
RA5/-SS/AN4
Двонаправлений порт вв./вив. PORTA. RA0 може бути як аналоговий канал 0
RA1 може бути як аналоговий канал 1
RA2 може бути як аналоговий канал 2 або вхід відємної опорної напруги
RA3 може бути як аналоговий канал 3 або вхід позитивної опорної напруги
RA4 може використовуватися в якості входу зовнішнього тактового сигнала для TMR0.
RA5 може бути як аналоговий канал 5 або вхід вибору мікросхеми в режимі SPI.
RB0/INT
RB1
RB2
RB3/PGM
RB4
RB5
RB6/PGC
RB7/PGD
RB0 може використовуватися в якості входу зовнішніх переривань
RB3 може використовуватися в якості входу для режиму низьковольтного програмування
Переривання по зміні рівня вхідного сигнала
Переривання по зміні рівня вхідного сигнала
Переривання по зміні рівня вхідного сигнала або вивід для режима внутрісхемної відладки ICD. Тактовий вхід в режимі програмування
Переривання по зміні рівня вхідного сигнала або вивід для режима внутрісхемної відладки ICD. Вивід даних в режимі програмування
RC0/T1OSO/T1CKI
RC1/T1OSI/CCP2
RC2/CCP1
RC3/SCK/SCL
RC4/SDI/SDA
RC5/SDO
RC6/TX/CK
RC7/RX/DT
RC0 може використовуватися в якості виходу генератора TMR1 або входу зовнішнього тактового сигнала для TMR1
RC1 може використовуватися в якості виходу генератора TMR1 або виводу модуля CCP2
RC2 може використовуватися в якості виводу модуля CCP1
RC3 може використовуватися в якості входу/вихода тактового сигнала в режимі SPI і I2C
RC4 може використовуватися в якості входу даних в режимі SPI і I2C абовх./вих. даних в режимі I2C
RC5 може використовуватися в якості входу даних в режимі SPI
RC6 може використовуватися в якості виводу передавача USART в асинхронному режимі або виводу синхронізації USART в синхронному режимі
RC7 може використовуватися в якості виводу приймача USART в асинхронному режимі або виводу даних USART в синхронному режимі
RD0/PSP0
RD1/PSP1
RD2/PSP2
RD3/PSP3
RD4/PSP4
RD5/PSP5
RD6/PSP6
RD7/PSP7
Двонаправлений порт вх./вих.PORTD або паралельний порт для підключення до шини мікропроцесора
RE0/-RD/AN5
RE1/-WR/AN6
RE2/-CS/AN7
RE0 може використовуватися в якості виконуючого входу читання PSP або аналогового канала 5
RE1 може використовуватися в якості виконуючого входу запису PSP або аналогового канала 6
RE2 може використовуватися в якості виконуючого входу вибору PSP або аналогового канала 7
Vss
Загальний вивід для внутрішньої логіки і портів вх./вих.
Vdd
Позитивна напруга живлення для внутрішньої логіки і портів вх./вих.
3.2. Память
В мікроконтролерах PIC16F877 може бути три вида памяті. Память програм і память даних мають окремі шини даних і адреса, що дозволяє виконувати паралельний доступ.
Організація памяті програм
Мікроконтролери PIC16F877 мають 13-рорядний лычильник команд РС, спроможний адресувати 8К х 14 слів памяті програм. Фізично реалізовано FLASH памяті програм 8К х 14 в PIC16F877. Звертання до фізично не реалізованої памяті програм приведе до адресації реалізованої памяті. Адрес вектора скидання – 0000h. Адрес вектора переривання – 0004h.
Організація памяті в мікроконтролері PIC16F877
Організація памяті даних
Память даних розділена чотири банка, які містять регістри загального і спеціального (SFR) призначення. Біти (STATUS<6>) і (STATUS<5>) призначені для керування банками даних. В таблиці зображено стан керуючих бітів при звертанні до банків памяті даних.
RP1:RP0
Банк
00
0
01
1
10
2
11
3
Обєм банків памяті даних до 128 байт (7Fh). На початку банка розміщуються регістри спеціального призначення, потім регістри загального призначення. Всі реалізовані банки містять регістри спеціального призначення. Деякі регістри спеціального призначення можуть відображатись і в інших банках памяті.
Карта памяті даних мікроконтролера
адрес
3.3. Регістри загального призначення
Звернутись до регістрів загального призначення можна прямою або косвеной адресацією, через регістр FSR.
3.4. Регістри спеціального призначення
За допомогою регістрів спеціального призначення виконується керування функціями ядра і переферійними модулями мікроконтролера. Регістри спеціального призначення реалізовані як статичний ОЗП.
Позначення: - = не використовується, читається як 0; и=не міняється; х= не відомо; q= залежить від умов;r=резерв.Затемнені комірки читаються як 0.
Регістр STATUS
В регістрі STATUS містяться прапорці стану АЛУ, прапорці причини скидання мікроконтролера і біти керування банками памяті даних. Регістр STATUS може бути адресований любою командою, як і любий інший регістр памяті даних. Якщо звертання до регістру STATUS виконується командою, яка діє на прапорці Z,DC і C, то зміни цих трьох бітів комондою заблокована. Ці біти скидаються чи встановлються відповідно логіці ядра мікроконтролера. Команди зміни регістра STATUS також не діють на біти –TO і -PD. Тому, результат виконання команди з регістром STATUS може відрізнятися від очікуваного.При зміні бітів регістра STATUS рекомендується використовувати команди, які не впливають на прапорці АЛУ(SWAPF,MOVWF, BCF, BSF).
Регістр OPTION_REG
Регістр OPTION доступний для читання і запису, містить біти керування:
попореднім дільником TMR0/WDT;
активним фронтом зовнішнього переривання RB0/INT;
підтягуючими резисторами на входах PORTB.
Регістр INTCON
Регістр INTCON доступний для читання і запису, містить біти дозволу і прапорці переривань: переповнення TMR0; зміни рівня сигналу на виводах PORTB; зовнішнє джерело переривань RB0/INT.
Регістр PIE1
Регістр PIE1 доступний для читання і запису, містить біти дозволу переферійних переривань.
Регістр PIR1
Регістр PIR1 доступний для читання і запису, містить прапорці переривань переферійних модулів.
Регістр PIE2
Регістр PIE2 доступний для читання і запису, містить біти дозволу переривань
Регістр PIR2
Регістр PIR2 доступний для читання і запису, містить прапорці переривань від модуля CCP2, виникнення колізій на шині і закінчення запису в EEPROM память даних.
Регістр PCON
Регістр PCON містить прапорці, за допомогою яких можна визначити джерело скидання мікроконтролера:
скидання по включенню живлення(POR);
скидання по сигналу на виводі –MCLR;
скидання по переповненню сторожевого таймера WDT;
скидання по знаходженню зниження напруги живлення(BOR).
3.5. Вичисляючий перехід
Вичисляючий перехід може бути виконаний командою приросту до регістра PCL. При виконанні табличного читання вичисляючим переходом слід піклуватися про те, щоб значення PCL не пересікало границю блока памяті(кожний блок 256 байт).
3.6. Стек
PIC16F877 має 8-рівневий 13-розрядний апаратний стек. Стек не має відображення на память програм і память даних, неможна записати чи прочитати дані із стеку. Значення лічильника команд поміщується у вершину стеку при виконанні інструкцій переходу на підпрограму(CALL) або обробки переривань. Читання із стеку і запис в лічильник команд РС відбувається при виконанні інструкцій повернення з підпрограми або обробки переривань, при цьому значення регістра PCLATH не міняється.Стек працює як циклічний буфер. Після 8 записів в стек, 9 запис записується на місце першої.
3.7. Сторінки памяті програм
Мікроконтролери PIC16F877 здібні адресувати 8К слів памяті програм. Інструкції переходів (CALL і GOTO) мають 11-розрядне поле для вказання адреса, що дозволяє безпосередньо адресувати 2К слів памяті програм. Для адресації верхніх сторінок памяті програм використовується 2 біта в регістрі PCLATH<4:3>. Перед виконанням команди переходу(CALL і GOTO) необхідно запрограмувати біти регістра PCLATH<4:3> для адресації потрібної сторінки. При виконанні інструкцій повернення з підпрограми, 13-розрядне значення для лічильника програм РС береться з вершини стека, тому маніпуляція бітами регістра PCLATH<4:3> не потрібна.Зміст регістра PCLATH не міняється поле виконання інструкцій RETURN або RETFIE. Користувач повинен сам поміняти значення регістра PCLATH для наступного виконання команд CALL і GOTO.
3.8. Непряма адресація, регістри INDF і FSR
Для виконання непрямої адресації необхідно звернутися до фізично не реалізованого регістри INDF. Звертання до регістра INDF фактично викличе дію з регістром, адрес якого вказаний в FSR. Непряме читання регістра INDF (FSR=0) дає результат 00h. Непрямий запис в регістр INDF не викличе ніяких дій(викличе дію на прапорці АЛУ в регістрі STATUS). 9-біт непрямого адреса IRP зберігається в регістрі STATUS<7>. Приклад 9-розрядної непрямої адресації зображено на малюнку
Пряма адресація непряма адресація
4.0 Універсальний синхронно-асинхронний приймач-передавач (USART)
USART – це модуль послідовного вх./вих., який може працювати в повнодуплекснему асинхронному режимі для звязку з терміналами, РС або синхронно півдуплексному режимі для звязку з мікросхемами ЦАП, АЦП, послідовними EEPROM і т. д.
USART може працювати втрьох режимах:
асинхронний, повний дуплекс;
ведучий синхронний, півдуплекс;
ведомый синхронний, півдуплекс.
Біти SPEN (RCSTA<7>) і TRISC<7:6> повинні бути встановлені в “1” для використання виводів RC6/TX/CK і RC7/RX/DT в якості портів універсального синхронно-асинхронного приймача-давача. Модуль USART підтримує режим детектування 9-розрядного адреса для роботи в мережевому режимі.
TXSTA (адрес 98h) Регістр керування і статуса передавача
R/W-0 R/W-0 R/W-0 R/W-0 U-0 R/W-0 R-1 R/W-0
CSRC
TX9
TXEN
SYNC
-
BRGH
TRMT
TX9T
Біт7 Біт 0
R – читання біта
W – запис біта
U – не реалізовано,читається як 0
-n – значення після POR
-x – невідоме значення після POR
біт7: CSRC: вибір джерела тактового сигналу
Синхронний режим Асинхронний режим
1= ведучий, внутрішній тактовий сигнал від BRG Не має значення
0= ведомый, зовнішній тактовий сигнал з вх. СК
біт6: TX9: дозвіл 9-розрядної передачи біт3: Не використовується:
1= 9-розрядна передача читається як “0”
0= 8-розрядна передача біт2: BRGH: вибір високо- біт5: TXEN: дозвіл передачи швидкісного режиму
1= дозволена Синхронний режим
0= заборонена Не має значення
біт4: SYNC: режим роботи USART Асинхронний режим
1= cинхронний 1= високошвидкісний
0= асинхронний режим
0= низькошвидкісний
режим
біт1: TRMT: прапорець очистки змінного регістра передавача TSR
1= TSR пустий
0= TSR повний
біт0: TX9D: 9-й біт передаваючих даних(може використовуватися для програмної перевірки парності)
RCSTA (адрес 18h) Регістр керування і статуса приймача
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R-0 R-0 R-x
SPEN
RX9
SREN
CREN
ADDEN
FERR
OERR
RX9D
Біт 7 біт 0
Біт 7: SPEN: дозвіл роботи послідовного порта
1= модуль USART включений(виводи RC7/TX/DT, RC6/RX/CK підключені до USART)
0= модуль USART виключений
біт 6: RX9: дозвіл 9-розрядного приймання
1= 9-розрядний приймач
0= 8-розрядний приймач
біт 5: SREN: дозвіл одиночного приймання
Синхрнний режим
1= дозволено одиночне приймання
0= заборонено одиночне приймання
Скидається в “0” по закінченню приймання.
Асинхронний режим
Не має значення
біт 4: CREN: дозвіл приймання
Синхрнний режим
1 = прийом дозволений (при установці біта CREN автоматично скидається біт SREN)
0 = прийом заборонений
Асинхронний режим
1 = прийом дозволений
0 = прийом заборонений
біт 3: ADDEN: Дозвіл детектування адреси
Асинхронний 9-розрядний прийом (RX9=1)
1 = детектування адреси дозволено. Якщо біт RSR<8>=1, то генерується переривання і завантажується прийомний буфер.
0 = детектування адреси заборонено. Приймаються всі байти, дев'ятий біт може використовуватися для перевірки парності.
Асинхронний 8-розрядний прийом (RX9=0)
Не має значення
Синхронний режим
Не має значення
біт 2: FERR: Помилка кадру, скидається при читанні регістра RCREG
1 = відбулася помилка кадру
0 = помилки кадру не було
біт 1: OERR: Помилка переповнення внутрішнього буфера, встановлюється в '0' при скиданні біта CREN
1 = відбулася помилка переповнення
0 = помилки переповнення не було
біт 0: RX9D: 9-й біт прийнятих даних (може використовуватися для програмної перевірки парності)
4.1 Генератор частоти обміну USART BRG
BRG використовується для роботи USART у синхронному ведучому й асинхронному режимах. BRG являє собою окремий 8-розрядний генератор швидкості обміну в бодах, період якого визначається значенням у регістрі SPBRG. В асинхронному режимі біт BRGH (TXSTA<2>) теж впливає на швидкість обміну (у синхронному режимі біт BRGH ігнорується). У таблиці зазначені формули для обчислення швидкості обміну в бодах при різних режимах роботи модуля USART (щодо внутрішнього тактового сигналу мікроконтролера).
З огляду на необхідну швидкість і FOSC, вибирається найближче ціле значення для запису в регістр SPBRG, розраховане по формулах приведеними у таблиці. Потім розраховується помилка швидкості обміну. У деяких випадках може бути вигідно використовувати високошвидкісний режим роботи USART (BRGH=1), оскільки рівняння FOSC / (16 (X + 1)) дозволяє зменшити погрішність швидкості. Запис нового значення в регістр SPBRG скидає таймер BRG, гарантуючи негайний перехід на нову швидкість.
Таблиця. Формули розрахунку швидкості обміну даними
SYNC
BRGH = 0
BRGH = 1
0
(Асинхронний) Швидкість обміну = FOSC / (64 (X + 1))
(Асинхронний) Швидкість обміну = FOSC / (16 (X + 1))
1
(Синхронний) Швидкість обміну = FOSC / (4 (X + 1))
(Синхронний) Швидкість обміну = FOSC / (4 (X + 1))
X = значення регістра SPBRG (від 0 до 255)
Таблиця. Регістри і біти, зв'язані з роботою генератора BRG
Адреса
Ім'я
Біт 7
Біт 6
Біт 5
Біт 4
Біт 3
Біт 2
Біт 1
Біт 0
Скидання
POR,BOR
Інші
скидання
98h
TXSTA
CSRC
TX9
TXEN
SYNC
-
BRGH
TRMT
TX9D
0000 -010
0000-010
18h
RCSTA
SPEN
RX9
SREN
CREN
ADDEN
FERR
OERR
RX9D
0000000x
0000000x
99h
SPBRG
Регістр генератора швидкості USART
00000000
00000000
Позначення: - = не використовується, читається як 0; u = не змінюється; x = не відомо; q = залежить від умов.
4.1.1 Вибірка
Сигнал із входу RС7/RX/DT опитується ланцюгом мажоритарного детектора три рази за такт передачі, щоб визначити, високого чи низького рівня сигнал присутній на вході. Якщо обраний низькошвидкісний режим (BRRH=0), те вибірка по сьомому, восьмому і дев'ятому задньому фронті тактового сигналу х16. Якщо BRGH = 1 (обраний високошвидкісний режим), вибірка робиться на другому такті сигналу x4 трьома запитами.
Таблиця. Швидкість обміну в асинхронному режимі (BRGH=0)
Швидкість
обміну(К)
Fosc = 20 МГц
Реальна
швидкість
Помилка
%
Значення
SPBRG
(десят.)
0,3
1,2
2,4
9,6
19,2
28,8
33,6
57,6
Мах.
Міn
-
1,221
2,404
9,766
19,531
31,250
34,722
62,500
312,5
1,221
-
1,75
0,17
1,73
1,72
8,51
3,34
8,51
-
-
-
255
129
31
15
9
8
4
0
255
Таблиця. Швидкість обміну в асинхронному режимі (BRGH=1)
Швидкість
обміну(К)
Fosc = 20 МГц
Реальна
швидкість
Помилка
%
Значення
SPBRG
(десят.)
0,3
1,2
2,4
9,6
19,2
28,8
33,6
57,6
Мах.
Міn.
-
-
-
9,615
19,231
29,070
33,784
59,524
1250
4,883
-
-
-
0,16
0,16
0,94
0,55
3,34
-
-
-
-
-
129
64
42
36
20
0
255
4.2 Асинхронний режим USART
У цьому режимі USART використовує стандартний формат NRZ: один стартовий біт, вісім чи дев'ять бітов даних і один стоповий біт. Найбільше часто зустрічається 8-розрядний формат передачі даних. Інтегрований 8-розрядний генератор BRG дозволяє одержати стандартні швидкості передачі даних. Генератор швидкості обміну може працювати в одному з двох режимів: високо (x16 BRGH=1 TXSTA<2>), низькошвидкісний (x64 BRGH=0 TXSTA<2>).Приймач і передавач послідовного порту працюють незалежно друг від друга, але використовують той
самий формат даних і однакову швидкість обміну. Біт парності апаратно не підтримується, але може бути реалізований програмно, застосовуючи 9-розрядний формат даних. Усі дані передаються молодшим бітом уперед. У SLEEP режимі мікроконтролера модуль USART(асинхронний режим) виключений. Вибір асинхронного режиму USART виконується скиданням біта SYNC у '0' (TXSTA<4>).
Модуль USART в асинхронному режимі складається з наступних елементів:
генератор швидкості обміну;
- ланцюг опитування;
- асинхронний передавач;
- асинхронний приймач.
.
4.2.1 Асинхронний передавач USART
Структурна схема асинхронного передавача USART зображена на малюнку.Головним у передавачі є зсуваючий регістр TSR, що одержує дані з буфера передавача TXREG. Дані в регістр TXREG завантажуються програмно. Після передачі стопового біта попереднього байта, в останньому машинному такті циклу BRG, TSR завантажується новим значенням з TXREG (якщо воно присутнє), після чого встановлюється прапорець переривання TXІ (PІR1<4>). Переривання може бути дозволено чи заборонено бітом TXІ (PІ1<4>). Прапорець TXІ встановлюється незалежно від стану біта TXІ і не може бути скинутий у '0' програмно. Очищення прапорця TXІ відбувається тільки після завантаження нових даних у регістр TXREG. Аналогічним образом біт TRMT (TXSTA<1>) відображає стан регістра TSR. Біт TRMT доступний тільки на читання і не може викликати генерацію переривання.
Примітки:
1. Регістр TSR не відображається на пам'ять і не доступний для читання.
2. Прапорець TXІ встановлюється в '1' тільки, коли біт TXEN=1 і скидається автоматично в '0' після завантаження нових даних у регістр TXREG.
Для дозволу передачі необхідно установити біт TXEN (TXSTA<5>) у '1'. Передача даних не почнеться доти, поки в TXREG не будуть завантажені нові дані; не прийде черговий тактовий імпульс від генератора BRG. Можна спочатку завантажити дані в TXREG, а потім встановити біт TXEN. Як правило, після дозволу передачі регістр TSR порожній, таким чином, дані записувані в TXREG відразу передаються в TSR, а TXREG залишається порожнім. Це дозволяє реалізувати злиту передачу даних (див. малюнок ). Скидання біта TXEN у '0' викликає негайне припинення передачі, скидання передавача і переклад висновку RC6/TX/CK у третій стан.
Для дозволу 9-розрядної передачі необхідно установити біт TX9 (TXSTA<6>) у '1'. Дев'ятий біт даних записується в біт TX9D (TXSTA<0>). Дев'ятий біт даних повинен бути вказаний до запису в регістр TXREG, тому що дані, записані в регістр TXREG, можуть бути відразу завантажені в зсувний регістр TSR (якщо він порожній).
Мал. Структурна схема асинхронного передавача USART
Рекомендована послідовність дій для передачі даних в асинхронному режимі:
1. Установити необхідну швидкість передачі за допомогою регістра SPBRG і біта BRGH.
2. Вибрати асинхронний режим скиданням біта SYNC у '0' і установкою біта SPEN у '1'.
3. Якщо необхідно, дозволити переривання установкою біта TXІ у '1'.
4. Якщо передача 9-розрядна, установити біт TX9 у '1'.
5. Дозволити передачу установкою біта TXEN у '1', автоматично встановлюється прапорець TXІ.
6. Якщо передача 9-розрядна, записати 9-й біт даних у TX9D.
7. Записати дані в регістр TXREG.
8. Якщо використовуються переривання, то біти GІE і PEІ у регістрі ІNTCON повинні бути встановлені в '1'.
Мал. Тимчасова діаграма асинхронної передачі даних
Мал. Тимчасова діаграма злитої асинхронної передачі (послідовна передача двох байт)
Таблиця. Регістри і біти, зв'язані з роботою передавача USART в асинхронному режимі
Позначення: - = не використовується, читається як 0; u = не змінюється; x = не відомо; q = залежить від умов.
4.2.2 Асинхронний приймач USART
Структурна схема асинхронного приймача USART зображена на малюнку. Дані подаються на вхід RC7/RX/DT у блок відновлення даних, що представляє собою швидкісний зсувний регістр, що працює на частоті в 16 разів перевищуючої швидкість передачі чи Fosc. Включення приймача відбувається установкою біта CREN регістра RCSTA у '1'.
Головним у приймачі є зсувний регістр RSR. Після одержання стопового біта дані переписуються в регістр RCREG, якщо він порожній. Після запису в регістр RCREG виставляється прапорець переривання RCІF(PІR1<5>). Переривання можна дозволити/заборонити установкою/скиданням біта RCІE (PІE1<5>). Прапорець RCІ доступний
тільки на читання, скидається апаратно при читанні з регістра RCREG. Регістр RCREG має подвійну буферизацию, тобто являє собою дворівневий буфер FІFO. Тому можна прийняти 2 байти даних у FІFO RCREG і третій у регістр RSR. Якщо FІFO заповнений і виявлений стоповий біт третього байта, встановлюється біт переповнення приймача OERR (RCSTA<1>). Байт, прийнятий у RSR, буде загублений. Для вилучення двох байт із FІFO необхідно двічі прочитати регістр RCREG. Біт OERR потрібно програмно очистити скиданням біта CREN, тобто забороною прийому. У будь-якому випадку, якщо біт OERR встановлений, логіка приймача виключена.
Біт помилки кадру FERR (RCSTA<2>) встановлюється в '1', якщо не виявлений стоповий біт. FERR і дев'ятий біт прийнятих даних буферизуются так само, як прийняті дані. Рекомендується спочатку прочитати регістр RCSTA, потім RCREG, щоб не втратити інформацію RX9D і FERR.
Мал. Структурна схема асинхронного приймача USART
Мал.Тимчасова діаграма прийому даних
Примітка до малюнка. На тимчасовій діаграмі зображений послідовний прийом трьох байт. Регістр RCREG(прийомний буфер) читається після прийому трьох байт, тому встановлюється біт OERR у '1'.
Рекомендовані дії при прийомі даних в асинхронному режимі:
Встановити необхідну швидкість передачі за допомогою регістра SPBRG і біта BRGH
Вибрати асинхронний режим скиданням біта SYNC у '0' і установкою біта SPEN у '1'.
Якщо необхідно, дозволити переривання установкою біта RCІE у “1”.
Якщо прийом 9-розрядний, установити біт RX9 у '1'.
Дозволити прийом установкою біта CREN у '1'.
Очікувати установку біта RCІF,чи переривання, якщо воно дозволено битому RCІE.
Вважати 9-й біт даних (якщо дозволений 9-розрядний прийом) з регістра RCSTA і перевіритивиникнення помилки.
Вважати 8 біт даних з регістра RCREG.
При виникненні помилки переповнення скинути біт CREN у '0'.
Якщо використовуються переривання, то біти GІE і PEІE у регістрі ІNTCON повинні бути встановлені в '1'.
Таблиця. Регістри і біти, зв'язані з роботою приймача USART в асинхронному режимі
Позначення: - = не використовується, читається як 0; u = не змінюється; x = не відомо; q = залежить від умов.
5.0 Модуль 10-розрядного АЦП
Модуль аналого-цифрового перетворення (АЦП) має п'ять каналів у 28-вивідних мікросхем і вісім каналів у 40/44-вивідних мікросхем.
Вхідний аналоговий сигнал через комутатор каналів заряджає внутрішній конденсатор АЦП CHOLD. Модуль АЦП перетворить напругу, утримувана на конденсаторі CHOLD, у відповідний 10-розрядний цифровий код методом послідовного наближення. Джерело верхньої і нижньої опорної напруги може бути програмно обраний з висновків VDD, VSS, RA2 чи RA3.
Допускається робота модуля АЦП у SLEEP режимі мікроконтролера, при цьому як джерело тактових імпульсів для АЦП повинен бути вибраний RC генератор.
Для керування АЦП у мікроконтролері використовується 4 регістри:
- Регістр результату ADRESH (старший байт);
- Регістр результату ADRESL (молодший байт);
- Регістр керування ADCON0;
- Регістр керування ADCON1.
Регістр ADCON0 використовується для настроювання роботи модуля АЦП, а за допомогою регістра ADCON1 встановлюються які входи мікроконтролера будуть використовуватися модулем АЦП і в якому режимі (аналоговий вхід чи цифровий порт вводу/виводу).
ADCON0 (адреса 1Fh)
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 U-0 R/W-0
ADCS1
ADCS0
CHS2
CHS1
CHS0
GO/-DONE
-
ADON
Біт 7 Біт 0
R - читання біта
W - запис біта
U - не реалізовано, читається як 0
-n - значення після POR
-x – невідоме значення після POR
біти 7-6: ADCS1:ADCS0: Вибір джерела тактового сигналу
00 = FOSC/2
01 = FOSC/8
10 = FOSC/32
11 = FRC (внутрішній RC генератор модуля АЦП)
біти 5-3: CHS2:CHS0: Вибір аналогового каналу
000 = канал 0, (RA0/AN0)
001 = канал 1, (RA1/AN1)
010 = канал 2, (RA2/AN2)
011 = канал 3, (RA3/AN3)
100 = канал 4, (RA5/AN4)
101 = канал 5, (RE0/AN5)(1)
110 = канал 6, (RE1/AN6)(1)
111 = канал 7, (RE2/AN7)(1)
біт 2: GO/-DONE: Біт статусу модуля АЦП
Якщо ADON=1
1 = модуль АЦП виконує перетворення (установка біта викликає початок перетворення)
0 = стан чекання (апаратно скидається по завершенню перетворення)
біт 1: Не використовується: читається як '0'
біт 0: ADON: Біт включення модуля АЦП
1 = модуль АЦП включений
0 = модуль АЦП виключений і не споживає струму
ADCON1 (адреса 9Fh)
R/W-0 U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0
ADFM
-
-
-
PCFG3
PCFG2
PCFG1
PCFG0
Біт 7 Біт 0
R - читання біта
W - запис біта
U - не реалізовано, читається як 0
-n - значення після POR
-x – невідоме значення після POR
біт 7: ADFM: Формат збереження 10-розрядного результату
1 = праве вирівнювання, 6 старших біт ADRESH читаються як '0'
0 = ліве вирівнювання, 6 молодших біт ADRESL читаються як '0'
біти 6-4: Не використовуються: читаються як '0'
біти 3-0: PCFG3:PCFG0: Керуючі біти настроювання каналів АЦП
A = аналоговий вхід D = цифровий канал вводу/виводу
Примітки:
1. Ці канали не реалізовані в мікроконтролерах PІ16F873/ PІ16F876.
2. У цьому стовпці вказується число аналогових каналів, доступних для виконання перетворення, і число входів джерела опорної напруги.
В регістрі ADRESH:ADRESL зберігається 10-розрядний результат аналого-цифрового перетворення. Коли перетворення завершене, результат перетворення записується в регістр ADRESH:ADRESL, після чого скидається прапорець GO/-DONE (ADCON0<2>) і встановлюється прапорець переривання ADІF. Структурна схема модуля АЦП Зображена на малюнку.
Після включення і конфігурації АЦП вибирається робочий аналоговий канал. Відповідні біти TRІS аналогових каналів повинні настроїти порт вводу/виводу на вхід. Перед початком перетворення необхідно витримати тимчасову паузу, розрахунок якого приведений у розділі 4.1.
Рекомендована послідовність дій для роботи з АЦП:
1. Настроїти модуль АЦП:
- Настроїти висновки як аналогові входи, входи VREF чи цифрові канали
вводу/виводу (ADCON1);
- Вибрати вхідний канал АЦП (ADCON0);
- Вибрати джерело тактових імпульсів для АЦП (ADCON0);
- Включити модуль АЦП (ADCON0).
2. Настроїти переривання від модуля АЦП (якщо необхідно):
- Скинути біт ADІF у '0';
- Встановити біт ADІE у '1';
- Встановити біт PEІE у '1';
- Встановити біт GІE у '1'.
3. Витримати паузу, необхідну для зарядки конденсатора CHOLD.
4. Почати аналого-цифрове перетворення:
- Встановити біт GO/-DONE у '1' (ADCON0).
5. Очікувати закінчення перетворення:
- Очікувати поки біт GO/-DONE не буде скинутий у '0'; ЧИ
- Очікувати переривання по закінченню перетворення.
6. Вважати результат перетворення з регістрів ADRESH:ADRESL, скинути біт
ADІ у '0', якщо це необхідно.
7. Для наступного перетворення необхідно виконати кроки починаючи з пункту
1 чи 2. Час перетворення одного біта визначається як час TAD. Мінімальний
час чекання перед наступним перетворенням повинне складати не менш
2TAD.
Мал. Структурна схема модуля АЦП
5.1 Тимчасові вимоги до підключення каналу АЦП
Для забезпечення необхідної точності перетворення, конденсатор CHOLD повинен встигати повністю заряджатися до рівня вхідної напруги. Схема аналогового входу АЦП зображено на малюнку. Опору RS і RSS безпосередньо впливають на час зарядки конденсатора CHOLD. Величина опору ключа вибірки (RSS) залежить від напруги живлення VDD (див. малюнок ). Максимальне значення внутрішнього опору, що рекомендується, джерела аналогового сигналу 10кОм. При менших значеннях опору джерела сигналу - менший сумарний час перетворення.
Після того, як буде вибраний один з декількох аналогових вхідних каналів, але перш ніж буде відбуватися перетворення, повинно пройти визначений час. Для перебування даного часу скористаємось рівнянням. Це рівняння дає результат з помилкою в1/2 LSb (2048 кроків АЦП). Помилка в ½ LSb, це максимальна погрішність, що дозволяє функціонувати модулю АЦП із необхідною точністю.
Рівняння. Обчислення тимчасової затримки
TACQ = Час затримки підсилювача + Час заряду конденсатора CHOLD + Температурний коефіцієнт
= TAMP + TC + TCOFF
= 2мкс + TC + [(Температура - 25°C)(0.05мкс/°C)]
TC = - CHOLD (RІC + RSS + RS) Ln(1/2047)
= - 120пф (1кОм + 7кОм + 10кОм) Ln(0.0004885)
= 16.47мкс
TACQ = 2мкс + 16.47мкс + [(50°C - 25°C)(0.05мкс/°C)]
= 19.72мкс
Примітки:
1. Напруга джерела опорної напруги VREF не впливає на рівняння.
2. Конденсатор CHOLD після перетворення не розряджається.
3.Максимальне значення внутрішнього опору, що рекомендується, джерела
аналогового сигналу 10кОм. Це необхідно для компенсації внутрішнього
струму витоку.
4. Після того, як перетворення завершене, необхідно програмно забезпечити
затримку не менш 2.0TAD, перш ніж почнеться наступне перетворення.
Протягом цього часу конденсатор CHOLD не підключений до вибраного вхідного
каналу АЦП.
Мал. Схема аналогового входу АЦП
Позначення:
CPІN - вхідна ємність;
VT - гранична напруга;
ІLEAKAGE - струм витоку висновку;
RІC - опір з'єднання;
SS - перемикач засуву;
CHOLD - конденсатор засуву.
5.2 Вибір джерела тактових імпульсів для АЦП
Час одержання одного біта результату визначається параметром TAD. Для 10-розрядного результату потрібно як мінімум 12TAD. Параметри тактового сигналу для АЦП визначаються програмно, TAD може приймати наступні значення:
- 2TOSC;
- 8TOSC;
- 32TOSC;
- Внутрішній RC генератор модуля АЦП (2-6мкс).
Для одержання коректного результату перетворення необхідно вибрати джерело тактового сигналу АЦП, що забезпечує час TAD не менш 1.6 мкс.
В таблиці зазначене максимальне значення тактової частоти мікроконтролера для кожного режиму синхронізуючого сигналу АЦП.
Таблиця. Максимальне значення FOSC задовольняючі вимозі до TAD (для мікроконтролерів з нормальним діапазоном напруги харчування (F))
Вибір TAD
FOSC
Режим
ADCS1:ADCS0
Максимум
2TOSC
00
1.25МГц
8TOSC
01
5МГц
32TOSC
10
20МГц
RC(1,2,3)
11
Примітка 1
Примітки:
Типове значення часу TAD RC генератора АЦП дорівнює 4мкс, може
варіюватися від 2мкс до 6мкс.
Коли тактова частота мікроконтролера більше 1МГц, рекомендується
використовувати RC генератор АЦП тільки для роботи в SLEEP режимі.
3. Для мікроконтролерів з розширеним діапазоном напруг живлення (LF) дані
параметри дивимось в розділі електричних характеристик.
5.3 Настроювання аналогових входів
Регістри ADCON1, TRІSA і TRІSE відповідають за настроювання виводів АЦП. Якщо виводи мікросхеми настроюються як аналогові входи, то при цьому повинні бути встановлені відповідні біти в регістрі TRІS. Якщо відповідний біт скинутий у '0', вивід мікросхеми настроєний як цифровий вихід зі значеннями вихідних напруг VOH чи VOL.
Модуль АЦП функціонує незалежно від стану бітів CHS2:CHS0 і бітів TRІS.
Примітки:
1. При читанні вмісту регістра порту нулі будуть встановлені в тих розрядах, що були
настроєні як аналогові входи. Настроєні на цифровий вхід канали будуть
перетворювати вхідні аналогові рівні в цифрові, що однак не зробить впливу на
точність перетворення.
2. Значення напруг, поданих на виводи, настроєні як аналогові входи, включаючи
виводи (AN7:AN0), можуть впливати на струм споживання вхідного буфера, що
може вийти за межі значень, обговорених у технічній специфікації.
5.4 Аналого-цифрове перетворення
Скидання біта GO/-DONE у '0' під час перетворення приведе до його припинення. При цьому регістри результату (ADRESH:ADRESL) не змінять свого вмісту. Після дострокового завершення перетворення необхідно забезпечити тимчасову затримку 2TAD. Витримавши необхідну паузу, можна почати нове перетворення установкою біта GO/-DONE в '1'.
На малюнку зображено послідовність одержання результату після установки біта GO/-DONE в '1'.
Примітка. Біт GO/-DONE і біт включення АЦП повинні встановлюватися різними командами.
Мал. Послідовність одержання результату після установки біта GO/-DONE в '1'
5.4.1 Вирівнювання результату перетворення
10-розрядний результат перетворення зберігається в спареному 16-розрядному регістрі ADRESH:ADRESL. Запис результату перетворення може виконуватися з правим чи лівим вирівнюванням, у залежності від значення біта ADFM (див. малюнок ). Не задіяні біти регістра ADRESH:ADRESL читаються як '0'. Якщо модуль АЦП виключений, то 8-розрядні регістри ADRESH і ADRESL можуть використовуватися як регістри загального призначення.
Мал. Вирівнювання результату аналого-цифрового перетворення
10-розрядний результат 10-розрядний результат
Праве вирівнювання Ліве вирівнювання
5.5 Ефект скидання
При скиданні мікроконтролера значення всіх його регістрів встановлюються по замовчуванню. Скидання виключає модуль АЦП, а також зупиняє процес перетворення, якщо він був початий. Усі висновки, використовувані модулем АЦП, настроюються як аналогові входи.
Регістри ADRESH, ADRESL після скидання POR будуть містити невідоме значення, а після інших видів скидання не змінять свого значення.
Таблиця. Регістри і біти, зв'язані з роботою модуля АЦП
Позначення: - = не використовується, читається як 0; u = не змінюється; x = не відомо; q = залежить від умов.
6.0 Особливості мікроконтролерів PІC16F87X
В даний час, пристрої працюючи в режимі реального часу часто містять мікроконтролер як основний елемент схеми. PІ16F87X мають багато удосконалень, які підвищуютьі надійність системи, що знижує вартість пристрою і число зовнішніх компонентів. Мікроконтролери PІ16F87X мають режими енергозбереження і можливість захисту коду програми.
Основні достоїнства:
1.Вибір тактового генератора
2.Скидання:
- скидання по включенню живлення (POR);
- таймер включення живлення (PWRT);
- таймер запуску генератора (OSC);
- скидання по зниженню напруги живлення (BOR).
3.Переривання
4.Сторожовий таймер (WDT)
5.Режим енергозбереження (SLEEP)
6.Захист коду програми
7.Область пам'яті для ідентифікатора
7.Внутрісхемне програмування по послідовному порту (ІCSP)
8.Режим низьковольтного послідовного програмування
9.Режим внутрісхемного налагодження (ІCD)
В мікроконтролерах PІ16F87X вбудований сторожовий таймер WDT, що може бути виключений тільки в бітах конфігурації мікроконтролера. Для підвищення надійності сторожовий таймер WDT має власний RC генератор.
Додаткових два таймери виконують затримку старту роботи мікроконтролера. Перший, таймер запуску генератора (OST), утримує мікроконтролер в стані скидання, поки не стабілізується частота тактового генератора. Другий, таймер включення живлення (PWRT), спрацьовує після включення живлення й утримує мікроконтролер у стані скидання протягом 72мс (типове значення), поки не стабілізується напруга живлення. У більшості додатків ці функції мікроконтролера дозволяють виключити зовнішні схеми скидання.
Режим SLEEP призначений для забезпечення наднизького енергоспоживання. Мікроконтролер може вийти з режиму SLEEP по сигналу зовнішнього скидання, по переповненню сторожового таймера чи при виникненні переривань.
Вибір режиму роботи тактового генератора дозволяє використовувати мікроконтролери в різних додатках. Режим тактового генератора RC дозволяє зменшити вартість пристрою, а режим LP знизити енергоспоживання. Біти конфігурації мікроконтролера використовуються для вказівки режиму його роботи.
6.1 Біти конфігурації
Біти конфігурації розташовані в пам'яті програм за адресою 2007h, вони можуть бути запрограмовані в '0' чи залишеними в '1'. Помітимо, що адреса 2007h розташована за межами користувальницької пам'яті програм. Фактично, до конфігураційного регістра (область пам'яті 2000h - 3FFFh) можна звернутися тільки в режимі програмування мікроконтролера.
Слово конфігурації (адреса 2007h)
CP1
CP0
DEBUG
-
WRT
CPD
LVP