Главная Обратная связь

Дисциплины:






Короткі теоретичні відомості. USART – це один з модулів послідовного порту введення/виведення, що може працювати в повнодуплексному асинхронному режимі для зв'язку з терміналами



USART – це один з модулів послідовного порту введення/виведення, що може працювати в повнодуплексному асинхронному режимі для зв'язку з терміналами, персональними комп'ютерами або в синхронному напівдуплексному режимі для зв'язку з мікросхемами ЦАП, АЦП, послідовними EEPROM і т. д.

USART може працювати в одному із трьох режимів:

− асинхронний, повний дуплекс;

− ведучий синхронний, півдуплекс;

− ведений синхронний, півдуплекс.

Біти SPEN (RCSTA<7>) і TRІS повинні бути встановлені в '1' для використання ліній ТХ/СК і RX/DT як порту універсального синхронно-асинхронного приймача-передавача. Модуль USART підтримує режим детектування 9-розрядної адреси для роботи в мережному режимі.

Службові регістри

Службовий регістр передавача TXSTA:

біт 7: CSRC: Вибір джерела тактового сигналу

Синхронний режим:

1 = ведучий, внутрішній тактовий сигнал від BRG

0 = ведений, внутрішній тактовий сигнал від СК

Асинхронний режим:

Не має значення

біт 6: TX9: Дозвіл 9-розрядної передачі

1 = 9-розрядна передача

0 = 8-розрядна передача

біт 5: TXEN: Дозвіл передачі

1 = дозволено

0 = заборонено

Примітка: В синхронному режимі біти SREN/CREN відміняють дії TXEN

біти 4 : SYNC: Режим роботи USART

1 = синхронний

0 = асинхронний

біт 3 : Не використовується, читається як '0'.

біт 2 : BRGH: Вибір високошвидкісного режиму

Синхронний режим:

Не має значення

Асинхронний режим:

1 = високошвидкісний режим

0 = низькошвидкісний режим

біт 1 : TRMT: Прапорець очищення регістра зсуву передавача TSR

1 = TSR порожній

0 = TSR повний

біт 0 : TX9D: 9-й біт переданих даних.

Службовий регістр приймача RCSTA:

біт 7: SPEN: Дозвіл роботи послідовного порта

1 = модуль USART увімкнений

0 = ведений, внутрішній тактовий сигнал від СК

біт 6: TX9: Дозвіл 9-розрядної передачі

1 = 9-розрядний прийом

0 = 8- розрядний прийом

біт 5: SREN: Дозвіл одиночного прийому

Синхронний режим:

1 = дозволений одиночний прийом

0 = заборонений одиночний прийом

Скидається в '0' при закінченні прийому

Примітка: У режимі відомого не має значення

Асинхронний режим:

Не має значення

біти 4 : CREN: Дозвіл прийому

Синхронний режим:

1 = прийом дозволено

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-й біт прийнятих даних

Генератор частоти обміну USART BRG

BRG використовується для роботи USART у синхронних провідних і асинхронному режимах. BRG являє собою окремий 8-розрядний генератор швидкості обміну в бодах, період якого визначається значенням у регістрі SPBRG. В асинхронному режимі біт BRGH (TXSTA<2>) теж впливає на швидкість обміну (у синхронному режимі біт BRGH ігнорується). У табл. 3.1 зазначено формули для обчислення швидкості обміну в бодах при різних режимах роботи модуля USART (щодо внутрішнього тактового сигналу мікроконтролера).

З огляду на необхідну швидкість і Fosc, вибирається найближче ціле значення для запису в регістр SPBRG (від 0 до 255), розраховане за формулами наведеними у табл. 2.1. Потім розраховується помилка швидкості обміну.

Таблиця 2.1 – Формули розрахунку швидкості обміну даними

SYNC BRGH=0 BRGH=1
Швидкість обміну = Fosc/(64(X+1)) Швидкість обміну = Fosc/(16(X+1))

 

X = значення регістра SPBRG (від 0 до 255)

Розрахунок значення для регістра SPBRG і похибки швидкості обміну:

.

.

.

.

Розрахунок значення для регістра SPBRG і похибка швидкості обміну:

Бажане значення швидкості = ,

,

.

Розраховане значення швидкості = .

