Skip to content
Bạn đang ở: Trang chủ Đào tạo Đào tạo thạc sĩ Giáo trình & bài giảng Tin học Vật lý - Bài 5 Card ghép nôi UIB
Tin học Vật lý - Bài 5 Card ghép nôi UIB In Email
Viết bởi Vu Anh Minh   
Thứ bảy, 14 Tháng 3 2009 07:49

 Để tiến hành ghép nối, card ghép nối hay các board ghép nối là phần cứng thiết yếu đóng vai trò trung gian, cửa ngõ giữa máy tính và các thiết bị ngoại vi, có thể là một thiết bị chấp hành, một thiết bị đo,...card hay board ghép nối có thể được cài đặt (install) trong máy tính cá nhân hay qua các giao tiếp thông thường của máy tính như cổng usb, cổng nối tiếp COM hay cổng máy in song song LPT. Trong bài học này chúng ta sẽ tìm hiểu một card ghép nối chuyên dụng dùng trong các bài thực tập tại ITIMS, card ghép nối vạn năng UIB (Univesal Inteface Bus)

CARD GHÉP NỐI UIA/UIB

Để thực hiện các ứng dụng máy tính liên quan tới các hệ thống đo và điều khiển, Các máy tính PC (kiểu MS-DOS) cần card mở rộng không phải là các card chuẩn đi kèm với các máy tính. Card ghé nối vạn năng UIA/UIB kết hợp các mạch điện cần thiết để thực hiện hầu hết các chức năng đo lường, điều khiển cho các ứng dụng cơ bản.
 
Card UIA / UIB được thực hiện tại khoa Vật Lý trường Đại học tổnghợp Amsterdam ( Hà lan). Khoa này đã thực hiện các phát triển ứng dụng các thực nghiệm trên cơ sở máy tính rất sớm (từ năm 1982). Hợp tác với các kỹ thuật viên, nhà vật lý chuyên gia đào tạo và giáo viên, thiết kế đầu tiên của UIA ra đời năm 1987. Từ năm 1988 card ghép nối vạn năng UIA đã được sử dụng trong hàng trăm trường học tại Hà lan. Bộ tương hợp UIA đã trở thành chuẩn cho việc liên kết các thí nghiệm với các máy tính PC (nền DOS).
Card mở rộng UIB là version cải tiến của UIA. cải tiến quan trong nhất là ở các lối vào tương tự. Bộ chuyển đổi ADC kiểu 12 bít ( 8 bít trong UIA), chứa các chức năng trích và giữ mẫu nhanh hơn rất nhiều. Giải điện áp lối vào cũng được cải thiện đối với mức thế âm. Nhữnng cải tiến này làm tăng tính ứng dụng của các bộ tương hợp này


CÁC LINH KIỆN CHÍNH TRÊN CÁC UIA :
- 8255 PPI (Programable Peripheral Interface) : Gồm 24 đường I/O có thể sử dụng trong nhiều MODE tổ hợp vào ra khác nhau.
- 8254 PIT (Programable Interval Timer ) IC này có 3 bộ đếm 16 bít độc lập có thể sử dụng để tạo ra các xung và sóng vuông với tần số có thể lập trình được
- Công tắc mềm : Để thiết lập cấu hình các bộ đếm (định thời) và các phương án ngắt có thể được thiết lập bằng các lệnh chương trình
- Nguồn xung nhịp nội (1MHz – 4MHz, chọn bằng JUMPER) : Cho phép dịnh thời 8254 độc lập với đồng hồ hệ thống của máy tính.
- ADC0844 cùng với bộ tiền khuyếch đại, để chuyển đổi AD, có bốn kênh cho điện áp giữa 0 và 5 V ( kênh 1 và 2) hay giữa 0 và 1 V (kênh 3 và 4). Chuyển đổi thế tương tự thành số 8 bít mất 40 s

Hình vẽ :(Hình 2.3_trang 15 - Lưu đồ khối của UIB )

