Các cổng vào/ra rời rạc

Một phần của tài liệu NGHIÊN CỨU ỨNG DỤNG EMBEDDED OS VÀO BÀI TOÁN GIÁM SÁT TRẠM VỆ TINH (Trang 36 - 40)

Chương 2 Kiến trúc của hệ điều hành nhúng

2.12 Các cổng vào/ra rời rạc

Các cổng vào và cổng ra rời rạc (I/O) có mặt trong hầu hết các hệ thống giám sát và/hoặc điều khiển. Thuật ngữ “rời rạc” phản ánh sự thật thật rằng các đầu vào chỉ chấp nhận một trong hai mức trạng thái. Ví dụ:

- 1 hoặc 0

- TRUE hoặc FALSE - ON hoặc OFF

- ENABLED hoặc DISABLED - PRESENT hoặc ABSENT - …

Hình 2-12 Các đầu vào rời rạc

Như chỉ ra trong Hình 2-11, các đầu vào rời rạc thường được dùng để giám sát trạng thái của các chuyển mạch điều khiển bằng tay, các chuyển mạch áp suất (áp suất có vượt quá hay không), các chuyển mạch nhiệt độ (nhiệt độ có vượt quá hay không), chuyển mạch giới hạn (thiết bị có đạt mức giới hạn của nó hay không), rơ-le tiếp xúc (mở hay đóng), các bộ phát hiện trạng thái ở gần (ở đó hay không ở đó), vv.

Các đầu vào rời rạc thường được dùng để xác định trạng thái của một đầu vào. Tuy nhiên, trong một số ứng dụng, bạn cần phải biết liệu rằng đầu vào rời rạc có phải vừa thay đổi trạng thái hay không, và có thể là nó đã thay đổi bao nhiêu lần.

Các đầu ra rời rạc thường dùng để điều khiển đèn, rơ-le, quạt, còi báo động, bếp sưởi, van,.. (Xem Hình 2-12). Một đầu ra rời rạc thường ở trạng thái này hoặc trạng thái kia. Một ánh đèn nhấp nháy khác với một đèn luôn ở trạng thái BẬT, nó hiệu quả hơn trong việc lưu ý người dùng về một trạng thái lỗi.

Chương này mô tả một module giám sát các đầu vào rời rạc và điều kiển các đầu ra rời rạc. Module cho phép tới 250 đầu vào và 250 đầu ra. Với mỗi đầu vào rời rạc module cung cấp các khả năng:

- Xác định đầu vào là 1 hay 0

- Xác định sự chuyển đổi từ 1 sang 0 hay từ 0 sang 1 ở đầu vào

- Xác định đã có bao nhiêu chuyển đổi từ 1 sang 0 hay từ 0 sang 1 ở đầu vào - Mô phỏng một công tắc đóng mở với một công tắc tiếp xúc tạm thời

- Bỏ qua phần cứng phục vụ cho các mục đích gỡ lỗi Với mỗi đầu ra rời rạc, module cung cấp các khả năng:

- Bật tắt đầu ra

- Nhấp nháy đầu ra theo tốc độ người dùng định trước (mỗi tốc độ cho mỗi đầu ra)

- Bỏ qua mã ứng dụng để điều khiển đầu ra trong quá trình gỡ lỗi

Hình 2-13 Các đầu ra rời rạc

2.12.1 Các đầu vào rời rạc

Đọc các đầu vào rời rạc là một công việc khá đơn giản. Chỉ cần cung cấp các đầu vào rời rạc cần đọc tại các đường vào song song của bộ vi xử lý. Bộ vi xử lý chỉ cần đọc các cổng vào, đặt mặt nạ giấu đi các cổng không cần thiết, và đưa ra kết quả dựa và trạng thái của đầu vào.