У більшості випадках може бути вигідно використовувати високошвидкісний режим роботи USART (BRGH=1), оскільки рівняння дозволяє зменшити похибку швидкості.

Запис нового значення до регістра SPBRG скидає таймер BRG, гарантуючи негайний перехід на нову швидкість.

Таблиця 2.2 – Швидкість обміну в асинхронному повільному режимі (Fosc = 20 МГц, BRGH = 0)

Швидкість обміну (К) Реальна швидкість Похибка Значення SPBRG
0,3 -   -
1,2 1,221 1,73
2,4 2,404 0,16
9,6 9,469 -1,36
19,2 19,53 1,73
76,8 78,13 1,73
104,2 8,51
312,5 4,17
- - -
Максимум 312,5 -
Мінімум 1,221 -

 

Таблиця 2.3 – Швидкість обміну в асинхронному швидкісному режимі (Fosc = 20 МГц, BRGH = 1)

Швидкість обміну (К) Реальна швидкість Похибка Значення SPBRG
0,3 - - -
1,2 - - -
2,4 - - -
9,6 9,615 0,16
19,2 19,231 0,16
28,8 29.070 0,94
33,6 33,784 0,55
57,6 59,524 3,34
Максимум -
Мінімум 4,883 -

Асинхронний режим USART

У цьому режимі USART використовує стандартний формат NRZ: один стартовий біт, вісім або дев'ять біт даних і один стоповий біт. Найбільш часто зустрічається 8-розрядний формат передачі даних. Інтегрований
8-розрядний генератор BRG дозволяє одержати стандартні швидкості передачі даних. Генератор швидкості обміну може працює в одному із двох режимів: високошвидкісний (х16 BRGH=1 TXSTA<2>) та низько швидкісний (х64 BRGH=O TXSTA<2>). Приймач і передавач послідовного порта працюють незалежно, але використовують той самий формат даних і однакову швидкість обміну. Біт парності апаратно не підтримується, але може бути реалізований програмно, застосовуючи 9-розрядний формат даних. Усі дані передаються молодшим бітом уперед.

Вибір асинхронного режиму USART виконується скиданням біта SYNC в '0' (TXSTA<4>).

Модуль USART в асинхронному режимі складається з наступних елементів:

− генератор швидкості обміну;

− ланцюг опитування;

− асинхронний передавач;

− асинхронний приймач.

Асинхронний передавач USART

Головним у передавачі є регістр зсуву TSR, що одержує дані з буфера передавача TXREG. Дані до регістра TXREG завантажуються програмно. Після передачі стопового біта попереднього байта в останньому машинному такті циклу BRG, TSR завантажується новим значенням з TXREG (якщо воно наявне), після чого встановлюється прапорець переривання TXІF. Переривання може бути дозволено або заборонено за допомогою біта TXІE. Прапорець TXІF установлюється незалежно від стану біта TXІE і не може бути скинутий у '0' програмно. Очищення прапорця TXІF відбуваються тільки після завантаження нових даних до регістра TXREG. Аналогічним способом біт TRMT (TXSTA<1>) відображає стан регістра TSR. Біт TRMT доступний тільки на читання й не може викликати генерацію переривання.

Рисунок 2.1 – Структурна схема асинхронного передавача USART

Примітка 1. Регістр TSR не відображається на пам'ять і не доступний для читання.

Примітка 2. Прапорець TXІF установлюється в '1' тільки, коли біт TXEN=1 і скидається автоматично в '0' після завантаження нових даних до регістра TXREG.

Для дозволу передачі необхідно встановити біт TXEN (TXSTA<5>) в '1'. Передача даних не почнеться доти , поки в TXREG не будуть завантажені нові дані; не прийде черговий тактовий імпульс від генератора BRG. Можна спочатку завантажити дані в TXREG, а потім установити біт TXEN. Як правило, після дозволу передачі регістр TSR порожній, таким чином, дані записувані в TXREG відразу передаються в TSR, a TXREG залишається порожнім. Це дозволяє реалізувати неперервну передачу даних. Скидання біта TXEN у '0' викличе негайне припинення передачі, скидання передавача й переклад лінії ТХ/СК у третій стан.

