Professional Documents
Culture Documents
МИКРОКОНТОРЛЕР
Аудиториски вежби 10
EUSART
Хардвер со кој се овозможува влезно/излезна
сериска комуникација
CTS – clear to send
RTS – request to send
RX , TX – read , transmit – сигнални линии за читање и
праќање
EUSART
Превод: Enhanced Universal Synchronous
/Asynchronous Receiver /Transmitter
Синхрон половичен дуплекс (Half-duplex)
Часовник за синхронизација
Комуникацијата е двонасочна, а наизменично се примаат и праќаат податоци
Асинхрон потполн дуплекс (full-duplex)
Нема часовник за синхронизација, се користат почетен и стоп бит за ознака на
податокот кој се праќа
Комуникацијата е двонасочна, а и двата уреди можат да праќаат и примаат во
исто време
Битови
Почетен бит
Програмибилни 8 или 9 бита
Стоп бит
EUSART
TXSTA Register (1/4)
CSRC - Clock Source Select bit – Го определува изворот
на часовникот, само во синхрон мод.
1 - Master mode. Baud Rate Generator
0 - Slave mode. Надворешен извор.
TX9 - 9-bit Transmit Enable bit
1 - 9-bit data transmission via EUSART system.
0 - 8-bit data transmission via EUSART system.
TX9D – 9th бит од пренесениот податок.
TXSTA Register (2/4)
TXEN - Transmit Enable bit - го одредува изборот на
приемот, во синхрон мод
1 – Овозможена е трансмисија
0 – Оневозможена е трансмисија
SYNC - EUSART – избор на мод на работа
1 - EUSART работи во синхрон мод.
0 - EUSART работи во асинхрон мод.
TXSTA Register (3/4)
SENDB - Send Break Character bit , се користи во
асинхрон мод.
1 – пренос на битот Break е овозможен
0 – пренос на битот Break е завршен
BRGH - High Baud Rate Select bit – ја одредува
брзината на тактот во асинхрон мод
1 - EUSART работи со голема брзина.
0 - EUSART работи со мала брзина.
TXSTA Register (4/4)
TRMT - Transmit Shift Register Status bit
1 - TSR регистерот е празен
0 - TSR регистерот е полн
RCSTA Register (1/3)
SPEN - Serial Port Enable bit
1 – Serial port enabled. Пиновите RX/DT и TX/CK автоматски се
конфигуриран на влез и излез, соодветно
0 – Serial port disabled
RX9 - 9-bit Receive Enable bit
1 – Прием на 9-битни податоци преку EUSART.
0 – Прием на 8-бирни податоци преку EUSART.
RX9D – 9th bit од примениот податок.
RCSTA Register (2/3)
SREN - Single ReceiveEnable bit , во синхрон мод.
1 – Овозможен е единичен прием
0 – Оневозможен е единичен прием
CREN - Continuous Receive Enable bit
Во асинхрон мод
1 – прием на 9-битен податок преку EUSART.
0 – прием на 8-битен податок преку EUSART.
Во синхрон мод
1 – Овозможува континуиран прием додека не се исчисти битот CREN.
0 – Оневозможува континуиран прием.
RCSTA Register (3/3)
ADDEN - Address Detect Enable bit
1 – Овозможува детекција на адресата кај 9-битен приемен податок
0 – Оневозможува детекција на адреса. 9тиот бит може да се користи како
бит на парност
FERR - Framing Error bit
1 – На прием се детектира Framing Error.
0 – На прием не се детектира оваа грешка.
OERR - Overrun Error bit
1 – На прием се детектира Overrun Error.
0 - На прием не се детектира оваа грешка
EUSART Пренос –
За да се овозможи пренос на податоци со EUSART, треба
да се конфигурираат соодветните битови
TXEN = 1 – се овозможува трансмисија (TXSTA)
SYNC = 0 – АСИНХРОН МОД (TXSTA)
SPEN = 1 – Автоматски да се конфигурира TX/CК пинот за излез
(RCSTA)
EUSART Пренос
Главна улога има TSR поместувачкиот регистер кој не е
директно достапен до корисникот
Податокот кој се праќа треба да се запише во регистарот
TXREG
TXREG Register е достапен до корисникот
EUSART Пренос
Секој бајт веднаш се пренесува во поместувачкиот регистер TSR
TXREG останува празен и тоа може да се идентификува од TXIF.
Ако TXIE=1, ќе се генерира прекин
TXIE ќе се постави на 1 без разлика дали се овозможени прекини или не.
Овој бит не може да се постави на 0 софтверски, но може да се промени со
запишување на нов податок во регистерот TXREG
Синхронизирано потоа се праќаат битовите: START bit (0) ... data ... STOP
bit (1).
Кога најмалку значајниот бит (LSB) ќе помине низ TSR регистерот,
битот TRMT во регистерот TXSTA автоматски ќе се постави на 1.
Ако регистерот TXREG прими нов знак во меѓувреме, целата процедура
веднаш ќе се повтори откако ќе помине последниот STOP бит од
претходниот знак
EUSART Пренос
9 – битен пренос
9-битен преносот е овозможен ако се постави на 1 битот
TX9D од TXSTA регистерот.
TX9D мора да се запише пред да се запишат 8те помалку значајни
битови во регистерот TXREG.
Сите 9 бита ќе бидат запишани во поместувачкиот
регистер TSR веднаш откако запишувањето во TXREG е
завршено.
EUSART Прием
За да се овозможи прием на податоци преку EUSART,
треба да се конфигурираат одредени битови
CREN = 1 – Се овозможува примот (RCSTA)
SYNC = 0 – АСИНХРОН МОД (TXSTA)
SPEN = 1 – автоматски се конфигурираат пиновите RX/DT за влез
(RCSTA)
EUSART Прием
По конфигурација, кога ќе се детектира битот START,
податокот се пренесува на RSR поместувачкиот регистер
преку RX pin.
Кога ќе се прими битот STOP, се случува следното:
Податокот автоматски се префрла во регистерот RCREG (ако е
празен);
EUSART Прием
Битот знаменце RCIF е поставен на 1 и ако е овозможено се случува
прекин
Треба да е овозможено преку битот RCIE од регистерот PIE1
Потоа слично како кај преносот битот знаменце се поставува на 0
софтверски, т.е. со читање на регистерот RCREG
Забелешка: Овој систем овозможува прием на 2 знаци симултано
EUSART Прием
Ако регистерот RCREG е зафатен (содржи 2 бајти) и поместувачкиот
регистер детектира нов бит STOP, битот за преоптоварување OERR
ќе се постави на 1.
Тогаш тој нов податок ќе се изгуби и битот OEER мора да се ресетира софтверски.
Тоа се прави со ресетирање на битот CREN;
Забелешка: Не може да се примаат нови податоци ако битот OERR е сетиран
(поставен на 1).
EUSART Прием
Ако битот STOP е 0, битот FERR од регистерот RCSTA кој детектира
грешка при прием ќе се постави на 1;
За да се овозможу прием до 9-бита, треба да се сетира битот RX9 од
регитерот RCSTA.
MSB (најзначајниот бит) автоматски ќе се запише во RX9D од RCSTA .
Битот RX9D мора да се прочита, пред да се прочитаат 8-те бита од регистерот
RCREG
Генератор на такт (BRG)
BAUD RATE GENERATOR
За синхронизација и на пренос и на прием се користи
сигнал од часовникот од локалниот тајмер BRG
Тајмерот BRG се состои од два 8-битни регистри (Има
16 бита)
Бројот кој е запишан во овие битови е всушност BR
Мерна единица bps
Функции во mikroC
• void UART1_Init(longint baud_rate);
– иницијализација на UART модулот
– byte UART1_Data_Ready()
– Функцијата враќа вредност 1 ако има податок во
приемниот регистер т.е. има податок за читање, а 0 во
спротивно
– byte UART_T1_Idle()
– Функцијата враќа вредност 1 ако податокот е веќе
пренесен, а 0 во спротивно
Функции во mikroC
• byte UART1_Read();
• Се враќа бајтот добиен со прием.
– void UART1_Read_Text(char [255] out, char[10]
delimiter, byte Attempts) ;
– Во низата out се зачувува стрингот добиен на прием
– Крајот на стрингот е даден во делиметарот
– Attempts - бројот на обиди (ако се надмине 255 ќе се
блокира програмата)
Функции во mikroC
void UART1_Write(char character);
• Се врши пренос на еден бајт даден како аргумент.
void UART1_Write_Text(char[255] text);
• Се врши пренос на целиот стринг даден како
аргумент.
ЕUSART во mikroC
char uart_rd;
void main() {
ANSEL = ANSELH = 0;
while (1) {
if (UART1_Data_Ready()) { // ако е примен еден бајт
uart_rd = UART1_Read(); // го враќа бајтот кој е примен
UART1_Write(uart_rd); // пренос на бајтот назад преку UART
}
}
}
Master Synchronous Serial Port
Хардвер кој овозможува сериска комуникација
Синхронизирана комуникација со друг уред со кој е поврзан
контролерот
Во комуникацијата едната страна претставува Master, a другата Slave
Контролерот кој претставува Master ја воспоставува комуникацијата,
генерира такт за комуникацијата итн.
Постојат два мода на работа на овој хардвер
SPI (Serial Peripheral Interface)
I2C (Inter-Integrated Circuit)
SPI Mод
Овозможува податок од 8 битови да се праќа и
прима истовремено (full-duplex)
SDO(Serial Data Out) сигнална линија за праќање
SDI (Serial Data In) сигнална линија за примање
SCK (Serial Clock) сигнална линија за синхронизација
SS (Slave Select) сигнална линија за селекција на Slave
SPI Mод
Комуникацијата се одвива преку дадените сигнални линии
Master контролерот го дава тактот за комуникацијата
Slave контролерот преку SS знае дали има воспоставено комуникација
Се користат бафери за привремено складирање на податок кој се праќа
и прима (SSPBUF)
Се користи поместувачки регистер до кој немаме директен пристап за
да се прати или прими податок преку дадените сигнални линии (SSPSR)
Дополнителни регистри за разни подесувања: контролниот регистер
SSPCON и статусниот регистер SSPSTAT
I2C мод
Овозможува податок од 8 битови да се праќа и
прима преку иста сигнална линија (half-duplex)
SDA (Serial Data) сигнална линија за праќање и примање
SCL (Serial Clock) сигнална линија за синхронизација
Преку TRIS регистрите се индицира дали овие сигнали се
влезни или излезни за дадениот контролер
I2C мод
Маster конролерот го избира Slave контролерот со тоa
што праќа адреса преку SDA. Со оној контролер кој ја
имаа таа адреса ќе се воспостави комуникација
Чекор 1: Master контролерот праќа 1 бајт
Бит за старт START (логична 0)
Адреса од 7 бита
Еден бит кој укажува дали Master контролерот бара да
прати или да прими податок (0 прати, 1 прими)
I2C мод
Чекор 2: Master контролерот чека сигнал од Slave
контролерот дека ја добил пораката
По ова во следните чекори прво се праќа податок преку
сигналната линија SDA, а потоа се чека на одговор.
Ова се повторува додека Master контролерот да прати
сигнал за стоп
I2C мод
Следните регистри се користат
SSPCON – контролер регистер
Дали конролерот е Master
SSPCON2 – контролен регистер
SSPSTAT – статус регистер
SSPBUF – бафер регистер
Се чува вредност на податок кој е примен или пратен
SSPSR – поместувачки регистер
Се чува вредност на податок кој е примен или пратен и не е
достапен од контролерот
SSPADD
Се подесува тактот
Функции во mikroC
• Software SPI Library
• Се користи за SPI комуникација независно од
хардверот
• Подесено е во Master мод, а тактот е 20Hz