Professional Documents
Culture Documents
Chapter 6
Chapter 6
Chng
TS NGUYN C THNH
155
SETUP cua may tnh khi khi ong may. Cac may tnh khong co cong song song co the s dung chuyen oi USB - Parallel Port hay PCMCIA (Personal Computer Memory Card International Association) - Parallel Port.
Ngoai nhiem vu giao tiep, cong song song con dung lam khoa ban quyen dongle, phan mem co bao ve oc ma khoa t vi mach tren dongle, neu khong co se ch cho phep s dung che o gii han.
156
CHNG 6
6.1 Cong SPP Cong song song co au noi 25 chan cai thng dung e ket noi vi may in au noi Centronics 34 chan.
Bang 6.1 cho s o chan va y ngha cac chan cua cong SPP khi dung vi may in, dau / co ngha tch cc thap. V du, chan 15 la /Error hng vao, neu chan nay xuong mc 0 la co loi. Cot ao ghi ch Co tc la tn hieu c ao mc, v du chan 17 khi a mc logic 0 ng vi chan nay vao thanh ghi ieu khien th chan 17 xuat hien mc 1.
Bang 6.1: S o chan cua au noi pha may tnh (cong SPP)
va pha may in
Tn hieu SPP /Strobe Data 0 Data 1 Data 2 Data 3 Data 4 Data 5
Chan
Chan
D 25 Centronics 1 2 3 4 5 6 7 1 2 3 4 5 6 7
Hng Thanh ghi ao Vao/Ra ieu khien Co Ra Ra Ra Ra Ra Ra Data Data Data Data Data Data
TS NGUYN C THNH
157
8 9 10 11 12 13 14 15 16 17 18 - 25
8 9 10 11 12 13 14 32 31 36 19 - 30
Data Data Trang thai Trang thai Co Trang thai Trang thai
Ngo ra cong song song tng thch vi cong TTL, dong cap va thu khoang vai mA en 16mA tuy loai ket cau phan cng (cong nghe ASIC). Giao tiep cong song song vi may in thng c thc hien theo H.6.1
158
CHNG 6
Ban au d lieu 8 bit c a ra, may tnh oc chan Busy neu mc thap th may in ranh, se a ra tn hieu Strobe rong 1sec va may in oc d lieu, oc xong se bao tr lai bang ACK rong 5sec. Neu may in ban th Busy se mc cao. Viec giao tiep c thc hien qua 3 thanh ghi: thanh ghi d lieu, thanh ghi trang thai va thanh ghi ieu khien . Thong thng s dung hai a ch goc la: 378H cho LPT1 (line printer 1) 278H cho LPT2 Mot so may dung a ch 03BC. - Thanh ghi d lieu co a ch goc +0, 8 bit, nhan d lieu e xuat ra ngoai, d lieu c chot.. - Thanh ghi trang thai a ch goc +1 la thanh ghi ch oc dung e nhan tn hieu t ngoai vao, co 5 tn hieu vao.
D7 Busy 11 /ACK 10 Paper Out 12 Select 13 /Error 15 /IRQ X D0 X
Chu y la bit Busy c ao, ngha la neu chan 11 co ien ap +5V th bit D7 cua thanh ghi trang thai mc logic 0, bit D2 bang 0 khi co ngat t /ACK. - Thanh ghi ieu khien co bon ng ra ieu khien, a ch goc +2, cac ng nay dung cc thu h do o co the giao tiep hai chieu.
TS NGUYN C THNH
159
D7
X X Cho phep cong hai chieu Cho phep IRQ qua ACK Chon may in /Select 17 Khi ong may in /Init 16 Xuong hang /Auto Linefeed 14
D0
Kch /Strobe 1
Cac chan 1, 11, 14 va 17 c ao phan cng, bit D6 thanh ghi trang thai (chan so 10) t 1 0 th gay ra ngat IRQ7 neu c cho phep bi D4 cua thanh ghi ieu khien =1.
Mot so mainboard (H6.2) ho tr giao tiep hai chieu qua thanh ghi d lieu, bit D5 cua thanh ghi ieu khien bang 1 th cho phep cac chan 2..:9 cua thanh ghi d lieu co chieu i vao, ngha la co the a tn hieu vao cac chan nay roi oc thanh ghi d lieu. Cac chan cua thanh ghi ieu khie n co ngo ra cc thu h nen co the nhan tn hieu vao neu trc o ta a nap 8 bit sao cho cac ngo ra ng vi thanh ghi nay len 1 (s o H 6.3). Do cac tn hieu /Busy, /Select, /AF va /Strobe a c ao phan cng nen ta them cac cong ao, logic oc vao phan anh ung mc tn hieu.
160
CHNG 6
Hnh 6.3: Giao tiep song song hai chieu qua cong SPP
Trong mot so trng hp, cac chan ra cua thanh ghi ieu khien khong dung loai cc thu h ma dung cot totem ch co mot chieu xuat, luc o co the dung bo phan kenh e oc 4 bit d lieu vao thanh ghi trang thai, oc hai lan se c 8 bit d lieu (H6.4). Trong s o chan /Strobe c dung e chon na byte thap khi mc 0 tc la bit D0 cua thanh ghi ieu khien mc 1. Vi s o nay viec xuat nhap d lieu 8 bit c thc hien nh sau: 1- Xac nh a ch goc cua cong LPT 2- Muon xuat d lieu, ghi d lieu 8 bitvao thanh ghi d lieu, muon xuat nhieu hn 8 bit co the dung kem cac tn hieu Init, Select bang cach ghi vao thanh ghi ieu khien byte thch hp. 3- Muon oc d lieu, ghi bit D0 = 1 vao thanh ghi ieu khien, oc 4 bit cao cua thanh ghi trang thai (4 bit thap cua d lieu vao), roi di phai 4 bit, sau o cho D0 cua thanh ghi ieu khien bang 0, oc 4 bit cao cua thanh ghi trang thai (4 bit cao cua d lieu vao), ket hp hai lan oc ta c 1 byte roi exclusive OR vi 88H e ao
TS NGUYN C THNH
161
162
CHNG 6
V du lap trnh Xuat tr cua bien oval1 ra thanh ghi d lieu va oval2 ra thanh ghi ieu khien, nhap gia tr inval t thanh ghi trang thai.
Trong ngon ng C
# define DATA 0X378 # define STATUS DATA + 1 # define CONTROL DATA + 2 int oval1, oval2, inval; oval1 = 0X81; outportb (DATA, oval1); oval2 = 0X08; outportb (CONTROL, OVAL2 ^ 0x0b); inval = ((inportb (STATUS) ^ 0X80;
TS NGUYN C THNH
163
DATA = &H378 STATUS = DATA + 1 CONTROL = DATA + 2 OVAL1 = 129 OUT DATA, OVAL1 OVAL2 = 75 OUT CONTROL, OVAL2 XOR 11 INVAL = ((INP (STATUS) XOR 128) AND &HF8) / 8
outportb(CONTROL, inportb(CONTROL) | 0x01); /* Chon na byte thap (A)*/ a = (inportb(STATUS) & 0xF0); /* oc na byte thap */ a = a >> 4; /* Di phai 4 bit */ outportb(CONTROL, inportb(CONTROL) & 0xFE); /* Chon na byte cao (B)*/ a = a |(inportb(STATUS) & 0xF0); /* oc na byte cao */ byte = byte ^ 0x88;
Private Declare Function Inp32 Lib inpout32.dll (ByVal adr As Integer) As Integer Private Declare Sub Out32 Lib inpout32.dll (ByVal adr As Integer, ByVal data As Integer) Private Sub cmdRead_Click() Dim hbytethap, hbytecao, data Out32 &H37A, 1 hbytethap = Inp32(&H379) And &HFF hbytethap = hbytethap \ 16 Out32 &H37A, 0 hbytecao = Inp32(&H379) And &HF0 data = hbytecao Or hbytethap data = data Xor &H88 txtIn.Text = data End Sub
164
Private Sub Command1_Click() Timer1.Enabled = 1 End Sub Private Sub Command2_Click() End End Sub Private Sub Form_Load() Timer1.Interval = 1000 Timer1.Enabled = 0 End Sub Private Sub Timer1_Timer() For i = 0 To 7 Out32 &H378, 8 + i Out32 &H378, i Sleep (1) dl = (Inp32(&H379) And &HFF) \ 8 dl = (dl \ 16) * 8 + dl Mod 8 Out32 &H378, 16 dh = (Inp32(&H379) And &HFF) \ 8 dh = (dh \ 16) * 8 + dh Mod 8 data = (dh * 16 + dl) Xor &H88 Text1(i).Text = Round(data * 5 / 256, 1) Next End Sub
CHNG 6
S dung ngat Khi bit 4 cua thanh ghi ieu khien mc 1 se cho phep ngat neu chan ACK (so 9) chuyen t 1 xuong 0, chng trnh phuc vu ngat IRQ7 se c goi (cung co luc ngat b tac ong khi ACK chuyen t 0 len 1). Co the viet mot chng trnh kiem tra xem ngat co tac ong khong. Ve phan cng ch can noi chan 9 (D7) vi chan 10 (ACK). Vao Control panel System kiem tra a ch va so ngat cua cong LPT.
#include <dos.h> #define PORTADDRESS 0x378 #define IRQ 7 #define DATA PORTADDRESS+0
TS NGUYN C THNH
165
#define STATUS PORTADDRESS+1 #define CONTROL PORTADDRESS+2 #define PIC1 0x20 #define PIC2 0xA0 int interflag; /* C ngat */ int picaddr; /* a ch goc cua PIC) */ void interrupt (*oldhandler)(); void interrupt parisr() /* Interrupt Service Routine (ISR) */ { interflag = 1; outportb(picaddr,0x20); /* End of Interrupt (EOI) */ } void main(void) { int c; int intno; /* So vect ngat */ int picmask; /* Mat na */ if (IRQ >= 2 && IRQ <= 7) { intno = IRQ + 0x08; picaddr = PIC1; picmask = 1; picmask = picmask << IRQ; } if (IRQ >= 8 && IRQ <= 15) { intno = IRQ + 0x68; picaddr = PIC2; picmask = 1; picmask = picmask << (IRQ-8); } if (IRQ < 2 || IRQ > 15) { printf("IRQ Out of Range\n"); exit(); } outportb(CONTROL, inportb(CONTROL) & 0xDF); /* Chieu xuat */ outportb(DATA,0xFF); oldhandler = getvect(intno); /* Lu vect ngat cu */ setvect(intno, parisr); /* at vect ngat mi */ outportb(picaddr+1,inportb(picaddr+1) & (0xFF - picmask)); /* G mat na */ outportb(CONTROL, inportb(CONTROL) | 0x10); /* Cho phep IRQ */ clrscr(); printf("Parallel Port Interrupt Polarity Tester\n"); printf("IRQ %d : INTNO %02X : PIC Addr 0x%X : Mask 0x%02X\n",IRQ,intno,picaddr,picmask); interflag = 0; /* Reset Interrupt Flag */ delay(10); outportb(DATA,0x00); /* Cho ACK tac ong */ delay(10); /* Ch */ if (interflag == 1) printf("Interrupts Occur on High to Low Transition of ACK.\n"); else {
166
CHNG 6
outportb(DATA,0xFF); /* Low to High Transition */ delay(10); /* wait */ if (interflag == 1) printf("Interrupts Occur on Low to High Transition of ACK.\n"); else printf("No Interrupt Activity Occurred. \nCheck IRQ Number, Port Address and Wiring."); } outportb(CONTROL, inportb(CONTROL) & 0xEF); /* Cam ngat */ outportb(picaddr+1,inportb(picaddr+1) | picmask); /* Che */ setvect(intno, oldhandler); /* Hoi phuc ngat trc khi thoat */ }
Ta co the m rong kha nang giao tiep cua cong song song bang cach them cac vi mach nh 8255, 74LS374
TS NGUYN C THNH
167
168
CHNG 6
TS NGUYN C THNH
169
Bang 6.2
Chan 1 2-9 10 11 12, 13, 15 14 16 17 18 25 /Data Strobe /Reset /Address Strobe Ra Ra Ra Ten Ghi /Write Data 0 - 7 Ngat Interrupt Ch /Wait Vao/Ra Ra Vao - Ra Vao Vao Chc nang Khi thap xuat d lieu ra Khi cao oc vao Tuyen d lieu hai hng Ngat canh len Dung e bat tay, chu ky EPP bat au khi thap, cham dt khi cao Khong dung Khi mc thap truyen d lieu Reset, tch cc thap Khi mc thap truyen a ch Mass
Ba thanh ghi au giong nh trong SPP. Muon truyen d lieu theo EPP ta a d lieu vao thanh ghi goc +4 va mach logic se tao cac tn hieu can thiet.
170
CHNG 6
Chan /Write va /Data Strobe tch cc thap ch cho en khi /Wait len mc cao bao ben kia a nhan d lieu, sau o /Data Strobe va /Write tr lai mc cao ket thuc truyen. Khi nhan d lieu, au tie n chng trnh oc thanh ghi goc +4. Neu /Wait mc thap th /Data Strobe se mc thap ch khi /Wait mc cao ben kia bao a gi d lieu ti, /Data Strobe se mc cao va d lieu c oc vao. Chu ky xuat va nhap d lieu cung giong nh chu ky xuat va nhap a ch. Thng ket hp a ch va d lieu e truy xuat d lieu t cac a ch ngoai vi khac nhau. Phan cng ngoai vi co nhiem vu x ly cac chan /Write, /Data Strobe, /Address Strobe a va o cac mach cai hay cho phep va xuat tn hieu /wait phu hp. Thong qua tn hieu Interrupt (chan so 10) ngoai vi se tac ong en may tnh, bit 0 cua thanh ghi trang thai la bit bao het thi gian EPP. Neu trong khoang 10 s ng /Wait khong tac ong khi /Data Strobe hay /Address strobe tac ong th bit nay se c at len 1.
11 12 13
TS NGUYN C THNH
171
14 15 16 18 29
mc cao bao chu ky d lieu, mc thap bao chu ky lenh Yeu cau may tnh nhan so lieu Khi mc thap cho biet d lieu nhap vao may tnh Mass
Khi truyen d lieu t may tnh ra ngoai vi th HostAck se oi mc, con truyen d lieu t ngoai vi vao may tnh th PeriphAck oi mc. Tren tuyen d lieu co the truyen d lieu hay lenh. Neu Host Ack va Periph Ack mc cao la truyen d lieu. Neu may tnh gi lenh, Host Ack mc thap; neu ngoai vi gi lenh, Periph Ack mc thap. Lenh gom hai loai, neu bit 7 cua tuyen d lieu (chan 9) mc thap th 7 bit con lai dung e cho biet thong tin ve nen d lieu. Neu bit 7 mc cao th 7 bit con lai la a ch kenh. Khi truyen d lieu nen, au tien truyen so lan lap lai cua byte d lieu, sau o truyen byte d lieu, v du truyen 25 byte ky t A th gi byte 24 (Run length Count) sau o gi byte A.
172
CHNG 6
Ngoai vi nhan c byte 24 trong chu ky lenh se lap lai byte A chu ky d lieu 25 lan. Ty so nen toi a 64/1. e tang toc o truyen d lieu, cong ECP dung cac thanh ghi sap xep kieu FIFO va mot so thanh ghi phu.
Bang 6.5
a ch Goc + 0 Goc + 1 Goc + 2 Ten Thanh ghi d lieu (SPP) a ch FIFO (ECP) Thanh ghi trang thai (moi mode) Thanh ghi ieu khien (moi mode) oc / Ghi Ghi oc / Ghi oc / Ghi oc / Ghi
Data FIFO (mode FIFO cong song song) oc / Ghi Goc + 400 H Data FIFO (ECP) Test FIFO (mode Test) Thanh ghi cau hnh A Goc + 401 H Goc + 402 H Thanh ghi cau hnh B Thanh ghi ieu khien m rong oc / Ghi oc / Ghi oc / Ghi oc / Ghi oc / Ghi
Thanh ghi ieu khien m rong cho phep chon kieu hoat ong cua cong song song. Thanh ghi cau hnh A va B s dung e at cau hnh cua cong ECP. Chi tiet ve cac thanh ghi co the xem trong cac tai lieu chuyen sau
TS NGUYN C THNH
173
1- Ghep noi song song (Laplink cable):Dung cap noi vi hai au c DB25, giao tiep 4 bit
Chan D0 D1 D2 D3 D4 ACK Busy Select 2 3 4 5 6 Chan 15 13 12 10 11 10 11 13 5 6 4 3
Paper out 12
174
Error GND 15 25 2 25
CHNG 6
2- Ghep noi noi tiep: Dung cap noi hai au cai DB9 hay DB25
9 chan 25 chan 25 chan 9 chan GND TXD RTS DSR RXD CTS DTR 5 3 7 1, 6 2 8 4 7 2 4 6 3 5 20 7 3 5 20 2 4 6 5 2 8 4 3 7 1,6
Truyen bang ng song song nhanh gap tam en mi lan truyen noi tiep. Neu cong song song hai may co cau hnh ECP th van toc truyen con nhanh hn na, di ay la cap noi vi cong ECP
Chan 1 2 10 11 12 13 9 Chan Chan 10 > 2 1 14 16 13 9 15 14 16 17 18 25 < Chan 17 11 12 15 18 25
TS NGUYN C THNH
175
176
CHNG 6
Vi mach hoat ong vi xung ong bo SCLK. Khi CS chuyen t 1 xuong 0, canh len cua SCLK a 8 bit t Din vao thanh ghi di e nh che o hoat ong cua vi mach, canh xuong cua SCLK a ket qua chuyen oi lan trc t thanh ghi di noi tiep ra Dout. Khi a u 8 bit Din vao cau hnh chuyen oi theo bang sau, B7 la bit Din vao trc.
B7 n/ visai B6 Dau B5 Chon 1 B4 Chon 0 B3 n cc/ Lng cc B2 MSB/ LSB B1 Chieu dai t B0 Chieu dai t
B7 = 1: 8 ngo vao n so vi chan COM, B6 B5 B4 chon mot trong 8 ngo vao. B7 = 0: 8 ngo vao chia thanh 4 cap vi sai 01, 23, 45, 67, bit B5 B4 chon mot trong 4 cap con bit B6 = 1 se an nh cac au 0, 2, 4, 6 dng so vi 1, 3, 5, 7; B6 = 0 an nh ngc lai. B3 = 1: chon oi n cc, tn hieu vao t 0 en Vref = +5V B3 = 0: chon oi lng cc, tn hieu vao -Vref (800H) en Vref -1LSB (7FFH), bit au la bit dau B2 = 1: cho biet se truyen MSB au tien ra Dout = 0: cho biet se truyen LSB au tien ra Dout B1 va B0 cho biet chieu dai t cua Dout.
B1 0 1 1 1 B0 0 8 bit cat nguon 12 bit 16 bit
B1= 0, B0= 1: vi mach che o cat nguon luc o CS = 1 dong tieu thu khoang 10 A. Sau khi a u so xung nhp SCLK c an nh bi chieu dai t CS c a len mc 1, bat au chuyen oi theo xung nhp ACLK, tan so toi a 4Mhz, sau o t 48 en 52 xung ACLK, neu CS xuong mc 0 th ket qua oi se a ra Dout theo cau hnh a at trc con Din se a vao va at cau hnh mi. Cac thong tin chi tiet hn ve vi mach co the tm trong trang web: www.lineartech.com. Mach chuyen oi H6.10 cho phep oi tn hieu n 0V 2,5V hay tn hieu lng cc (2,5V) (+ 2,5V). Xung nhp SCLK va d
TS NGUYN C THNH
177
lieu Din xuat ra t cong may in con ket qua oi Dout a vao ACK cua cong.
{======= CHNG TRNH IEU KHIEN CHO CARD AD 12 BIT =======} unit ltc1290; interface const vref = 2.48; function adc_read (ch: integer): real; implementation
Hnh 6.10
const sclk = 1; din = 2; dout = 64; cs = 4; function adc_read; const wconst = 1 + 32 + 64; vao n, lng cc, MSB au chconst: array [0..7] of byte = (0, 2, 8, 10, 4, 6, 12, 14); delay = 10; co the thay oi tuy may tnh
178
aout = $378; ain = $379; var i: integer; win: word; result: word; begin for i:= 1 to delay do begin end; win := wconst + chconst [ch]; port [aout] := 0; drop CS' { di word cau hnh vao} for i := 1 to 12 do begin port [aout] := (win and 1)* din; port [aout] := (win and 1)* din + sclk; win := win div 2; port [aout] := 0; end; port [aout] := cs; for i := 1 to delay do begin end; port [aout] := 0; {nhan ket qua chuyen oi} result := 0; win := wconst + chconst [ch]; for i := 1 to 12 do begin port [aout] := (win and 1)* din; port [aout] := (win and 1)* din + sclk; result := result*2; if port [ain] and dout <> 0 then result := result + 1; port [aout] := 0; end; port [aout] := cs; adc_read := vrel*((result + 2048) and 4095) / 2048 vref; end; {======= CHNG TRNH DEMO ========} program testltc; uses crt, ltc1290 var i: integer; begin writeln (Nhan phm e thoat); while not keypressed do begin for i := 0 to 7 do write (adc_read(i) :4:4,); writeln (V); delay (1000); end; end.
CHNG 6
TS NGUYN C THNH
179
180
CHNG 6
U1 ieu khien d lieu gia may tnh va bo ieu khien, U3 cai byte a ch thap U4 cai byte a ch cao, U2 tao cac tn hieu ieu khien, U6 cap nguon 5V, U5 tao cac ien ap lap trnh. chi tiet a ch http://chaokhun.kmitl.ac.th.
Bang linh kien: C1,C2,C3,C6,C8 C4,C5 C7 C9 C10,C11,C12 D1 D2 D3 K2 P1 P2 R1,R3 R7,R5 R6 R9 R10 100nF 33pF 2.2nF 1000uF 25V 10uF 25V 1N4148 LED RED 3mm LED GREEN 3mm ZIF SOCKET 40 WAY 5K MULTITURN 50K MULTITURN RESISTOR ARRAY 4K7 x 8 1K 3K3 2K7 680R
R2,R4,R8,R11,R12,R13,R15 4K7
TS NGUYN C THNH
181
6.7 LAP TRNH CONG SONG SONG DUNG LABVIEW LabView giao tiep cong song song qua hai cong cu In port.vi va Out port.vi trong th muc FunctionsConnectivity-Port I/O
Address: a ch 16 bit Data read: 1 byte, 2 byte (hai a ch ke nhau ke t address), 4 byte (bon a ch ke tiep ke t address) Write value co the la 1, 2, 4 byte
--------o--------Bai tap gi y 1/ Nghien cu ghep 8255 vi cong may in e tang so ngo logic. 2/ Thiet ke va lap trnh mach m rong cong may in 56 bit ra va 8 bit vao. 3/ Thiet ke mach ieu khien ong c bc 4 pha dung cong song song va viet chng trnh quay n xung vi tan so f Hz. 4/Nghien cu hoat ong va viet chng trnh cho mach ghi AT89C51.