PDA

View Full Version : Thảo luận Address Detection, module EUSART của PIC 16f887 ?


minhcuong1122
01-07-2010, 03:01 PM
Mấy nay vọc PIC 16F887 thấy có module EUSART (enhanced). Ở chế độ nhận có thêm chức năng phát hiện điạ chỉ (dùng cho RS485 và các bus đa điểm). E thấy chức năng này hay quá.

Chức năng này đòi hỏi phải set bit ADDEN (thanh ghi RCSTA) và phải set luôn RX9 (cho phép nhận 9bit - tương ứng byte địa chỉ được phát ở chế độ 9bit). Khi chưa nhận được 9bit thì bộ nhận sẽ hok phất cờ RCIF (ngắt nhận). Sau khi phát hiện nhận được 9bit, cờ RCIF sẽ set và ta đọc giá trị RCREG để xóa cờ, kiểm tra byte nhận được có là điạ chỉ của thiết bị không, nếu đúng cần clear ADDEN để bộ nhận bắt đầu được phép nhận 8bit ở những byte tiếp theo (dữ liệu !). Còn không, trong lúc ADDEN vẫn còn set thì chỉ nhận 9bit !

Dài dòng quá ! (Hi) Vấn đề ở chỗ. Trong datasheet 16f887, phần 12.1.2.9 (9-bit Address Detection Mode Set-up), bước thứ 8, ghi rằng bit thứ 9 luôn luôn được set !!!!!
Vậy có nghĩa bên thiết bị phát phải luôn set bit thứ 9 thì phần nhận bên thiết bị thu (ở chế độ 9bit address detect) mới có thể nhận 9bit đó.???!!!!

E đã thử mô phỏng proteus, lấy parity làm bit 9 bộ phát terminal, để none thì chức năng phát hiện này đúng vì nếu để none thì hok xài bit parity, ngay vị trí bit 9 sẽ là bit stop - mức [1]. Nói vậy, nếu e hiểu đúng thì làm sao mình có thể sử dụng chức năng này ? (vì phát 8bit thì bit 9 là stop xem như là bit logic [1]) ??????

Xin anh em giải thích làm rõ giùm e (mong là e dịch sai !!! hic hic). (Xin anh Nam với F giúp đỡ, e thấy hình như diễn đàn chưa có mục nói về chức năng này (hoặc là e chưa tìm ra !))

datasheet của PIC6f887, e để đây để a e dễ tham khảo:
http://www.engr.usask.ca/classes/EE/391/notes/PIC16F886.pdf