Phối ghép với thế giới tương tự:

Một phần của tài liệu Kỹ thuật vi xử lý - Chương 9 docx (Trang 34 - 47)

Việc phối ghép hệ vi xử lí và các thiết bị làm việc với các đại lượng tương tự là một nhu cầu rất hay gặp trong thực tế đời sống cũng như trong công nghiệp. Các phần tử mà hệ vi xử lí cần phải phối ghép thường là các đầu đo (bộ cảm biến hoặc bộ biến đổi) ở đầu vào và các cơ cấu kết thành ở các loại ởđầu ra . để ghép nối các thiết bị như vậy, thông thường ta phải cần đến các bộ chuyển đổi tương tự số (analog to digital converter :ADC). Các bộ chuyển đổi số tương tự (digital to analog converter: DAC). Trong một số trường hợp cụ thể ta còn cần đến một số thiết bịđiện tử chuyên dụng khác: Bộ khuyếch đại đo, bộ chuyển mạch tương tự (bộ dồn kênh hoặc phân kênh tương tự) mạch so sánh số, mạch trích mẫu và giữ mẫu, khuyếch đại công suất ... Aïp suất Nhiệt độ Độ ẩm Độ PH mức Tốc độ DAS DAS Cổng vào Các đầu do

DAS: hệ thu nhập dữ liệu

Các thiết bị trên thường được ghép nối với nhau để tạo thành các hệ thu thập dự liệu (data acquisition system: DAS) các bộ điều khiển, các thiết đo lường cao cấp, các thiết bị xử lí dữ liệu thời gian thực ... tất cả được sử dụng rộng rãi trong công nghiệp cũng như trong đời sống.

Ta sẽ không đi sâu vào từng mạch phối ghép trong các thiết bị cụ thể mà chỉ nêu ở đây sơ đồ khối của một hệ thống điều khiển dựa trên cơ sở vi xử lí như là một ví dụđại diện (hình 9.16)

Hệ thu thập dữ liệu có nhiệm vụ phối ghép các bộ cảm biến về mặt diện (phối hợp trở kháng, khuếch đại mức tín hiệu...) và biến các tín hiệu thu được từ dạng tương tự sang dạng số để CPU có thể đọc vào và xử lí. Bàn phím và màn hình là 2 thiết bị vào /ra truyền thống. Tùy theo quy mô và tính chất công việc, chúng có thể là các thiết bị rất đơn giản như bàn phím hệ 16 và các đèn hiện thị LED, LCD hoặc phức tạp như bàn phím và màn hình giống như trong các máy vi tính thực thụ.

Bộ vi xử lí ở đây thường là loại chuyên dụng, được chế tạo đặc biệt cho các công việc trong điều khiển. (ví dụ : Như các vi mạch 8051, 8096 hoặc 80186 của INTEL) chương trình viết cho CPU thông thường là để thực hiện các thao tác điều khiển của các khối chức năng theo kiểu tỷ lệ/ tích phân/ vi phân (PID) bằng phương pháp số. Một điểm đặc biệt nữa là trong hệ thống điều khiển thường có một đồng hồ thời gian thực (RTC) để hệ thống có thể thực hiện các yêu cầu điều khiển theo thời gian thực.

Các cơ cấu chấp hành thường là loại số hay tương tự . Cơ cấu chấp hành số thường là các khóa điện tử hoặc khóa cơ điện dùng đểđóng/ ngắt cắt mạch cúp điện cho đối tượng cần điều khiển, vì vậy các cơ cấu này chỉ cần được cấp tín hiệu lôgic thích hợp là được. Các cơ cấu chấp hành tương tự cần được nối vưói hệ vi xử lí qua các bộ chuyển đổi DAC và kèm theo các bộ khuếch đại công suất để thực hiện các thao tác điều khiển do bộ vi xử lý đưa đến.

5. Phối ghép CPU với mạch đếm/ định thời gian 8254 (8253)

