Các thanh ghi điều khiển nhận UART

Một phần của tài liệu Giáo trình vi điều khiển PIC16F và ngôn ngữ lập trình HITECH C, Giáo trình dùng cho sinh viên ngành Cơ điện tử Nguyễn Trường Thịnh, Nguyễn Tấn Nó (Trang 98 - 101)

Hình 6.6: Sơ đồ khối bộ truyền UART

Nguyên tắc hoạt động:

Khi có dữ liệu được truyền tới chân RX, nếu bit SPEN được cho phép, thì dữ liệu sẽ được đồng bộ với khối tạo xung, vì baud rate giữa hai khối truyền nhận bằng nhau, nên xung baud mang dữ liệu từng bit vào thanh ghi RSR, khi một frame truyền hoàn tất (dấu hiệu từ bit stop), thì dữ liệu được truyền xuống thanh ghi RCREG, bit thứ 9 được truyền xuống RX9D (nếu sử dụng chế độ 9 bit), nếu trên đường truyền có lỗi thì các bit OERR, FERR sẽ được hiển thị để báo.

Quá trình nhận cũng có thể tạo ra ngắt sau khi kết thúc một frame truyền nhận, bằng việc làm cho bit RCIF =1.

Thanh ghi quy định chế độ nhận:

Các bit liên quan đến chế độ truyền nhận bất đồng bộ.

SPEN: Bit cho phép khởi tạo cổng nối tiếp

 1: Cho phép cổng nối tiếp  0: Không cho phép cổng nối tiếp

RX9: Bit cho phép nhận 9 bit

 1: Chế độ nhận 9 bit  0: Chế độ nhận 8 bit

CREN: Bit cho phép nhận liên tục

 1: Cho phép  0: Không cho phép

ADDEN: Bit cho phép phát hiện địa chỉ (sử dụng ở chế độ truyền

nhận bất đồng bộ 9 bit)

 1: Cho phép phát hiện địa chỉ, cho phép ngắt và tải bộ đệm nhận khi RSR<8> được set.

 0: Không cho phép phát hiện địa chỉ, tất cả byte được nhận và bit thứ 9 dùng làm bit parity

FERR: Bit báo lỗi frame

 1: Có lỗi  0: Không có lỗi

OERR: Lỗi OVERRUN

 1: Có lỗi (có thể xóa bằng việc xóa bít CREN)  0: Không lỗi

Hình 6.7: Ngắt nhận UART

Các bit khởi tạo ngắt nhận UART

RCIF: Cờ ngắt, sau khi thanh ghi RCREG nhận được dữ liệu thì

bit này tự động bằng 1.

RCIE: Bit cho phép ngắt nhận, để tạo ra ngắt nhận ta cần phải cho

phép bit này bằng 1.

PEIE: Bit cho phép ngắt ngoại vi. GIE: Bit cho phép ngắt toàn cục.

Các bước khởi tạo chế độ nhận UART

* Bước 1: Khởi tạo thanh ghi SPBRGH, SPBRG và các bit BRGH và BRG16 để tạo ra baud rate cần thiết.

* Bước 2: Cho phép giao tiếp bất đồng bộ: SYNC=0; SPEN=1; * Bước 3: Nếu sử dụng ngắt nhận: RCIE=1; PEIE=1; GIE=1;

* Bước 4: Cho phép chế độ 9 bit bằng (nếu sử dụng truyền nhận 9 bit): RX9=1;

* Bước 5: Cho phép nhận dữ liệu: CREN=1;

* Bước 6: Cờ ngắt RCIF = 1 khi dữ liệu chuyển đổi từ RSR tới bộ đệm nhận. Ngắt sẽ được tạo ra nếu RCIE=1.

* Bước 7: Đọc thanh ghi RCSTA để phát hiện các lỗi trong quá trình truyền nhận.

* Bước 8: Nhận 8 bit dữ liệu từ bộ điệm nhận bằng cách đọc thanh ghi RCREG.

* Bước 9: Nếu có lỗi overrun xảy ra, xóa cờ OERR bằng cách xóa bit CREN.

Một phần của tài liệu Giáo trình vi điều khiển PIC16F và ngôn ngữ lập trình HITECH C, Giáo trình dùng cho sinh viên ngành Cơ điện tử Nguyễn Trường Thịnh, Nguyễn Tấn Nó (Trang 98 - 101)

Tải bản đầy đủ (PDF)

(165 trang)