Mơ tả UART trong vi điều khiển AVR Atmega16A

Một phần của tài liệu Nghiên cứu về truyền thông không dây RF ứng dụng cho hệ thống SCADA trong xử lý nước thải công nghiệp (Trang 44 - 49)

Vi điều khiển Atmega16A cĩ 1 module truyền thơng nối tiếp UART, cĩ 3 bộ phận chính liên quan đến module này đĩ là chân xung nhịp – XCK, chân truyền dữ

Đề tài: “Nghiên cứu về truyền thơng khơng dây RF ứng dụng cho hệ thống

SCADA trong xử lý nƣớc thải cơng nghiệp‖

37

liệu –TxD (Transmitted Data) và chân nhận dữ liệu – RxD (Reveived Data). Trong đĩ chân XCK chỉ đƣợc sử dụng nhƣ là chân phát hoặc nhận xung giữ nhịp trong chế độ truyền đồng bộ. Tuy nhiên ở đây chúng ta khơng khảo sát chế độ truyền thơng đồng bộ, vì thế chúng ta chỉ quan tâm đến 2 chân TxD và RxD. Bộ truyền chứa 1 bộ đệm ghi, 1 thanh ghi dịch nối tiếp, bộ phát chẵn lẻ và bộ điều khiển logic giúp cho việc xử lý các định dạng khung nối tiếp khác nhau. Bộ đệm ghi cho phép chuyển liên tục của dữ liệu mà khơng cần bất kỳ sự chậm trễ giữa khung hình. Bộ nhận là phần phức tạp nhất của module USART do đồng hồ và khơi phục dữ liệu đơn vị của nĩ. Khối phục hồi đƣợc sử dụng để tiếp nhận dữ liệu khơng đồng bộ. Ngồi các khối phục hồi, bộ nhận bao gồm một bộ kiểm tra chẵn lẻ, điều khiển logic, một thanh ghi dịch và 1 bộ đệm nhận cấp 2 (UDR). Bộ nhận hỗ trợ định dạng giống nhƣ định dạng của bộ truyền và cĩ cĩ thể phát hiện lỗi khung, dữ liệu bị tràn ngập và các lỗi chẵn lẻ.

Thanh ghi: Cũng nhƣ các thiết bị khác trên AVR, tất cả hoạt động và trạng thái của module USART đƣợc điều khiển và quan sát thơng qua các thanh ghi trong vùng nhớ I/O. Cĩ 5 thanh ghi đƣợc thiết kế riêng cho hoạt động và điều khiển của USART, đĩ là:

UDR: hay thanh ghi dữ liệu, là 1 thanh ghi 8 bit chứa giá trị nhận đƣợc và

phát đi của USART. Thực chất thanh ghi này cĩ thể coi nhƣ 2 thanh ghi TXB (Transmit data Buffer) và RXB (Reveive data Buffer) cĩ chung địa chỉ. Đọc UDR thu đƣợc giá trị thanh ghi đệm dữ liệu nhận, viết giá trị vào UDR tƣơng đƣơng đặt giá trị vào thanh ghi đệm phát, chuẩn bị để gửi đi. Chú ý trong các khung truyền sử dụng 5, 6 hoặc 7 bit dữ liệu, các bit cao của thanh ghi UDR sẽ khơng đƣợc sử dụng

UCSRA (USART Control and Status Register A): là 1 trong 3 thanh ghi điều

Đề tài: “Nghiên cứu về truyền thơng khơng dây RF ứng dụng cho hệ thống

SCADA trong xử lý nƣớc thải cơng nghiệp‖

38

Thanh ghi UCSRA chủ yếu chứa các bit trạng thái nhƣ bit báo quá trình nhận kết thúc (RXC), truyền kết thúc (TXC), báo thanh ghi dữ liệu trống (UDRE), khung truyền cĩ lỗi (FE), dữ liệu tràn (DOR), kiểm tra parity cĩ lỗi (PE)…Một số bit quan trọng của thanh ghi này:

* UDRE (USART Data Register Empty) khi bit bày bằng 1 nghĩa là thanh ghi dữ liệu UDR đang trống và sẵn sàng cho một nhiệm vụ truyền hay nhận tiếp theo. Vì thế nếu bạn muốn truyền dữ liệu đầu tiên bạn phải kiểm tra xem bit UDRE cĩ bằng 1 hay khơng, sau khi chắc chắn rằng UDRE=1 hãy viết dữ liệu vào thanh ghi UDR để truyền đi.

* U2X là bit chỉ định gấp đơi tốc độ truyền, khi bit này đƣợc set lên 1, tốc độ truyền so cao gấp 2 lần so với khi bit này mang giá trị 0.

* MPCM là bit chọn chế độ hoạt động đa xử lí (multi-processor).

UCSRB (USART Control and Status Register B): đây là thanh ghi quan trọng

điều khiển USART. Vì thế chúng ta sẽ khảo sát chi tiết từng bit của thanh ghi này.

* RXCIE (Receive Complete Interrupt Enable) là bit cho phép ngắt khi quá trình nhận kết thúc. Việc nhận dữ liệu truyền bằng phƣơng pháp nối tiếp khơng đồng bộ thƣờng đƣợc thực hiện thơng qua ngắt, vì thế bit này thƣờng đƣợc set bằng 1 khi USART đƣợc dùng nhận dữ liệu.

* TXCIE (Transmit Complete Interrupt Enable) bit cho phép ngắt khi quá trình truyền kết thúc.

* UDRIE (USART Data Register Empty Interrupt Enable) là bit cho phép ngắt khi thanh ghi dữ liệu UDR trống.

* RXEN (Receiver Enable) là một bit quan trọng điều khiển bộ nhận của USART, đề kích hoạt chức năng nhận dữ liệu bạn phải set bit này lên 1.

Đề tài: “Nghiên cứu về truyền thơng khơng dây RF ứng dụng cho hệ thống

SCADA trong xử lý nƣớc thải cơng nghiệp‖

39 động bộ phát của USART.

* UCSZ2 (Chracter size) bit này kết hợp với 2 bit khác trong thanh ghi UCSRC quy định độ dài của dữ liệu truyền nhận. Chúng ta sẽ khảo sát chi tiết khi tìm hiểu thanh ghi UCSRC.

* RXB8 (Receive Data Bit 8) gọi là bit dữ liệu 8. Bộ USART trong AVR cĩ hỗ trợ truyền dữ liệu cĩ độ dài tối đa 9 bit, trong khi thanh ghi dữ liệu là thanh ghi 8 bit. Do đĩ, khi cĩ gĩi dữ liệu 9 bit đƣợc nhận, 8 bit đầu sẽ chứa trong thanh ghi UDR, cần cĩ 1 bit khác đĩng vai trị bit thứ chín, RXD8 là bit thứ chín này. Các bit đƣợc đánh số từ 0, vì thế bit thứ chín sẽ cĩ chỉ số là 8, vì lẽ đĩ mà bit này cĩ tên là RXD8 (khơng phải RXD9).

* TXB8 (Transmit Data Bit 8), tƣơng tự nhƣ bit RXD8, bit TXB8 cũng đĩng vai trị bit thứ 9 truyền thơng, nhƣng bit này đƣợc dùng trong lúc truyền dữ liệu.

UCSRC (USART Control and Status Register C): thanh ghi này chủ yếu quy

định khung truyền và chế độ truyền. Tuy nhiên, cĩ một rắc rối nho nhỏ là thanh ghi này lại cĩ cùng địa chỉ với thanh ghi UBRRH (thanh ghi chứa byte cao dùng để xác lập tốc độ baud), nĩi một cách khác 2 thanh ghi này là 1. Vì thế bit 7 trong thanh ghi này, tức bit URSEL là bit chọn thanh ghi. Khi URSEL=1, thanh ghi này đƣợc chip AVR hiểu là thanh ghi điều khiển UCSRC, nhƣng nếu bit URSEL=0 thì thanh ghi UBRRH sẽ đƣợc sử dụng.