Mạch định thời gian lập trình được 8254/8253 là một mạch phụ rất quan trọng tring các hệ vi xử lí của Intel. Nó có thể dễđáp ứng được các yêu cầu ứng dụng khác nhau trong hệ vi xử lý : đếm thời gian, đếm sự kiện, chia tần số, tạo ra dãy xung ...

Sơ đồ khối của vi mạch 8254 và cách phối ghép với CPU được thể hiện trên hình 9.17 .

Các tín hiệu của vi mạch 8254 có tên và ý nghĩa giống như của 8088 nên khá quen thuộc và ta sẽ không cần giải thích nhiều nữa. Chân chọn vỏ của vi mạch 8254 phải được nối với đầu ra của một bộ giải mã đểđịnh địa chỉ cơ bản cho mạch . Cùng với địa chỉ cơ bản, các chân địa chỉ A1 và A0 sẽ cung cấp địa chỉ cụ thể của các thanh ghi ở bên trong mạch 8254 khi ghi (lập trình) hoặc dọc thông tin của mạch (xem ảnh 9.1). Đó là 3 thanh ghi cho 3 bộđếm và 1 thanh ghi cho từđiều khiển .

Theo sơ đồ khối ta thấy trong vi mạch 8254 có 3 bộđếm lùi 16 bit, nội dung ban đầu của mỗi bộđếm đều coa thể lập trình từ CPU để thay đổi được. Ngoài ra ta còn có thểđiều khiển được hoạt động của các bộđếm bằng tín hiệu từ bên ngoài qua các chân cửa (GATE) để cho phép bắt đầu đếm (Gate = 1) hay để buộc kết thúc quá trình đếm (Gate = 0).

Bánh 9.1. chọn các thanh ghi bên trong 8254

A1 A0 Chọn ra 0 0 1 1 0 1 0 1

Thanh ghi cho bộđếm số 0 Thanh ghi cho bộđếm số 1 Thanh ghi cho bộđếm số 2 Thanh ghi từđiều khiển

* Khởi đầu cho 8254

Cũng như các vi mạch lập trình được khác phụ trợ cho CPU đã nói từ trước tới nay, sau khi bậc điện mạch 8254 phải được khởi đầu để có thể hoạt động theo đúng yêu cầu. Một điều cần chú ý là trạng thái của 8254 sau khi bật điện là không xác định.

Để khởi đầu cho mạch 8254 ta phải ghi từ điều khiển vào thanh ghi từ điều khiển của nó. Dạng thức từđiều khiển của 8254 được biểu hiện trên hình 9.18

Ghi/đọc :

00: lệnh chốt bộđếm 01: chỉđọc/ ghi byte LSB

10: chỉđọc/ ghi byte MSB 0: bộđếm HEX 4 số 11: đọc/ghi byte LSB, tiếp theo là MSB 1: bộđếm BCD 4 số

D7 D6 D5 D4 D3 D2 D1 D0 SC1 SC0 RW1 RW0 M2 M1 M0 BCD RD Login WR điều A0 khiển A1 ghi/đọc Clk Gate Out Clk Gate Out Gate Out Clk o 1 2 o o 1 1 2 2 Cx Đệm Bus Dữ liệu Bộ đệm 0 Bộ đệm 1 Bộ đệm 2 Thanh ghi từ Diều khiển D0-D7 CPU RD WR A0 A1 A2-A15 Hình 9.17. Sơđồ khối vi mạch 8254

Chế độ

Chọn bộ đếm 000:chếđộ 0-Tạo yêu cầu ngắt khi đếm hết 00:để chọn bộđếm 0 001:chếđộ1-Đa hài đợi lập trình được 01: để chọn bộđếm 1 010: chếđộ 2 - bộ chia tân số cho N 10:để chọn bộđếm 2 011:chếđộ 3- Tạo xung vuông 11: để ra lệnh đọc ngược 100:chếđộ 4-Tạo xung cho phép mềm