THÀNH PHẦN CHÍNH CHO CARD UIB :
- 82C55 PPI (Programable Peripheral Interface) : Gồm 24 đường I/O có thể sử dụng trong nhiều MODE tổ hợp vào ra khác nhau.
- 8C254 PIT (Programable Interval Timer ) IC này có 3 bộ đếm 16 bít độc lập có thể sử dụng để tạo ra các xung và sóng vuông với tần số có thể lập trình được
- Công tắc mềm : Để thiết lập cấu hình các bộ đếm (định thời) và các phương án ngắt có thể được thiết lập bằng các lệnh chương trình.
- Nguồn xung nhịp nội (1MHz – 4MHz, chọn bằng JUMPER) : CHo phép dịnh thời 82C54 độc lập với đồng hồ hệ thống của máy tính.
- ADS7803 và tiền khuyếch đại : CHuyển đổi tương tự số với bốn lối vào tín hiệu tương tự. Các kênh 1 và 2 có thể hoạt động với giải điện áp từ –5 đến +5V, với các kênh 3 và 4 giải điện áp vào có thể đặt qua JUMPER từ –1 đên +1V hay –2V đến +2V; -5 V đến +5V và -10V đến +10V. Quá trình chuyển đổi một điện áp tương tự ra mã số 12 bít mất khoảng 10 s.

Điều khiển ADC :
Đơn vị điều khiển kích hoạt chuyển đổi AD
Mỗi kênh này có thể được khởi động quá trình chuyển đổi bằng lệnh chương trình (phần mềm) hay khởi động bằng lối ra xung của bộ đếm 0 với từng kênh xác định
Thanh ghi bổ trợ :
a/ Chọn mức tích cực cho cổng GATE1
b/ Bật hay tắt nguồn cung cấp điện áp +5V trên đầu cắm 9 chân.

ADC TRÊN CARD GHÉP NỐI UIA/UIB
Có sự khác biệt giữa UIA và UIB
UIA : ADC0844 là bộ chuyển đổi AD với lối vào multiplexer 4 kênh tín hiệu tương tự. Các lối vào tương tự của của card UIA được đệm (kênh 1 và 2) hay được tiền khuyếch đại ( kênh 3 và 4 ). Theo cách này khoảng thế lối vào ở kênh 3 và 4 là từ 0 – 1 V. Tín hiệu giữ chặt trong khoảng thế vào của ADC. Tất cả các kênh có trở kháng vào cỡ 100K.
Thời gian chuyển đổi cỡ 40 s. Điện áp 5V có thể sai lệch khoảng +-0.2 V (4.8 – 5.2 V)
hình vẽ :
Các MODE ADC : Bằng cách viết ra từ điều khiển lên địa chỉ của ADC, ADC có thể được lập trình ở các MODE khác nhau. Khuôn dạng của từ điều khiển theo bảng dưới đây
 

Khuôn dạng từ điều khiển cho kênh/MODE ( địa chỉ 0x308)
Bốn bít thấp của từ điều khiển viết ra chốt địa chỉ MUX (multiplexer). Các bít này xác định hai kênh nào được chọn và các điện áp tương ứng sẽ có dấu như thế nào (dương hay âm). Qua bộ cộng thế, những thế này sẽ được kết hợp và sau đó xử lý bởi bộ chuyển đổi ADC. ( giáo trình Tin học I phần II - phòng thí nghiệm máy tính – Trung tâm ITIMS)

MODE đơn cực là MODE thường dùng, ý nghĩa của nó là từ điều khiển quyết định chọn kênh chuyển đổi ADC. Sau khi viết từ điều khiển, quá trình chuyển đổi được tự động bắt đầu. Kết quả có thể được đọc sau 40 s. Trong MODE này chu kỳ giữa một kênh xác định và đất tương tự (AGND) được chuyển đổi bởi ADC.
Với trường hợp outportb(0x308) = 4; // 0000 0100 thế của kênh 1 ( tương đối so với AGND) được chuyển đổi thành giá trị byte tương đương.
Trong MODE vi sai, ADC chuyển đổi chu kỳ giữa hai kênh ( điẹn áp so sánh ).
MODE giả vi sai có thể nói chung thường không được sử dụng chính xác, vì sự khác biệt về độ nhạy giữa các kênh.