Mặt nạ là một giá trị 8-bit nhằm lựa chọn các bít cần đọc. Ví dụ, để đọc trạng thái của bít 4 (các bít được đánh số từ 0 đến 7 theo thứ tự từ phải sang trái), mặt nạ sẽ là 0x10. Với một hàm như trên, mã chương trình sẽ chỉ hơi chậm và kích thước mã sẽ tăng lên một chút nhưng lợi ích thu được lại rất lớn. Nó cho phép thay đổi phần cứng bao nhiêu lần cũng được mà mã chương trình giữ nguyên không đổi. Bằng cách đóng gói phần truy nhập phần cứng, chúng ta cũng có thể xử lý các trường hợp trong đó một số đầu vào bị đảo trạng thái bởi phần cứng và vẫn trả đúng trạng thái đến cho mã ứng dụng. Nói cách khác, nếu một đầu vào được coi là có mức logic 0 khi nó ở trạng thái cao (HIGH) thì hàm DIGet() sẽ đảo giá trị của đầu vào đọc được và trả về 0 tới mã ứng dụng.

Sử dụng bộ ghép chọn dữ liệu vào 74251 (xem Hình 2-13) trong phần cứng cho phép tăng số lượng đầu vào rời rạc dễ dàng chỉ bằng cách thêm vào các con 74251 khác.

Hình 2-14 Đọc các đầu vào rời rạc sử dụng 74251

Hình 2-15 Kênh đầu vào rời rạc

Module I/O rời rạc trong chương này cho phép người dùng cấu hình bất kỳ đầu vào rời rạc nào. Mỗi đầu vào rời rạc được coi là một kênh logic. Module cho phép đến 250 kênh. Hình 2-14 mô tả biểu đồ luồng của một kênh đầu vào rời rạc. Trong hình vẽ các ký hiệu điện được dùng để mô tả các chức năng, nhưng tất nhiên trên thực tế mọi chức năng này đều được thực hiện trong phần mềm.

2.12.2 Các đầu ra rời rạc

Cập nhật các đầu ra rời rạc cũng tương đối dễ dàng, tuy nhiên đòi hỏi một chút khéo léo hơn so với cập nhật đầu vào rời rạc. Chỉ cần cung cấp đủ các đầu ra rời rạc tại các đường vào song song của bộ vi xử lý. Cũng như với trường hợp đầu vào rời rạc, giải pháp ở đây cũng dùng một lớp phần mềm giữa phần mã ứng dụng và phần cứng. Nó giúp cho ứng dụng không phụ thuộc vào phần cứng và cách truy cập phần cứng, dễ dàng chuyển đổi sang dùng phần cứng khác bằng cách thay đổi các hàm giao diện. Có thể có hai trường hợp xảy ra: hoặc là có thể đọc lại nội dung của các cổng ra (với Intel 8255A hoặc Motorola 6821) hoặc là cổng chỉ ghi (với 7427333, 74373,vv). Hình 2-15 mô tả một ví dụ phần cứng cập nhật các đầu ra rời rạc sử dụng 74259.

Hình 2-16 Cập nhật các đầu ra rời rạc sử dụng 74259

Module I/O rời rạc trong chương này cho phép người dùng điều khiển bất kỳ đầu ra rời rạc nào, và cũng có thể nhấp nháy bất kỳ đầu ra nào. Mỗi đầu ra rời rạc được coi là một kênh logic. Module cho phép đến 250 kênh. Hình 2-16 mô tả biểu đồ luồng của một kênh đầu ra rời rạc. Trong hình vẽ các ký hiệu điện được dùng để mô tả các chức năng, nhưng tất nhiên trên thực tế mọi chức năng này đều được thực hiện trong phần mềm.

Hình 2-17 Kênh đầu ra rời rạc

Một phần của tài liệu NGHIÊN CỨU ỨNG DỤNG EMBEDDED OS VÀO BÀI TOÁN GIÁM SÁT TRẠM VỆ TINH (Trang 36 - 40)

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

(91 trang)
w