101:chếđộ 5-Tạo xung cho phép cứng

Hình 9.18.Dạng thức thanh ghi từ điều khiển của vi mạch 8254.

Thanh ghi từđiều khiển dùng để chứa từđiều khiển cho cả 3 bộđếm với các bit SC1 - SC0 (theo mã hệ 2 ) ta có thể chọn ra bộ đếm để làm việc theo cách thức do từđiều khiển quyết định. Trường hợp đặc biệt khi SC1 - SC0 = 11 ta có thể dùng lệnh đọc ngược để đọc được nội dung hoặc trạng thái của bộ đếm trong thời gian hiện tại.

Các bộđếm của mạch 8254 đều làm việc ở chếđộ đếm lùi. Như vậy số đếm lớn nhất mà ta có thểđưa vào để bắt đầu đếm là 10.000H hoặc 10.000, vì sau khi lùi 1 ta có nội dung mới của bộ đếm là FFFFH hoặc 9999 tùy theo bit BCD = D0 là 0 hoặc 1 .

Các bit M2 M1 M0 sẽ xác định các chếđộ làm việc của các bộđếm, trong đó các đầu vào GATE có những átc động khác nhau đến các đầu ra OUT . Mạch 8254 có tất cả 6 chếđộ làm việc và các chếđộ này được đánh số từ 0-5 .

Các bit RW1 RW0 cho phép chọn cách thức ghi /đọc với các bộđếm. Ta có thể ghi / đọc tách riêng từng byte của bộđếm. Nếu muốn ghi/đọc liên tiếp 2 Byte của bộ đếm thì ta phải tuân theo thứ tự : Byte thấp trước và tiếp theo là Byte cao .

Các chế độ làm việc của 8254 (adsbygoogle = window.adsbygoogle || []).push({});

Các chếđộ làm việc của 8254 được mô tả rõ nhất thông qua các biểu đồ thời gian (soạn theo tài liệu tra cứu của Intel) . Trong khi xem các biểu đồđó ta chú ý các quy định và các kí hiệu sau :

1. Các bộ đếm được lập trình để làm việc theo hệ 16 và ở chế độ chỉ đọc/ ghi LSB của sốđếm .

2. CW : Từđiều khiển biễu diễn theo hệ 16. 3. Các con số nằm dưới đồ thị thời gian

- N : số bất kì - Số trên : Cho MSB - Số dưới: cho NSB

Chế độ 0 - tạo yêu cầu ngắt khi đếm xong (Terminal count: TC)

Tại đường biểu diễn xung WR có các giá trị CW và LSB ứng với thời điểm xung ghi tích cực. Đó chính là các thời điểm để ghi từ thời điểm CW cho mạch và Byte thấp của sốđếm cho bộđếm đã chọn.

Tại nhóm xung thứ nhất, CW = 10H tức là ta muốn định nghĩa chếđộ 0, chỉđọc/ghi LSB và chếđộđếm theo hệ 16 cho bộđếm số 0. Sau khi ghi từđiều khiển vào thanh ghi từ điều khiển thì OUT = 0. Tiếp theo ta ghi LSB = 4 là phần thấp của số đếm cho bộ đếm. Giá trị này sẽ được chuyển vào bộ đếm ở chu kỳ đồng hồ sau. Lúc này GATE = 1 nên từ đây là bắt đầu của quá trình đếm ngược. Khi bộđếm đạt tới 0 thì OUT = 1. Điều đó có nghĩa là nếu ta nạp vào LSB = N thì sau N + 1 xung đồng hồ ta có OUT = 1. Ta cũng nhận thấy rằng bộ đếm sau khi đạt 0000H thì sẽ tiếp tục đếm lùi từ FFFFH nếu như nó không nạp giá trị đếm mới. Xung OUT có thểđược dụng như là xung yêu cầu ngắt đối với CPU để báo là đã đạt được sốđếm (TC)