UIB : ADS7803 :
Hình vẽ :
ADS7803 chứa bộ chuyển đổi ADC 12 bít với mạch lấy mẫu tín hiệu và giữ mẫu trực tiếp trước quá trình chuyển đổi. Đây là một bộ MUTIPLEXER 4 kênh vào tươngtự. ADS7803 dùng phương pháp xấp xỉ liên tiếp, mức điẹn áp vào được số hoá thành 12 bước xấp xỉ liên tiếp ( 12x0,5 s). Phần cứng cho phép lấy mẫu ở tốc độ 100kHz. Tín hiệu vào với tần số đên 50kHz có thể đo được.
Khoảng thế vào của ADS7803 là 0 đến 5V. Mỗi lối vào đều được tiền khuyếch đại. Với kênh 1 và 2 của lối vào cáp 9 chân giải điện áp từ –5V đến 5V. Giải điện áp cho kênh 3 và 4 là được lựa chọn bằng JUMPER từ –1V đên + 1V hay –2V đến + 2V ; -5 V đến + 5V hoặc –10V đến + 10V). Các lối vào đều có trở kháng 100K
Mức thế thấp nhất trong giải điện áp vào là nhận giá trị số là 0 trong khi mức cao nhất (mức trên) ở giá trị số là 4095.

Khởi tạo quá trình chuyển đổi nhờ sườn lên của lối vào khởi động (Sart Conversion) với một tín hiệu hợp lệ từ lối vào kênh giải mã và đường chọn chip (CS). Kênh chuyển đổi tương tự được chọn để lấy mẫu tín hiệu mất 5 chu kỳ xung nhịp. Một phép chuyển đổi xấp xỉ liên tiếp sẽ tiến hành trong chu kỳ 6 đến 17.

Đọc dữ liệu : Dữ liệu từ ADS7803 được đọc trong hai byte : byte thấp ( địa chỉ 0x308) và byte cao ở 0x309. Các byte này có thể đọc theo bất kỳ thứ tự nào. Bít 7 của byte cao ADC biểu diễn trạng thái của tiến trình chuyển đổi. Nếu =’1’ thì quá trình chuyển đổi đang được thực hiện, nếu là ‘0’ thì quá trình chuyển đổi đã hoàn tất.


MODE chốt lối ra :Trong MODE này dữ liệu từ quá trình chuyển đổi chỉ được chốt vào hai chốt lỗi ra 8 bít sau khi quá trình chuyển đổi hoàn thành và được giữ ở đó cho đến khi quá trình chuyển đổi tiếp theo hoàn tất. Dữ liệu kết quả của quá trình chuyển đổi còn hợp lệ cho trong khi quá trình chuyển đổi tiếp theo đang thực hiện. Điều này cho phép đọc dữ liệu cũ ngay cả khi một quá trình chuyển đổi mới tiếp theo đã bắt đầu. Làm cho hệ thống nhanh hơn.
Mode chốt lối ra kích hoạt nhờ việc viết số ‘1’ ra bít 0 của thanh ghi chức năng đặc biệt của ADC (0x30B)

MODE trong suốt (Transparent) : Trong MODE này thanh ghi xấp xỉ liên tiếp là trong suốt Ví dụ 4 bít nhiều ý nghĩa nhất có thể được đọc sau khi kết thúc chu kỳ thứ 9 của quá trình chuyển đổi. Dữ liệu 12 bít đầy đủ có thể sau khi EOC chuyển về ‘0’. Lúc bật nguồn bộ chuyển đổi đặt ở MODE trong suốt theo mặc định.

Do cách thực hiện của ADS7803 trong Card UIB mà quá trình chuyển đổi có thể được thực hiện ở hai cách khác nhau :
- Chuyển đổi bằng lệnh chương trình : Khi một chỉ thị được viết ra địa chỉ 0x308 (hay 0x309) khởi động một chu kỳ của kênh được chọn, lấy mẫu và chuyển đổi. Các đường dữ liệu D0 và D1 qui định kênh muốn chuyển đổi, ví dụ : outportb(0x308,1) khởi động quá trình chuyển đổi ở kênh 2. ( số kênh là 1 .. 4 tương ứng với các mã 0 .. 3). Cách này khởi tạo quá trình chuyển đổi được chọn khi bít #2 của thanh ghi MODE lấy mẫu ở địa chỉ 0x30C bằng 0. Đây là thiết lập mặc định sau khi máy tính khởi động. ( hoặc sau một RESET cứng)
- Chuyển đổi khởi tạo bằng một xung âm ( đặc trưng 1s) từ bộ đếm 0 (PIT). Mode này được chọn nếu bít #2 của thanh ghi MODE lấy mẫu ở địa chr 0x30C đặt là cao. Bít #0 và #1 định nghiã kênh được chọn. Ví dụ, sau lệnh outportb(0x30C,6); quá trình chuyển đổi ở kênh 3 được thực hiện (tuần tự) sau mỗi xung lối ra của bộ đếm 0.