Các bit cịn lại trong thanh ghi UCSRC đƣợc mơ tả nhƣ sau:

* UMSEL (USART Mode Select) là bit lựa chọn giữa 2 chế độ truyền thơng đồng bộ và khơng đồng bộ. Nếu UMSEL=0, chế độ khơng đồng bộ đƣợc chọn, ngƣợc lại nếu UMSEL=1, chế độ đồng bộ đƣợc kích hoạt.

* Hai bit UPM1 và UPM0 (Parity Mode) đƣợc dùng để quy định kiểm tra pariry. Nếu UPM1:0=00, parity khơng đƣợc sử dụng (mode này khá thơng dụng),

Đề tài: “Nghiên cứu về truyền thơng khơng dây RF ứng dụng cho hệ thống

SCADA trong xử lý nƣớc thải cơng nghiệp‖

40

UPM1:0=01 khơng đƣợc sử dụng, UPM1:0=10 thì parity chẵn đƣợc dùng, UPM1:0=11 parity lẻ đƣợc sử dụng (xem thêm bảng 3.2).

Bảng 3.2. Chọn kiểm tra parity

* USBS (Stop bit Select), bit Stop trong khung truyền bằng AVR USART cĩ thể là 1 hoặc 2 bit, nếu USBS=0 thì Stop bit chỉ là 1 bit trong khi USBS=1 sẽ cĩ 2 Stop bit đƣợc dùng.

* Hai bit UCSZ1 và UCSZ2 (Character Size) kết hợp với bit UCSZ2 trong thanh ghi UCSRB tạo thành 3 bit quy định độ dài dữ liệu truyền. Bảng 3.3 tĩm tắt các giá trị cĩ thể cĩ của tổ hợp 3 bit này và độ dài dữ liệu truyền tƣơng ứng.

Bảng 3.3. Độ dài dữ liệu truyền.

* UCPOL (Clock Pority) là bit chỉ cực của xung kích trong chế độ truyền thơng đồng bộ, nếu UCPOL=0, dữ liệu sẽ thay đổi thay đổi ở cạnh lên của xung hịp, nếu UCPOL=1, dữ liệu thay đổi ở cạnh xuống xung nhịp. Nếu sử dụng chế độ truyền thơng khơng đồng bộ, set bit này bằng 0.

UBRRL và UBRRH (USART Baud Rate Register): 2 thanh ghi thấp và cao quy định tốc độ baud.

Đề tài: “Nghiên cứu về truyền thơng khơng dây RF ứng dụng cho hệ thống

SCADA trong xử lý nƣớc thải cơng nghiệp‖

41

Nhắc lại là thanh ghi UBRRH dùng chung địa chỉ thanh ghi UCSRC, bạn phải set bit này bằng 0 nếu muốn sử dụng thanh ghi UBRRH. Trong hình trên, chỉ cĩ 4 bit thấp của UBRRH đƣợc dùng, 4 bit này kết hợp với 8 bit trong thanh ghi UBRRL tạo thành thanh ghi 12 bit quy định tốc độ baud. Nếu viết giá trị vào thanh ghi UBRRL, tốc độ baud sẽ tức thì đƣợc cập nhật, vì thế phải viết giá trị vào thanh ghi UBRRH trƣớc khi viết vào thanh ghi UBRRL.

Giá trị gán cho thanh ghi UBRR khơng phải là tốc độ baud, nĩ chỉ đƣợc USART dùng để tính tốc độ baud. Bảng 3 hƣớng dẫn cách tính tốc độ baud dựa vào giá trị của thanh ghi UBRR và ngƣợc lại, cách tính giá trị cần thiết gán cho thanh ghi UBRR khi đã biết tốc độ baud.

Bảng 3.4. Tính tốc độ baud

Trong các cơng thức trong bảng 3, fOSC là tần số xung nhịp của hệ thống (thạch anh hay nguồn xung nội).

Một phần của tài liệu Nghiên cứu về truyền thông không dây RF ứng dụng cho hệ thống SCADA trong xử lý nước thải công nghiệp (Trang 44 - 49)

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

(115 trang)