Tại nhóm xung thứ 2 ta thấy được tác dụng của xung điều khiển cửa GATE. Khi bộđếm đang làm việc mà GATE = 0 thì nội dung của bộđếm được giữ không đổi cho đến khi GATE = 1, lúc này bộđếm lại tiếp tục đếm lùi.

Tại nhóm xung thứ 3 ta thấy được hoạt động của bộ đếm khi nó đang đếm mà ta có xung điều khiển nạp nội dung số đếm mới. Nội dung mới chỉ được đưa đến bộ đếm tại xung đồng hồ tiếp theo. Sau đó bộ đếm lại tiếp tục đếm lùi với sốđếm mới.

Chế độ 1 - Đa hài đợi với thời gian lập trình được

Ta đã gặp các mạch đa hài đợi (đa hài một trạng thái ổn định) với hằng số thời gian do chỉ số của các linh kiện R và C quyết định. Mạch 8254 ở chếđộ 1 có khả năng làm việc như 1 mạch đa hài đợi nhưng với hằng số thời gian lập trình được tỉ lệ vưói chu kỳ xung đồng hồở đầu vào.

Biểu đồ thời gian của 8254 ở chếđộ 1 được thể hiện trên hình 9.20

WRClk Clk GATE CW=10 CLB=4 N N N N FF 0 0 0 0 FF FF 0 2 1 FF 3 OUT 0 4 WR Clk GATE CW=10 CLB=4 N N N N FF 0 0 0 0 FF FF 0 2 1 FF 3 OUT 0 4

Hình 9.19. Thí dụ biểu đồ thời gian của 8254 ở chế độ 0

Tại nhóm xung thứ nhất CW = 12H tức là ta muốn định nghĩa chếđộ chỉ đọc/ ghi LSB và chế độ đếm theo hệ 16 cho bộ đếm 0. Sau khi ghi từ điều khiển vào thanh ghi từ điều khiển thì OUT = 1. Tiếp theo ta ghi LSB = 3 là phần thấp của sốđếm cho bộđếm. Giá trị này sẽđược chuyển vào bộđếm. Lúc này GATE = 0 nên bộđếm không làm việc . Khi xung kích GATE = 1 thì bộ đếm được xuất phát để bắt đầu làm việc ở chu kỳđồng hồ sau .

Từđây OUT = 0 và bắt đầu quá trình đếm ngược khi bộ đếm đạt tới 0 thì OUT = 1. Điều đó có nghĩa là nếu ta nạp vào LSB = N và GATE = 1 thì OUT = 0 trong N xung đồng hồ. Đường dứt nét biểu hiện là GATE có thể có giá trị 0 bất kỳ lúc nào trong thời đoạn này. Ta cũng nhận thấy rằng bộđếm sau khi đạt 0000H thì sẽ tiếp tục lùi từ FFFFH nếu như nó không được nạp giá trị đếm mới. Và mỗi khi có xung GATE = 1 thì nó lại tạo ra xung OUT = 0 kéo dài N xung đồng hồ.

Tại nhóm xung thứ 2 ta thấy được tác dụng của xung điều khiển ở cửa GATE để tạo ra khả năng kích lặûp lại được của bộđếm. Khi bộđếm đang làm việc và chưa đạt được số đếm mà có xung GATE = 1 thì số đếm cũ được nạp lại cho bộ đếm ở chu kỳđồng hồi sau. Từ lúc này bộ đếm lại tiếp tục đếm lùi. OUT = 0 cho tới khi đến hết .

Tại nhóm xung thứ 3 ta thấy được hoạt động của bộ đếm khi nó đang đến số OUT = 0 mà ta có xung điều khiển nạp sốđếm mới. Nội dung mới chỉ được đưa đến bộđếm tại xung đồng hồ tiếp theo sau khi có xung GATE = 1.

Chế độ 2 - Tạo ra xung có tần số Fin /N

Biểu đồ thời gian của chếđộ 2 được biều hiện trên hình 9.21

