Thiết kế và xây dựng hệ thống ghép nối vi điều khiển (mC)

LỜI NÓI ĐẦU 1

CHƯƠNG I 3

NHIỆM VỤ VÀ PHƯƠNG HƯỚNG THỰC HIỆN 3

1.1. Nhiệm vụ của đồ án. 3

1.2. Phân tích nhiệm vụ. 4

1.3. Phương hướng thực hiện. 5

1.3.1. Lựa chọn thiết bị. 5

1.3.2. Phương hướng thiết kế. 7

CHƯƠNG 2 9

LỰA CHỌN LINH KIỆN THIẾT KẾ 9

VÀ MỘT SỐ LÝ THUYẾT VỀ CHUYỂN ĐỔI A/D 9

2.1. Lựa chọn linh kiện thiết kế. 9

2.1.1. Giới thiệu vi mạch điều khiển AT90S8535. 9

2.1.1.1. Cấu trúc của vi mạch AT90S8535. 14

2.1.1.2. Tập thanh ghi đa năng của C AT90S8535. 17

2.1.1.3. Bộ số học và Logic - ALU. 19

2.1.1.4. Đặc điểm các bộ nhớ trong của C AT90S8535. 19

2.1.1.5. Các chế độ địa chỉ của C AT90S8535. 24

2.1.1.6. Thời gian truy cập bộ nhớ và thời gian thực hiện lệnh. 27

2.1.1.7. Không gian bộ nhớ I/O. 29

2.1.1.8. Ngắt và xử lý ngắt trong C AT90S8535. 39

2.1.1.9. Các chế độ nghỉ của C AT90S8535 54

2.1.1.10. Các mạch điều khiển trong C AT90S8535. 57

2.1.2. Module LCD (20x4 characters). 138

2.1.3. IC Max232. 145

2.1.3.1. Giới thiệu chuẩn RS232. 145

2.1.3.2. IC Max232. 149

2.1.4. Cảm biến nhiệt LM335 151

2.2. Một số lý thuyết về chuyển đổi A/D. 153

2.2.1. Khái niệm chung. 153

2.2.2. Một số phương pháp chuyển đổi AD. 155

2.2.2.1. Phương pháp chuyển đổi song song. 155

2.2.2.2. Phương pháp xấp xỉ liên tiếp. 156

2.2.2.3. Phương pháp tích phân hai sườn dốc. 157

CHƯƠNG 3 160

THIẾT KẾ HỆ THỐNG PHẦN CỨNG 160

3.1. Sơ đồ cấu trúc phần cứng của hệ thống. 160

3.2. Sơ đồ ghép nối C với module LCD. 160

3.3. Sơ đồ ghép nối C với module KeyPad. 162

3.4. Sơ đồ ghép nối C với cảm biến nhiệt LM335. 164

3.4. Sơ đồ ghép nối C với IC Max232. 165

3.5. Sơ đồ kết nối nguồn nuôi cho vi mạch điều khiển. 166

CHƯƠNG 4 168

THIẾT KẾ HỆ THỐNG PHẦN MỀM CHO C AT90S8535 168

4.1. Biểu đồ chức năng và lưu đồ tổng thể của chương trình điều khiển C. 168

4.2. Lưu đồ thuật toán của các chức năng chính. 174

4.2.1. Chức năng giao tiếp với LCD controller. 174

4.2.2. Chức năng điều khiển và hiển thị kết quả ADC. 176

4.2.3. Chức năng giao tiếp với KeyPad. 181

4.2.4. Chức năng truyền nhận dữ liệu nối tiếp với PC. 189

CHƯƠNG 5 192

THIẾT KẾ HỆ THỐNG PHẦN MỀM TRÊN PC 192

5.1. Mục đích của phần mềm trên PC. 192

5.2. Một số chức năng chính của chương trình 194

5.3. Nhận xét và đánh giá. 197

KẾT LUẬN 199

PHỤ LỤC 201

CHƯƠNG TRÌNH ĐIỀU KHIỂN C AT90S8535 201

MỤC LỤC 243

 

 