Kết quả chuyển đổi :
Sau khi khởi động quá trình chuyển đổi (với một trong hai cách ở trên), cần phải đợi cho đến khi quá trình chuyển đổi hoàn thành trước khi có thể đọc được kết quả. Bít cao nhất ở địa chỉ 0x309 sẽ bằng 1 trong suốt quá trình chuyển đổi. Vòng lặp dưới đây có thể được dùng để kiểm tra :
do x = inportb(0x309) while(( x & 0x80 )!= 0 )
Nếu điều kiện này thoả mãn ( bít cao nết của biến x bằng 0), thì x giữ 4 bít cao nhất của kết quả giá trị chuyển đổi 12 bít. byte thấp có thể nhận được tại địa chỉ 0x308, sau đó một phép cộng điều chỉnh sẽ cho kết quả của phép chuyển đổi inportb(0x308) + x*256.
ưu điểm lớn nhất của việc khởi động quá trình chuyển đổi trực tiếp từ bộ đếm 0 (MODE 2) là việc định thời chính xác thời điểm lấy mẫu, bằng khoảng thời gian giữa hai lần đếmm. Xung lối ra của bộ đếm 0 có thể dùng để sinh ra một ngắt. Đồng thời với khởi động quá trình chuyển đổi, chương trình quản lý ngắt sẽ được gọi. Chương trình quản lý này sẽ phải đợi cho đến quá trình chuyển đổi hoàn thành và kế đó kết quả có thể được cất giữ trong một mảng.

CHUYỂN ĐỔI DAC
(thực nghiệm) Card DAC 12 bít tương thích với các máy tính AT với lối ra DAC có giải điện áp từ -5V đến +5V và một kênh DAC có giải điện áp từ 0V đến +10V.
Card DAC được sử dụng cùng với card UIB như sự bổ xung do card ghép nối UIB không tích hợp sẵn chức năng chuyển đổi DA trên card.
Giải địa chỉ card DAC được dùng trong khoảng từ 0x210 - 0x240 và kênh thứ hai ở giải địa chỉ 0x310 - 0x340. Giá trị mặc định của card là 0x210 cho kênh DAC0 và 0x310 cho kênh DAC1. Như vậy nên đặt card UIB tại địa chỉ 0x300 để tránh xung đột địa chỉ.
Cũng có thể đặt lại các địa chỉ này bằng cách đặt lại các JUMPER trên card.
Bằng cách viết một từ 12 bít ra địa chỉ DAC, hai chốt dữ liệu 8 bít sẽ chốt dữ liệu và sau đó truyền dữ liệu đó cho bộ chuyển đổi DAC. Nếu DAC vừa chọn đường tín hiệu U5a/b sẽ đẩy đường IO CS16 xuống thấp và cho phép một phép truyền dữ liệu 16 bít. Đường tín hiệu I/O RDY trên khe cắm PC (ISA) không được dùng. Thường bít này được sử dụng cho các card PC tốc độ chậmbằng cách huỷ bỏ một chu kỳ viết mới cho đến khi dữ liệu được xử lý xong. Với card loại này người lập trình cần cảnh giác khi một chu trình viết nhanh có thể dẫn đến kết quả chuyển đổi nhầm lẫn nêu chu trình viết đang trong khoảng thời gian trễ do quá trình chuyển đổi đang tiến hành ( ví dụ như khi muốn tạo ra các dạng song với tần số cao ). ( giáo trình Tin học I phần II - phòng thí nghiệm máy tính – Trung tâm ITIMS)

Khuyếch đại OPAM đóng vai trò bộ đệm phối hợp trở kháng có độ trôi nhỏ và dòng dò nhỏ, tốc độ cao. Bộ chuyển đổi DAC thứ nhất sử dụng hai bộ OPAM : một đóng vai trò đệm phối hợp trở kháng nhờ điện trở phản hồi nội của DAC và cái kia khuyếch đại tổng để dịch tín hiệu thành mức lưỡng cực. Một mạch dịch thế một chiều bổ xung dùng để thay đổi thế offset của U6 với P2. Hệ số khuyếch đại của DAC0 có thể thay đổi bằng cách chọn đúng giá trị điện trở cho R3, R7 và R9. Thường R9 sẽ là một điện trở dây (0) và R3 không được nối. R7 là điện trở chính xác cao 10K (0.1%)
Điều chỉnh độ khuyếch đại của DAC1 không cần thiết trong khi các điện trở nội U9 được dùng. ĐIện áp Offset có thể thay đổinhờ chiết áp P1.
Các khuyếch đại Burr Brown có thể được thay thế bằng các vi mạch TL051 rẻ tiền hơn và hầu như có cùng đặc tuyến.
Lối ra của chuyển đổi DA có thể dùng với các tải trở kháng thấp, hay dẫn, nên nối thêm với bộ khuyếch đại ngoài.