Tại nhóm xung thứ nhất CW = 14H tức là ta muốn định nghĩa chếđộ 2 chỉ đọc /ghi LSB và chế độ đếm theo hệ 16 cho bộ đếm số 0 . Sau khi ghi từ điều khiển vào thanh ghi từ điều khiển thì OUT = 1. Tiếp theo ta ghi LSB = 3 là phần thấp của sốđếm cho 1 bộđếm . Giá trị này sẽđược chuyển vào bộđếm tại xung đồng hồ sau. Lúc này GATE = 1 nên bộđếm bắt đầu làm việc. Từđây bắt đầu quá trình đếm nưgợc. Khi bộđếm đạt tới 1 thì OUT = 0 trong thời gian

1 xung đồng hồ và quá trình đếm lại được bắt đầu với OUT = 1 và với sốđếm cũ. Điều đó có nghĩa là sau khi ta nạp LSB = N vào bộđếm thì cứ sau N xung đồng hồ, ta có ởđầu ra OUT = 0 trong thời gian 1 xung đồng hồ.

Tại nhóm xung thứ 2 ta thấy được tác dụng của xung điều khiển cửa GATE đối với bộđếm. Khi bộđếm đang làm việc và chưa đạt được sốđếm mà có xung GATE = 0 thì giá trị hiện thời của bộ đếm cũđược giữ nguyên trong suốt thời gian GATE = 0. Khi GATE = 1 thì bộđếm lại tiếp tục đếm lùi.

Tại nhóm xung thứ 3 ta thấy được hoạt động của bộ đếm khi nó đang đếm và chưa đạt sốđếm mà at có xung điều khiển nạp sốđếm mới. Ta thấy bộ đếm vẫn tiếp tục vưói số đếm cũ, chỉ tớïi khi bộđếm đã đếm đến 1 thì số đếm mới được áp dụng .

Chế độ 3 - tạo ra dãy xung vuông

Biều đồ thời gian của chếđộ 3 được thể hiện trên hình 9.22

Tại nhóm xung thứ nhất CW = 16H tức là ta muốn định nghĩa chếđộ 3, chỉ đọc/ ghi LSB và chếđộ đếm theo hệ 16 cho bộ đếm số 0. Sau khi ghi từ điều khiển vào thanh ghi từ điều khiển thì OUT = 1. Tiếp theo ta ghi LSB = 4 là phần thấp của số đếm cho bộđếm. Giá trị này sẽđược chuyển vào bộ đếm tại xung đồng hồ sau. Lúc này GATE = 1 nên bộ đếm bắt đầu ngay quá trình đếm ngược. Khi bộđếm đạt tới (4/2) = 2 thì OUT = 0 trong thời gian (4/2) = 2 xung đồng hồ còn lại và quá trình đếm lại được bắt đầu với OUT = 1 và vưói số đếm cũ. Điều đó có nghĩa là sau khi ta nạp LSB = N (số chẵn) vào bộđếm thì cứ sau N xung hồ ta có OUT = 1 trong N/2 xung đồng hồ và OUT = 0 trong N/2 xung đồng hồ còn lại.

Tại nhóm xung thứ 2 ta thấy các bộđếm làm việc trường hợp sốđếm N là số lẻ (N = 5). Sau khi ta nạp LSB = N vào bộđếm thì cứ sau N xung đồng hồ ta có OUT = 1 trong (N/2)+1 xung đồng hồ và OUT = 0 trong N/2 xung đồng hồ còn lại.

Tại nhóm xung thứ 3 ta thấy được hoạt động của bộ đếm khi nó đang đếm mà ta có xung GATE = 0. Ta thấy bộđếm không thay đổi nội dung chừng nào còn có GATE = 0 . Sau khi GATE = 1 nó lại tiếp tục đếm lùi từ giá trị hiện

(adsbygoogle = window.adsbygoogle || []).push({});

Một phần của tài liệu Kỹ thuật vi xử lý - Chương 9 docx (Trang 34 - 47)