doc246 trang | Chia sẻ: huong.duong | Lượt xem: 1126 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Thiết kế và xây dựng hệ thống ghép nối vi điều khiển (mC), để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
báo thanh ghi truyền dữ liệu rỗng và Ngắt thông báo kết thúc nhận dữ liệu. Bộ đệm truyền và nhận. Thao tác truyền dữ liệu. Hình 2.24 : Sơ đồ khối mạch truyền dữ liệu Thao tác truyền dữ liệu được bắt đầu bằng việc dữ liệu ghi sẽ được truyền tới thanh ghi dữ liệu I/O của UAR là UDR. Dữ liệu được truyền từ thanh ghi UDR tới thanh ghi dịch chuyển truyền khi : Một ký tự mới được ghi tới UDR sau khi bit Stop của ký tự trước đã được dịch chuyển ra ngoài thanh ghi. Thanh ghi dịch chuyển được nạp tức thì. Một ký tự mới được ghi tới URD trước khi bit Stop của ký tự trước được dịch chuyển ra ngoài thanh ghi. Thanh ghi dịch chuyển được nạp khi bit Stop của ký tự hiện thời đang được truyền bị dịch chuyển ra ngoài thanh ghi. Nếu thanh ghi dịch chuyển truyền 10 (11) bit rỗng, dữ liệu được truyền từ thanh ghi UDR tới thanh ghi dịch chuyển. Bit UDRE (UART Data Register Empty) trong thanh ghi trạng thái UART (USR) được thiết lập, UART sẵn sàng nhận ký tự tiếp theo. Tại cùng thời điểm dữ liệu được truyền từ UDR tới thanh ghi dịch chuyển 10(11) bit, bit 0 của thanh ghi dịch chuyển được xoá (bit Start) và bit 9 hoặc 10 được thiết lập (bit Stop). Nếu từ dữ liệu 9 bit được chọn (bit CHR9 của UCR được thiết lập) thì bit TXB8 trong UCR được truyền tới 9 bit trong thanh ghi dịch chuyển truyền. Cùng với tốc độ Buad theo sau thao tác truyền tới thanh ghi dịch chuyển, bit Start được dịch chuyển ra chân TXD. Sau đó là dữ liệu, bit LSB được truyền đầu tiên. Khi bit Stop đã được di chuyển ra ngoài, thanh ghi dịch chuyển được nạp nếu có bất kỳ dữ liệu mới nào đã được ghi tới thanh ghi UDR trong qua trình truyền. Trong khi nạp, bit UDRE được thiết lập. Nếu không có dữ liệu mới trong thanh ghi UDR để gửi khi bit Stop được dịch chuyển ra ngoài thì cờ UDRE sẽ giữ nguyên trạng thái thiết lập cho đến khi UDR được ghi lại. Khi không có dữ liệu mới được ghi và bit Stop đã xuất hiện trên chân TXD được một đơn vị độ dài bit, cờ kết thúc truyền (TXC) trong USR được thiết lập . Bit TXEN trong thanh ghi UCR cho phép thao tác truyền của UART khi được thiết lập. Khi bit này bị xoá, chân PD1 có thể được sử dụng như một chân I/O chung. Khi bit TXEN được thiết lập, dữ liệu truyền qua UART được kết nối tới chân PD1, bắt buộc chân này là đầu ra mà không cần quan tâm tới sự thiết lập của bit DDD1 trong thanh ghi DDRD. Thao tác nhận dữ liệu. Mạch thu đầu cuối (front-end) lấy mẫu tín hiệu trên chân RXD tại tần số bằng 16 lần tốc độ Baud. Trong khi đường truyền rỗi, một mẫu đơn có giá trị logic 0 sẽ được hiểu như sườn xuống của bit Start và sự kiểm tra bit Start sau đó được bắt đầu. Sau mỗi quá trình chuyển từ 1 sang 0, bộ thu lấy mẫu trên chân RXD tại những mẫu 8, 9 và 10. Nếu hai hoặc nhiều hơn 3 mẫu này có giá trị logic 1 thì bit Start bị loại bỏ như một nhiễu xung và bộ thu bắt đầu tìm kiếm sự chuyển tiếp từ 1 tới 0 tiếp theo. Bất cứ khi nào, một bit Start được phát hiện, sự lấy mẫu của các bit dữ liệu theo sau bit Start được thực hiện. Các bit này cũng được lấy mẫu tại các mẫu 8, 9 và 10. Giá trị logic được tìm thấy tại ít nhất hai trong ba mẫu được giữ lại như là giá trị bit. Tất cả các bit được dịch chuyển vào thanh ghi dịch chuyển truyền khi chúng được lấu mẫu. Việc lấy mẫu một ký tự vào được mô tả trong hình 2.26. Hình 2.25 : Sơ đồ khối mạch nhận dữ liệu của UART Hình 2.26 : Quá trình lấy mẫu của mạch thu Khi bit Stop đi vào mạch thu, phần lớn giá trị của 3 mẫu phải là 1 để xác nhận bit Stop. Nếu hai hoặc nhiều hơn các mẫu có giá trị logic 0, cờ lỗi khung (Framing Errror flag (FE)) trong thanh ghi trạng thái UART (USR) được thiết lập. Trước khi đọc thanh ghi UDR, người sử dụng phải luôn kiểm tra bit FE để phát hiện lỗi khung. Cho dù một bit stop có được phát hiện tại cuối mỗi chu kỳ nhận ký tự hay không, dữ liệu vẫn được truyền vào thanh ghi UDR và cờ RXC trong thanh ghi USR được thiết lập. Thực tế thanh ghi UDR gồm hai thanh ghi vật lý độc lập, một cho dữ liệu truyền và một cho dữ liệu nhận. Khi thanh ghi UDR được đọc, thanh ghi dữ liệu nhận được truy nhập và khi UDR được ghi, thanh ghi dữ liệu truyền được truy nhập. Nếu từ dữ liệu 9 bit được chọn (bit CHR9 trong thanh ghi điều khiển UART(UCR) được thiết lập) thì bit RXB8 trong thanh ghi UCR được nạp với bit 9 trong thanh ghi dịch chuyển truyền khi dữ liệu được truyền vào thanh ghi UDR. Nếu sau khi đã nhận một ký tự, thanh ghi UDR không được đọc kể từ lần nhận cuối cùng, thì cờ tràn OverRun (OR) trong thanh ghi UCR được thiết lập. Điều này có nghĩa là byte dữ liệu cuối cùng được dịch chuyển vào thanh ghi dịch không được truyền vào thanh ghi UDR và đã bị mất. Bit OR được nhớ đệm và được cập nhật khi một byte dữ liệu hợp lệ trong thanh ghi UDR được đọc. Do đó, người sử dụng nên luôn kiểm tra bit OR sau khi đọc thanh ghi UDR phát hiện bất kỳ lỗi OverRun nào nếu tốc độ baud cao hoặc quá trình nạp lệnh của CPU nhanh. Khi bit RXEN trong thanh ghi UCR được xoá thì mạch thu bị vô hiệu hoá. Điều này có nghĩa là chân PD0 có thể được sử dụng như một chân vào/ra chung. Khi bit RXEN được thiết lập, mạch nhận của UART sẽ được nối tới chân PD0 , PD0 bị ép trở thành chân vào mà không quan tâm đến sự thiết lập của bit DDD0 trong thanh hgi DDRD. Khi chân PD0 bị ép trở thành đầu vào bởi UART, bit PORTD0 có thể vẫn được sử dụng để điều khiển điện trở pull-up trên chân. Khi bit CHR9 trong thanh ghi UCR được thiết lập, các ký tự được truyền và nhận đều là 9 bit, cộng thêm bit stop và bit start. Bit dữ liệu thứ 9 được truyền là bit TXB8 trong thanh ghi UCR. Bit này phải được thiết lập tới giá trị mong muốn trước khi một quá trình truyền được bắt đầu bằng việc ghi vào thanh ghi UDR. Bit dữ liệu thứ 9 được nhận là bit RXB8 trong thanh ghi UCR. Thanh ghi dữ liệu I/O của UART : UDR Thực tế thanh ghi UDR là hai thanh ghi vật lý độc lập có chung một địa chỉ vào/ra. Khi ghi vào thanh ghi, thanh ghi dữ liệu truyền của UART được ghi. Khi đọc từ UDR, thanh ghi dữ liệu nhận được đọc. Thanh ghi trạng thái UART : USR USR là thanh ghi chỉ đọc cung cấp các thông tin về trạng thái của UART. Bit 7 - RXC : Bit thông báo kết thúc nhận dữ liệu của UART (UART Receive Complete) Bit này được thiết lập khi một ký tự nhận được truyền từ thanh ghi dịch chuyển nhận tới UDR. Bit này được thiết lập mà bất chấp lỗi khung nào được phát hiện. Khi bit RXCIE trong thanh ghi UCR được thiết lập, ngắt kết thúc nhận dữ liệu của UART sẽ được thực hiện khi bit RXC được thiết lập. Bit RXC bị xoá bởi việc đọc UDR. Khi quá trình nhận dữ liệu điều khiển bằng ngắt được sử dụng, thủ tục ngắt kết thúc nhận dữ liệu của UART phải đọc thanh ghi URD để xoá bit RXC, nếu không một ngắt mới sẽ xuất hiện ngay khi thủ tục ngắt này kết thúc. Bit 6 - TXC : Bit thông báo kết thúc truyền dữ liệu của UART (UART Transmit Complete) Bit này được thiết lập khi toàn bộ ký tự (bao gồm cả bit Stop) trong thanh ghi dịch chuyển truyền được được dịch chuyển ra và không có dữ liệu mới nào được ghi vào UDR. Cờ này đặc biệt hữu ích trong ghép nối truyền thông tin nối tiếp bán song công (half-duplex), tức là một ứng dụng truyền dữ liệu phải chuyển sang chế độ nhận và giải phóng ngay lập tức bus truyền thông tin sau khi quá trình truyền hoàn thành. Khi bit TXCIE trong thanh ghi UCR được thiết lập, sự thiết lập của bit TXC làm cho ngắt kết thúc truyền dữ liệu của UART được thực hiện. Bit TXC bị xoá bởi phần cứng khi vector điều khiển ngắt tương ứng được thực hiện. Bằng cách khác, bit TXC có thể được xoá bằng cách ghi giá trị logic 1 vào bit này. Bit 5 - UDRE : Bit cho biết thanh ghi dữ liệu của UART rỗng (UART Data RegisterEmpty) Bit này được thiết lập khi một ký tự ghi vào thanh ghi UDR đã được truyền tới thanh ghi dịch chuyển truyền. Sự thiết lập của bit này cho biết mạch truyền đã sẵn sàng nhận một ký tự mới để truyền. Khi bit UDRIE trong UCR được thiết lập, ngắt kết thúc truyền của UART được thực khi bit UDRE được thiết lập. Bit UDRE bị xoá bằng việc ghi vào thanh ghi UDR. Khi quá trình truyền dữ liệu điều khiển băng ngắt được sử dụng, thủ tục ngắt thông báo thanh ghi dữ liệu của UART rỗng phải ghi vào thanh ghi UDR để xoá bit UDRE, nếu không một ngắt mới sẽ xuất hiện ngay khi thủ tục ngắt này kết thúc. Bit UDRE được thiết lập trong khi Reset để cho biết mạch truyền đã sãn sàng. Bit 4 - FE : Bit báo lỗi khung (Framing Error) Bit này được thiết lập khi một lỗi khung được phát hiện, nghĩa là khi bit Stop của một ký tự nhận là 0. Bit FE được xoá khi khi bit Stop của dữ liệu nhận được là 1. Bit 3 - OR : Bit báo tràn (Overrun) Bit này được lập nếu lỗi tràn được phát hiện, nghĩa là khi một ký tự đã có trong thanh ghi UDR không được đọc trước khi ký tự tiếp theo được dịch chuyển vào thanh ghi dịch chuyển nhận. Bit OR được đệm, nghĩa là nó sẽ được thiết lập khi dữ liệu hợp lệ trong thanh ghi UDR vẫn được đọc. Bit OR bị xoá khi dữ liệu được nhận và truyền tới thanh ghi UDR. Bit 2...0 : Không được sử dụng. Thanh ghi điều khiển UART : UCR Bit 7 - RXCIE : Bit cho phép ngắt kết thúc nhận (RX Complete Interrupt Enable) Khi bit này được thiết lập cùng với sự thiết lập của bit RXC trong thanh USR sẽ làm cho thủ tục ngắt kết thúc nhận được thực hiện với điều kiện các ngắt chung được cho phép. Bit 6 - TXCIE : Bit cho phép ngắt kết thúc truyền (TX Complete Interrupt Enable) Khi bit này được thiết lập cùng với sự thiết lập của bit TXC trong thanh ghi USR sẽ làm cho thủ tục ngắt kết thúc truyền được thực hiện với điều kiện các ngắt chung được cho phép. Bit 5 - UDRIE : Cho phép ngắt báo thanh ghi dữ liệu rỗng (UART Data Register Empty Interrupt Enable) Khi bit này được thiết lập cùng với sự thiết lập của bit UDRE trong thanh ghi USR sẽ làm cho thủ tục ngắt báo thanh ghi dữ liệu của UART rỗng được thực hiện với điều kiện các ngắt chung được cho phép. Bit 4 - RXEN : Bit cho phép nhận dữ liệu (Receiver Enable) Bit này khi được thiết lập sẽ cho phép mạch nhận dữ liệu UART. Khi mạch nhận dữ liệu bị vô hiệu hoá, các cờ trạng thái RXC, OR và FE không thể được thiết lập. Nếu các cờ này được thiết lập, thì việc tắt bit RXEN không gây ra việc xoá các cờ này. Bit 3 - TXEN : Bit cho phép mạch truyền dữ liệu (Trasmitter Enable) Bit này cho phép mạch truyền dữ liệu UART khi được thiết lập. Khi vô hiệu hoá mạch truyền dữ liệu trong khi đang truyền một ký tự, thì mạch truyền dữ liệu không bị vô hiệu hoá trước khi ký tự trong thanh ghi dịch chuyển cùng với bất kỳ ký tự theo sau nào trong thanh ghi UDR đã hoàn toàn được truyền. Bit 2 - CHR9 : Bit cho phép truyền ký tự dài 9 bit (9 bit character) Khi bit này được thiết lập, các ký tự được truyền và nhận có độ dài 9 bit, cộng với bit Start và Stop. Bit thứ 9 được đọc và ghi bởi việc sử dụng riêng các bit RXB8 và TXB8 trong thanh ghi UCR. Bit dữ liệu thứ 9 có thể được sử dụng như một bit Stop phụ hoặc một bit Parity. Bit 1 - RXB8 : Bit cho phép nhận dữ liệu dài 8 bit (Receive Data Bit 8) Khi bit CHR9 được thiết lập, bit RXB8 là bit dữ liệu thứ 9 của ký tự nhận được. Bit 0 - TXB8 : Bit cho phép truyền dữ liệu dài 8 bit (Transmit Data Bit 8) Khi bit CHR9 được thiết lập , bit TXB8 là bit dữ liệu thứ 9 của ký tự được truyền. Bộ tạo tốc độ Baud Bộ tạo tốc độ Baud là một bộ chia tần số để tạo ra các tốc độ truyền nhận dữ liệu của mạch UART theo công thức sau: BAUD = fCK = Tần số của đồng hồ tinh thể UBRR = Nội dung của thanh ghi tốc độ của UART (0...255) Với các tần số chuẩn của đồng hồ tinh thể, các tốc độ Baud thường được sử dụng nhất có thể được tạo ra bằng việc sử dụng sự thiết lập UBRR như trong bảng 2.23. Các giá trị của UBRR sinh ra tốc độ Baud thực tế sai khác ít hơn 2% so với tốc độ Baud gốc được in chữ đậm trong bảng. Tuy nhiên, không nên sử dụng các tốc độ Baud có mức lỗi lớn hơn 1%. Vì tỷ lệ lỗi càng cao làm cho khả năng chống nhiễu càng thấp. Bảng 2.23 : Sự thiết lập UBRR tại các tần số đồng hồ tinh thể khác nhau Baud Rate 1 MHz %Error 1.8432 MHz %Error 2 MHz %Error 2.4576 MHz %Error 2400 UBRR= 25 0.2 UBRR= 47 0.0 UBRR= 51 0.2 UBRR= 63 0.0 4800 UBRR= 12 0.2 UBRR= 23 0.0 UBRR= 25 0.2 UBRR= 31 0.0 9600 UBRR= 6 7.5 UBRR= 11 0.0 UBRR= 12 0.2 UBRR= 15 0.0 14400 UBRR= 3 7.8 UBRR= 7 0.0 UBRR= 8 3.7 UBRR= 10 3.1 19200 UBRR= 2 7.8 UBRR= 5 0.0 UBRR= 6 7.5 UBRR= 7 0.0 28800 UBRR= 1 7.8 UBRR= 3 0.0 UBRR= 3 7.8 UBRR= 4 6.3 38400 UBRR= 1 22.9 UBRR= 2 0.0 UBRR= 2 7.8 UBRR= 3 0.0 57600 UBRR= 0 7.8 UBRR= 1 0.0 UBRR= 1 7.8 UBRR= 2 12.5 76800 UBRR= 0 22.9 UBRR= 1 33.3 UBRR= 1 22.9 UBRR= 1 0.0 115200 UBRR= 0 84.3 UBRR= 0 0.0 UBRR= 0 7.8 UBRR= 0 25.0 Baud Rate 3.2768 MHz %Error 3.6864 MHz %Error 4 MHz %Error 4.608 MHz %Error 2400 UBRR= 84 0.4 UBRR= 95 0.0 UBRR= 103 0.2 UBRR= 119 0.0 4800 UBRR= 42 0.8 UBRR= 47 0.0 UBRR= 51 0.2 UBRR= 59 0.0 9600 UBRR= 20 1.6 UBRR= 23 0.0 UBRR= 25 0.2 UBRR= 29 0.0 14400 UBRR= 13 1.6 UBRR= 15 0.0 UBRR= 16 2.1 UBRR= 19 0.0 19200 UBRR= 10 3.1 UBRR= 11 0.0 UBRR= 12 0.2 UBRR= 14 0.0 28800 UBRR= 6 1.6 UBRR= 7 0.0 UBRR= 8 3.7 UBRR= 9 0.0 38400 UBRR= 4 6.3 UBRR= 5 0.0 UBRR= 6 7.5 UBRR= 7 6.7 57600 UBRR= 3 12.5 UBRR= 3 0.0 UBRR= 3 7.8 UBRR= 4 0.0 76800 UBRR= 2 12.5 UBRR= 2 0.0 UBRR= 2 7.8 UBRR= 3 6.7 115200 UBRR= 1 12.5 UBRR= 1 0.0 UBRR= 1 7.8 UBRR= 2 20.0 Baud Rate 7.7328 MHz %Error 8 MHz %Error 9.216 MHz %Error 11.059 MHz %Error 2400 UBRR= 191 0.0 UBRR= 207 0.2 UBRR= 239 0.0 UBRR= 287 0.0 4800 UBRR= 95 0.0 UBRR= 103 0.2 UBRR= 119 0.0 UBRR= 143 0.0 9600 UBRR= 47 0.0 UBRR= 51 0.8 UBRR= 59 0.0 UBRR= 71 0.0 14400 UBRR= 31 0.0 UBRR= 34 0.0 UBRR= 39 0.0 UBRR= 47 0.0 19200 UBRR= 23 0.0 UBRR= 25 0.2 UBRR= 29 0.0 UBRR= 35 0.0 28800 UBRR= 15 0.0 UBRR= 16 2.1 UBRR= 19 0.0 UBRR= 23 0.0 38400 UBRR= 11 0.0 UBRR= 12 0.2 UBRR= 14 0.0 UBRR= 17 0.0 57600 UBRR= 7 0.0 UBRR= 8 3.7 UBRR= 9 0.0 UBRR= 11 0.0 76800 UBRR= 5 0.0 UBRR= 6 7.5 UBRR= 7 6.7 UBRR= 8 0.0 115200 UBRR= 3 0.0 UBRR= 3 7.8 UBRR= 4 0.0 UBRR= 5 0.0 Thanh ghi tốc độ Baud của UART : UBRR Thanh ghi UBRR là thanh ghi R/W 8 bit xác định tốc độ Baud của UART theo công thức nêu trên. Bộ so sánh tín hiệu tương tự (Analog Comperator). Bộ so sánh tín hiệu tương tự, so sánh các giá trị đầu vào trên chân vào tích cực PB2 (AIN0) và đầu vào đảo PB3 (AIN1). Khi điện áp trên chân PB2 (AIN0) cao hơn điện áp trên chân PB3 (AIN1) thì bit đầu ra của bộ so sánh tương tự (ACO – Analog Comparator Output) được thiết lập. Đầu ra của bộ so sánh có thể được thiết lập để kích hoạt chức năng bắt tín hiệu vào của T/C1. Ngoài ra, bộ so sánh có thể kích hoạt một ngắt độc lập dành riêng cho bộ so sánh tương tự. Người sử dụng có thể lựa chọn sự kích hoạt ngắt trên sườn lên, sườn xuống hoặc mức thay đổi tín hiệu ra của bộ so sánh. Hình 2.27 : Sơ đồ khối của mạch so sánh tín hiệu tương tự Thanh ghi điểu khiển và trạng thái của bộ so sánh tín hiệu tương tự : ACSR Bit 7 - ACD : Bit không cho phép bộ so sánh tương tự (Analog Comparator Disable) Khi bit này được thiết lập, nguồn cung cấp cho bộ so sánh tương tự bị ngắt. Bit này có thể được thiết lập bất kỳ lúc nào để cấm sự hoạt động của bộ so sánh tương tự. Khi thay đổi bit ACD, ngắt bộ so sánh tương tự phải bị cấm bằng việc xoá bit ACIE trong thanh ghi ACSR. Nếu không, một ngắt có thể xuất hiện khi bit thay đổi. Bit 6 : Không sử dụng Bit 5 - ACO : Bit đầu ra của bộ so sánh tương tự (Analog Comparator Output) Bit ACO được nối trực tiếp với đầu ra của bộ so sánh tương tự. Bit 4 - ACI : Bit cờ ngắt của bộ so sánh tương tự (Analog Comparator Interrupt Flag) Bit này được thiết lập khi một sự kiện đầu ra của bộ so sánh tương tự kích hoạt chế độ ngắt được xác định bởi bit ACI1 và bit ACI0. Thủ tục xử lý ngắt của bộ so sánh tương tự được thực hiện nếu bit ACIE được thiết lập và bit I trong thanh ghi SREG được thiết lập. Bit ACI được xoá bởi phần cứng khi thực hiện vector điều khiển ngắt tương ứng. Bit ACI cũng có thể được xoá bằng cách ghi một giá trị logic 1 vào cờ. Bit 3 - ACIE : Bit cho phép ngắt bộ so sánh tương tự (Analog Comparator Interrupt Enable) Khi bit ACIE được thiết lập và bit I trong thanh ghi SREG được thiết lập thì ngắt so sánh tương tự được kích hoạt. Khi bit này bị xoá thì ngắt bị cấm. Bit 2 - ACIC : Bit cho phép bắt tín hiệu đầu vào của bộ so sánh tương tự (Analog Comparator Input Capture Enable) Khi được thiết lập, bit này cho phép chức năng bắt tín hiệu đầu vào trong T/C1 được kích hoạt bởi bộ so sánh tương tự. Trong trường hợp này đầu ra của bộ so sánh được nối trực tiếp tới mạch đầu-cuối bắt tín hiệu đầu vào, làm cho bộ so sánh tận dụng các đặc trưng khử nhiễu và chọn sườn của ngắt bắt tín hiệu vào của T/C1. Khi bit này bị xoá, không có sự liên quan nào giữa bộ so sánh tương tự và chức năng bắt tín hiệu đầu vào. Để bộ so sánh kích hoạt ngắt bắt tín hiệu đầu vào của T/C1 thì bit TICIE1 trong thanh ghi TIMSK (Timer Interrput Mask Register) phải được thiết lập. Bit 1,0 - ACIS1, ACIS0 : Các bit lựa chọn chế độ ngắt của bộ so sánh tương tự (Analog Comparator Interrupt Mode Select) Các bit này xác định sự kiện so sánh nào kích hoạt ngắt bộ so sánh. Các chế độ ngắt được mô tả trong bảng sau. Bảng 2.24: Các chế độ ngắt của bộ so sánh ACIS1 ACIS0 Chế độ ngắt 0 0 Ngắt bộ so sánh dựa trên mức của tín hiệu đầu ra 0 1 Không sử dụng 1 0 Ngắt bộ so sánh dựa trên sườn xuống của tín hiệu đầu ra 1 1 Ngắt bộ so sánh dựa trên sườn lên của tín hiệu đầu ra Chú ý : Khi thay đổi các bit ACIS1/ACIS0, ngắt bộ so sánh phải bị cấm bằng cách xoá bit cho phép ngắt trong thanh ghi ACSR. Nếu không một ngắt có thể xảy ra khi các bit thay đổi. Bộ chuyển đổi ADC (Analog to Digital Converter). Trong vi mạch điều khiển AT90S8535 có một bộ chuyển đổi ADC xấp xỉ liên tiếp 10 bit. Bộ ADC được kết nối tới một bộ dồn kênh Analog 8 kênh cho phép mỗi chân của cổng A có thể được sử dụng như một đầu vào cho bộ ADC. ADC chứa một bộ khuếch đại lấy mẫu và giữ (Sample and Hold) đảm bảo điện áp vào ADC được giữ mức cố định trong thời gian chuyển đổi. Một số đặc trưng chính của bộ ADC là: 10 bit kết quả. Tích phân không tuyến tính 0.5 LSB. Độ chính xác tuyệt đối 2 LSB. Thời gian chuyển đổi 65-260 ms. Độ phân giải tối đa 15kSPS. Chế độ hoạt động tự do và chế độ chuyển đổi đơn. Ngắt khi kết thúc quá trình chuyển đổi. Chế độ nghỉ khử nhiễu. Hình 2.28 : Sơ đồ khối bộ chuyển đổi ADC Bộ ADC có hai chân cung cấp điện áp liên tục độc lập, AVCC và AGND. Chân AGND phải được nối tới chân GND và điện áp trên chân AVCC không được sai khác quá 0.3V so với VCC. Một điện áp ngoài phải được cung cấp cho chân AREF. Điện áp này phải nằm trong phạm vi 2V - AVCC. Hoạt động của bộ ADC Bộ ADC có tính năng chuyển đổi một tín hiệu điện áp vào dạng tương tự sang 10 bit giá trị số qua mạch xấp xỉ liên tiếp. Giá trị cực tiểu tương ứng với điện áp trên chân AGND và giá trị cực đại tương ứng với điện áp trên chân AREF trừ một bit LSB. Kênh vào tín hiệu tương tự được lựa chọn bằng việc ghi vào các bit MUX trong thanh ghi ADMUX. Bất kỳ chân nào trong 8 chân vào ADC (ADC7 . . 0) cũng có thể được lựa chọn là đầu vào tới ADC. Bộ ADC có thể hoạt động trong hai chế độ - chuyển đổi đơn và chạy tự do. Trong chế độ chuyển đổi đơn, mỗi sự chuyển đổi sẽ phải được bắt đầu bởi người sử dụng. Trong chế độ chạy tự do, ADC lấy mẫu và cập nhật thanh ghi dữ liệu ADC trong những khoảng thời gian cố định. Bit ADFR trong thanh ghi ADCSR lựa chọn giữa hai chế độ sẵn có này. Bộ ADC được cho phép bằng việc thiết lập bit ADEN trong thanh ghi ADCSR. Sự lựa chọn kênh vào sẽ không có hiệu lực cho đến khi bit ADEN được thiết lập. Bộ ADC không tiêu thụ năng lượng khi bit ADEN bị xoá, do vậy nên ngắt ADC trước khi chuyển sang chế độ nghỉ Power Save. Một sự chuyển đổi được bắt đầu bằng việc ghi giá trị logic 1 vào bit ADSC (ADC Start Conversion). Bit này giữ ở mức cao trong suốt quá trình chuyển đổi và sẽ được xoá bởi phần cứng khi quá trình chuyển đổi kết thúc. Nếu một kênh dữ liệu khác được chọn trong khi một quá trình chuyển đổi đang diễn ra thì ADC sẽ kết thúc sự chuyển đổi hiện tại trước khi thực hiện sự thay đổi kênh dữ liệu. Bộ ADC tạo ra một kết quả 10 bit được chứa trong thanh ghi dữ liệu ADC (ADCH và ADCL). Khi đọc dữ liệu, thanh ghi ADCL phải được đọc trước, tiếp theo là thanh ghi ADCH để đảm bảo rằng nội dung của thanh ghi dữ liệu thuộc về cùng một sự chuyển đổi. Mỗi lần thanh ghi ADCL được đọc, sự truy cập của ADC tới thanh ghi dữ liệu bị chặn lại. Điều này có nghĩa là nếu thanh ghi ADCL đã được đọc và một quá trình chuyển đổi hoàn thành trước khi thanh ghi ADCH được đọc thì không thanh ghi nào được cập nhật và kết quả từ sự chuyển đổi đó bị mất. Tiếp theo thanh ghi ADCH được đọc, sự truy cập của ADC đến các thanh ghi ADCH và ADCL được cho phép lại. Bộ ADC có ngắt riêng có thể được kích hoạt khi một quá trình chuyển đổi kết thúc. Khi sự truy nhập của ADC tới các thanh ghi dữ liệu bị cấm giữa việc đọc thanh ghi ADCH và ADCL, ngắt sẽ được kích hoạt cho dù nếu kết quả bị mất. Hình 2.29 : Mạch chia tần số của bộ ADC Mạch xấp xỉ liên tiếp yêu cầu một tần số đồng hồ vào trong khoảng từ 50kHz đến 200kHz để đạt được độ phân giải tối đa. Nếu độ phân giải thấp hơn 10 bit được yêu cầu thì tần số đồng hồ vào ADC có thể cao hơn 200kHz để đạt được một tốc độ lấy mẫu cao hơn. Trong ADC chứa một bộ chia tần số dùng để chia nhịp đồng hồ hệ thống thành tần số đồng hồ chấp nhận được cho ADC. Các bit ADPS2...0 trong thanh ghi ADCSR được sử dụng để tạo ra một tần số đồng hồ đầu vào ADC thích hợp từ bất kỳ tần số CPU nào ngoài 100kHz. Bộ chia tần số bắt đầu đếm từ thời điểm ADC được bật lên bằng việc thiết lập bit ADEN trong thanh ghi ADCSR. Bộ chia tần số tiếp tục đếm khi bit ADEN được thiết lập và thiết lập lại khi ADEN bị xoá. Khi bắt đầu một sự chuyển đổi bằng việc thiết lập bit ADSC trong thanh ghi ADCSR, quá trình chuyển đổi bắt đầu tại sườn lên tiếp theo của chu kỳ đồng hồ ADC. Một quá trình chuyển đổi thông thường mất 13 chu kỳ đồng hồ của ADC. Để chắc chắn, ADC cần thêm vài chu kỳ đồng hồ để khởi tạo và tối thiểu hoá số lỗi. Các sự chuyển đổi mở rộng chiếm 25 chu kỳ đồng hồ của ADC và thường là sự chuyển đổi đầu tiên sau khi ADC được bật lên (các bit ADEN và ADCSR được thiết lập). Quá trình lấy và giữ mẫu thực sự diễn ra tại thời điểm 1.5 chu kỳ đồng hồ ADC sau khi bắt đầu đối với quá trình chuyển đổi thông thường và 13.5 chu kỳ đồng hồ ADC sau khi bắt đầu đối với quá trình chuyển đổi mở rộng. Khi một quá trình chuyển đổi kết thúc, kết quả được ghi vào thanh ghi dữ liệu ADC và cờ ADIF được thiết lập. Trong chế độ chuyển đổi đơn, bit ADSC được xoá đồng thời. Phần mềm có thể sau đó thiết lập lại bit ADSC và một quá trình chuyển đổi mới sẽ được bắt đầu tại sườn lên đầu tiên của xung đồng hồ ADC. Trong chế độ hoạt động tự do, một quá trình chuyển đổi mới sẽ được bắt đầu tức thì sau khi một quá trình chuyển đổi kết thúc, khi bit ADSC vẫn giữ mức cao. Việc sử dụng chế độ hoạt động tự do và một tần số đồng hồ ADC 200kHz cho thời gian chuyển đổi thấp nhất với độ phân giải tối đa - 65ms, xấp xỉ 15kSPS. Bảng 2.25 : Thời gian chuyển đổi của bộ ADC Điều kiện Trích và giữ mẫu Thời gian chuyển đổi (Chu kỳ) Thời gian chuyển đổi (ms) Chuyển đổi mở rộng 14 25 125 - 500 Chuyển đổi thường 14 25 130 – 520 Chức năng khử nhiễu của bộ ADC Đặc trưng khử nhiễu của ADC cho phép sự chuyển đổi trong chế độ rỗi để giảm nhiễu được gây ra từ trong CPU. Để sử dụng đặc trưng này, nên thực hiện theo các bước sau: 1. Đảm bảo ADC được cho phép và không bận chuyển đổi. Chế độ chuyển đổi đơn phải được chọn và ngắt báo kết thúc quá trình chuyển đổi của ADC phải được cho phép. ADEN = 1 ADSC = 0 ADFR = 0 ADIE = 1 2. Chuyển vào chế độ rỗi (Idle). ADC sẽ bắt đầu một quá trình chuyển đổi ngay khi CPU đã tạm nghỉ. 3. Nếu không có ngắt nào khác xảy ra trước khi quá trình chuyển đổi của ADC kết thúc, thì ngắt của ADC sẽ đánh thức MCU và thực hiện thủ tục ngắt kết thúc chuyển đổi của ADC. Thanh ghi lựa chọn kênh đầu vào cho bộ ADC : ADMUX Bit 7...3 : Không sử dụng. Bit 2...0 - MUX2...MUX0 : Các bit chọn kênh Analog (Analog Channel Select Bits) Giá trị của 3 bit này sẽ lựa chọn chân vào tín hiệu tương tự nào ADC7...0 được kết nối với ADC. Xem bảng 2.26 để biết chi tiết. Nếu các bit này bị thay đổi trong thời gian chuyển đổi, sự thay đổi sẽ không có hiệu quả cho đến khi quá trình chuyển đổi này kết thúc (ADIF trong ADCSR được thiết lập). Bảng 2.26 : Sự lựa chọn các kênh đầu vào MUX2..0 Đầu vào ADC 000 ADC0 001 ADC1 010 ADC2 011 ADC3 100 ADC4 101 ADC5 110 ADC6 111 ADC7 Thanh ghi điều khiển và trạng thái của ADC : ADCSR Bit 7 - ADEN : Bit cho phép bộ chuyển đổi ADC (ADC Enable) Việc ghi giá trị logic 1 vào bit này cho phép ADC hoạt động. Bằng việc xoá bit này, ADC bị tắt. Việc tắt ADC trong khi một quá trình chuyển đổi đang diễn ra sẽ chấm dứt quá trình chuyển đổi này. Bit 6 - ADSC : Bit bắt đầu chuyển đổi (ADC Start Conversion) Trong chế dộ chuyển đổi đơn, một giá trị logic 1 phải được ghi vào bit này để bắt đầu mỗi sự chuyển đổi. Trong chế độ hoạt

Các file đính kèm theo tài liệu này:

  • docDA2052.doc
Tài liệu liên quan