Chương trình kiểm tra :
outport(0x210, 0x0); // DAC 0 = -5 V
outport(0x210, 0xFFF; // DAC 0 = + 5V

outport(0x310, 0x0); // DAC 1 = 0 V
outport(0x310, 0xFFF); // DAC 1 = 10 V

ĐỊA CHỈ DAC:

Có thể chọn qua các JUMPER
 

Lưu ý với card ghép nối UIA : các địa chỉ 0x309,0x30A và 0x30B tương đương với 0x308 ( cũng tương tự với các giải địa chỉ khác)
Lưu ý với UIB : địa chỉ 0x30E tương đương với 0x30C, 0x30F tương đương với 0x30D ( và tương tự cho các giải địa chỉ khác)



CÁC THIẾT LẬP HỆ THỐNG :
Trước khi cài đặt cần kiểm tra :
- Máy tính của bạn có thừa ít nhất một khe cắm mở rộng (ISA)
- Một trong các địa chỉ 0x100 .. 0x10F, 0x110 .. 0x11F và 0x300 .. 0x30F còn chưa sử dụng
- ít nhất một trong các mức ngắt 2, 3, 4, 5 còn rảnh
- Tốc độ nhịp của hệ thống không vượt quá 8MHz.
JUMPER : Trước khi cắm UIA/UIB vào khe cắm trong máy tính, cần xác lập một số JUMPER giống nhau trên cả UIA và UIB. Các board UIB có 4 JUMPER lựa chọn bổ xung giải điện áp vào cho các kênh 3 và 4.
- JUMPER J1 dùng để đặt mức ngắt, mặc định là 2. Có thể ngắt này đã bị sử dụng bởi các board mở rộng khác, trong trường hợp này sẽ không sử dụng được đúng chức năng ngắt. Thử với các ngắt 3, 4 hay 5. Trong hầu hết các máy tính XT mức ngắt 2 sẽ có thể dùng được. Các máy AT thường đặt ở mức ngắt 5.
- JUMPER J2 dùng để chọn khoảng địa chỉ, mặc định là 0x300 – 0x30F. Nếu các card mở rộng khác đã dùng mất giải địa chỉ này thì thử các chọn lựa khác như : 0x100 – 0x10F (256-271); 0x110 – 0x11F ( 272-287); 0x300 – 0x30F (768 – 783) và 0x310 – 0x31F ( 784 – 799 ).
- JUMPER J6 xác định tần số xung nhịp nội. 1MHz và 4MHz. Mặc định là 1 MHz, chương trình cũng thường giả thiết là tần số nhịp 1MHz nên nếu đặt ở 4MHz thì thường gặp lỗi.
Riêng cho board UIB
JUMPER J3a và J3b cùng nhau xác địn giải điện áp vào cho kênh 3 theo sơ đồ sau :


- JUMPER J4a và J4b cùng nhau xác định giải điện áp vào cho kênh 4 theo cùng cách diễn tả với kênh 3
- JUMER J5 nối tín hiẹu xung nhịp 2MHz với bộ chuyển đổi AD. Nếu gỡ ra ADC sẽ sử dụng đồng hồ xung nhịp nội riêng của nó. Quá trình chuyển đổi sẽ chậm hơn một chút, những mức ồn có thể được hạn chế.

CÀI ĐẶT :
- Mở máy tính
- Chạm tay vào vỏ máy khoảng một phút để giảm tĩnh điện
- Tháo dây nguồn
- Gỡ vỏ máy
- Chèn card UIA/UIB vào khe cắm ISA còn trống trongmáy ( chú ý khoảng cách giữa các card mở rộng tránh để chập)
- Vít nhẹ các ốc
- Lắp lại vỏ máy
ĐẦU NỐI :
-Đầu nối 9 chân :
1/ Lối vào kênh 1 (CH1)
UIA : 0- 5V
UIB : -5V – 5V
Trở kháng vào của lỗi vào tương tự là 100K. trong nhiêu fthí nghiệm với UIA/UIB sẽ không ảnh hưởng đến hệ thống. Giải điện áp vào được lượng tử hoá ra thành 256 mức (UIA) và 4096 mức (UIB) điện áp bằng nhau.
2/ Lối vào kênh 3 (CH3)
UIA : 0 – 1V
UIB : giải điện áp tuỳ thuôc vào xác lập JUMPER
3/ Đất cho tín hiêu tương tự
4/ Đất cho tín hiệu số
5/ Lối vào xung nhịp cho bộ đêm 1
Lối vào CLOCK và GATE là các triger Schmitt, Hệ quả là không có các yêu cầu đặc biệt với tốc độ chuyển mức logic cho các cổng
( Bộ đếm giảm di một mỗi lần chuyển từ mức thấp lên mức rồi về mức thấp ( xung dương))
Mức cao và thấp nghĩa là +5V và 0 V tương ứng(TTL). Trong thực tiễn các điện áp vào trên +2.0V được xem như mức cao. dưới +0.8V xem như mức thấp. Với lối ra TTL: thấp nghãi là dưới +0.4V và cao là trên +2.4V. Điện áp vào trên +5.5V và dưới –0.5V nên tránh, các mứcc điện áp này có thể gây ra hư hỏng mạch điện.
6/ Lối vào cho kênh 2 (CH2)
UIA : 0- 5V
UIB : -5V – 5V
7/ Lối vào cho kênh 4 (CH4)
UIA : 0 – 1V
UIB : giải điện áp tuỳ thuôc vào xác lập JUMPER
8/ Điện áp ra 5V. Nguồn này bị giới hạn dòng cực đại 100mA (0.5W), có thể dùng cho một số loại sensor
9/ Cổng vào GATE cho bộ đếm 1
Lỗi này cho phép hay huỷ bỏ quá trình đếm của bộ đếm 1
Cổng GATE có thể sử dụng để đo chu kỳ của một xung dương ( hay cả xung âm với UIB ). Xung dương nghĩa là mức thế thay đổi từ mức thấp ( gần 0V) đến mức cao (gần 5V) và trở về.
Hình vẽ :
Đầu nối 25 chân :
Tất cả các lối vào và ra là tương thích TTL. Lối ra được tải với 1 lối vào TTL, CLK – 0, CLK – 1 và GATE – 1 là các lối ào triger SCHMITT.
1-8/ Cảng A : cổng vào ra 8 bít có thể lập trình được
PAO là bít ít ý nghĩa nhất, giá trị 1 là cao; 0 nếu là thấp.
PA7 là bít nhiều ý nghĩa nhất. giá trị 128 nếu ở mức cao và 0 nếu là ở mức thấp
14-17 Các bít thấp cổng C (PC0 – PC3)
18 – 21
Các bít cao cảng C (PC4 – PC7)
Nửa cao và nửa thấp cảng C có thể lập trình riêng biệt cho đọc vào hay viết ra.
10/ Lối vào nhịp cho bộ đếm 0. Đếm xuống 1 mỗi xung duơng ( thấp – cao – thấp)
11/ Lối vào cổng GATE ch bộ đếm 0 ( mặc đinh là cao ). Hoạt động đếm bị cấm nếu cổng nàybị đặt xuống mức thấp.
12/ Lỗi ra bộ đếm 0. Tính chất tuỳ thuộc vào xác lập cho MODE đếm.
13/ Lối ra cho bộ đếm 2
23/ Lối vào xung nhịp cho bộ đếm 1
24/ Lối vào cổng GATE cho bộ đếm 1
25/ Lỗi ra cho bộ đếm 1
9/ Đất
22/ Thế lối ra +5V, dòng cực đại là 100mA (0.5W) cho UIA và 200mA (1W) cho UIB.

Bảo vệ : Các card ghép nối UIA/UIB
- Tránh đưa những điện áp quá cao hay quá thấp (ngoài giải đo) đến các lối vào. Tránh các phóng điện tĩnh điện với các đường tín hiệu nối trực tiếp.
- Các lối vào tương tựu có thể chịu được các điện thế giữa –30V và 30V
- các lối vào số không nên chịu các giá trị dưới –0.5V hay trên +5.5V.
- Thế lỗi vào là được giữ bởi các diod. Khả năng chịu đựng tuỳ thuộc vào dòng trên lối vào. Các peaks điện áp từ nguồn cũng hạn chế nhờ các diod này
- Lối ra số cũng có thể chịu được sự ngắn mạch với đất trong một thời gian ngắn. Với các lối ra điện áp ngắn mạch +5V nên tránh.
 

CÁC PHÉP TOÁN THAO TÁC BITS
ANSI-C cung cấp sáu phép toán thao tác bít có thể áp dụng với các toán hạng kiểu nguyên (char, short, int và long có dấu hay không dấu). Các phép toán này và kiểu kết quả được mô tả trong bảng dưới đây :
 

Lệnh code = code << 2; dịch tất cả các bít đi hai vị trí về phía trái, trong khi bít 0 và bít 1 trở thành 0. code << 2 tương đương với code * 4. Toán hạng dịch phải cũng hoạt động tương tự : code >> 1 dịch các bít đi 1 vị rí sang phải còn bít 7 bằng 0
ví dụ :
17 & 7 =
0x17 & 0x07 =
0xFC | 0xC3 =
~ 0x55 =
6 >> 2 =
2 << 6 =
Kiểm tra bít : Giả sử muốn dùng máy tính để kiểm tra an toàn của một cửa ra vào ( ví dụ phòng từ trường cao chẳng hạn ). Một thiết bị an toàn nối với cửa của phòng cao thế. Nhờ các công tắc ở cửa ra vào ta có thể kiểm tra xem cửa có mở (‘1’) hay đóng (‘0’). Nối bít 2 với cổng vào tại địa chỉ 0x300. Trạng thái của bít 2 có thể được xác địnhnhờ dòng lệnh sau đây :
door_is_open = inportb(0x300) & 4; // Dùng phép toán AND &
// xxxx xxxx & 0000 0100 = 0000 0x00
Kiểm tra bít thứ n có thể được thực hiện nhờ hàm sau
int test_bit_PPI_PORT_A(int bit_nrr)
{
return inportb(0x300) & (1 << bit_nr );
}

Đặt hay Xoá một bít :
Với từ trường cao trong ví dụ trên, cơ cấu điều khiển nguồn cao thế được nối với bít 3 của cổng C. Điện áp cao thế có thể được bật hay tắt nhờ việc SET hay RESET (‘1’/’0’) bít 3 của cổng C. Các bít khác của cổng C có thể được sử dụng để điều khiển các thiết bị khác và nên duy trì không đổi trong khi điều khiển bít 3. Có thể xây dựng được hàm như sau để điều khiển quá trình :
magnet_control ( high_voltage, on)

void magnet_control ( int bit_nr, int value)
{
int mask;
static int ctrl_code;
mask = 1 << bit_nr; // Mặt nạ bít bit_nrr 3 : 0000 1000
if (value) {
ctrl_code = ctrl_code | mask;
} else {
ctrl_code = ctrl_code & ~mask; // Mặt nạ bít mask bit_nr 3: 1111 0111
}
outportb( 0x302, ctrl_code);
}
Lưu ý : Để cho chương trình dễ đọc, khuyến khích dùng các kiểu liệt kê cho phép liên hệ một cách thuận tiện các tên hằng với giá trị của nó. Kiểu liệt kê là danh sách các giá trị hằng số nguyên :
enum { off = 0, on };
Tên thứ nhất của hằng nhận giá trị 0, tiếp theo là 1, ... Nếu các giá trị tiếp theo không được xác định, nó sẽ nhận tiếp theo cấp số cộng ví dụ :
enum = {
cooling_system = 1, water_pump, high_voltage
}
// water_pump = 2, high_voltage = 3
Biến tĩnh static là địa phương đối với một hàm riêng biệt như biến tự động, khác với biến tự động, biến tĩnh vẫn duy trì giá trị của nó sau mỗi phép gọi hàm. Điều này nghiã là một biến nội tĩnh (static) cungcấp một vùng bộ nhớ lâu dài,, riêng biệt trong một hàm đơn.

 

 

Lần cập nhật cuối ( Thứ hai, 22 Tháng 3 2010 17:59 )
 

Tiếng Việt (Việt Nam)   English (United States)


Thời khóa biểu
Lịch làm việc học viên ITIMS

Lịch công tác ĐHBKHN
Lịch công tác ĐHBKHN

Thăm dò ý kiến

Theo bạn, Việt Nam cần đầu tư vào lĩnh vực nào dưới đây để tăng tốc độ phát triển?