Для дозволу 9-розрядної передачі необхідно встановити біт ТХ9 (TXSTA<6>) в '1'. Дев'ятий біт даних записується в біт TX9D (TXSTA<0>). Дев'ятий біт даних повинен бути зазначений до запису в регістр TXREG, тому що дані, записані до регістра TXREG, можуть бути відразу завантажені в регістр зсуву TSR (якщо він порожній).

Рекомендована послідовність дій для передачі даних в асинхронному режимі:

1. Установити необхідну швидкість передачі за допомогою регістра SPBRG і біта BRGH.

2. Вибрати асинхронний режим скиданням біта SYNC в '0' і установкою біта SPEN в '1'.

3. Якщо необхідно, дозволити переривання установкою біт TXІЕ, PEІЕ, GІЕ в '1'.

4. Якщо передача 9-розрядна, установити біт ТХ9 в '1'.

5. Дозволити передачу установкою біта TXEN в '1', автоматично встановлюється прапорець TXІF.

6. Якщо передача 9-розрядна, записати 9-й біт даних у TX9D.

7. Записати дані до регістра TXREG (початок передачі даних).

Асинхронний приймач USART

Дані подаються на вхід RX/DT у блок відновлення даних, що представляє собою швидкісний регістр зсуву, що працює на частоті яка в 16 разів перевищує швидкість передачі або Fosc.

Увімкнення приймача здійснюється установкою біта CREN (RCSTA<4>) в '1'.

Головним у приймачі є регістр зсуву RSR. Після одержання стопового біта дані передаються до регістра RCREG, якщо він порожній. Після запису до регістра RCREG виставляється прапорець переривання RCІ. Переривання можна дозволити/заборонити установкою/скиданням біта RCІ. Прапорець 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.

 

Рисунок 2.2 – Структурна схема асинхронного приймача USART

Рекомендовані дії при прийомі даних в асинхронному режимі:

1. Установити необхідну швидкість передачі за допомогою регістра SPBRG і біту BRGH.

2. Вибрати асинхронний режим скиданням біта SYNC в '0' і установкою біта SPEN в '1'.

3. Якщо необхідно, дозволити переривання установкою біта RCIE в '1'.

4. Якщо прийом 9-розрядний, установити біт RX9 в '1'.

5. Дозволити прийом установкою біта CREN в '1'.

6. Дочекатися установки біта RCIF, або переривання, якщо воно дозволено бітом RCIE.

7. Зчитати 9-й біт даних (якщо дозволено 9-розрядний прийом) з регістра RCSTA і перевірити появу похибки.

8. Зчитати 8 біт даних з регістра RCREG.

9. При появі похибки переповнення скинути біт CREN у '0'.

10. Якщо використовується переривання, то біти GIE і PEIE в регістрі INTCON повинні бути встановлені в '1'.

Завдання до теми

Розрахувати значення для регістра SPBRG і похибки швидкості інформаційного обміну у швидкісному та повільному режимах. Порівняти похибки отриманих результатів. Варіанти вихідних даних наведено в табл. 2.4.

Таблиця 2.4 – Дані для розрахунку значення для регістра SPBRG і похибки швидкості інформаційного обміну у швидкісному та повільному режимах

№ пор. Розрахункова швидкість, Бод F osc, МГц   № пор. Розрахункова швидкість, Бод F osc, МГц
5 600   50 000
12 600   5 600
14 400   12 600
20 000   14 400
25 000   20 000
30 000   25 000
40 000   30 000
50 000   40 000
5 600   50 000
12 600   5 600
14 400   12 600
20 000   14 400
25 000   20 000
30 000   25 000
40 000   30 000

Контрольні питання

1. Укажіть способи адресації пам’яті даних РІС контролерів 16серії.

2. Укажіть особливості та наведіть приклади застосування прямої адресації.

3. Укажіть призначення та принцип установлення допоміжного прапорця АЛП “C”.

4. Укажіть призначення та принцип установлення допоміжного прапору АЛП ” Z”.

5. Поясніть на власному прикладі, як установляться прапорці АЛП при операції додавання двох байт.

6. Поясніть на власному прикладі, як установляться прапорці АЛП при операції віднімання двох байт.

Література: [4, с. 92–106].





sdamzavas.net - 2019 год. Все права принадлежат их авторам! В случае нарушение авторского права, обращайтесь по форме обратной связи...