SCHEDA SPERIMENTALE I/O
|
Si rammenta che non é consigliato lavorare direttamente pin to pin fra LPT e circuiti esterni ma conviene interporre una separazione con delle porte logiche ..meglio sarebbe usare dei fotoaccoppiatori cosí da avere una separazione galvanica.... questo per evitare che errori esterni di collegamneti o tensioni possano finire sulla LPT e danneggiare il circuito interno della scheda madre del PC, sprattutto sui piú moderni dove la LPT é integrata sulla scheda madre e non seaparata come sui vecchi 286/486.... si potrebbe se fosse possibile lavorare con una scheda di queste cosi, male che vada la LPT su scheda si puó cambiare con spese minime (15/20 milalire). Attenzione anche alle scariche elettrostatiche. LEGGI DISCALIMER
db25lpt.zip File.zip (19 Kb) con schemi ORCAD e testoVai a: IL PC SIMULA UN PLC in questa pagina.
PORTA PARALLELA DEL PC
Attraverso il connettore DB25 della parallela LPT del Computer (286/486 e ...) é possibile gestire livelli di tensione 0-5V sia come INPUT che come OUTPUT. CONNETTORE DB25 A 25 POLI PER PORTA PARALLELA ---------------------------------------------- Per convenzione viene montato sul p.c. un connettore femmina. Visto dall'esterno del p.c. ha la seguente numerazione: ___________________________________ /14 15 16 17 18 19 20 21 22 23 24 25\ / o o o o o o o o o o o o \ / \ / o o o o o o o o o o o o o \ / 1 2 3 4 5 6 7 8 9 10 11 12 13 \ ---------------------------------------------Disposizione dei bit dei segnali per una parallela di indirizzo PORTA (vedi fondo pagina): PORTA+0 e' la porta DATI ed é solo output. BIT PIN CENTRONICS 0 - D0 2 1 - D1 3 2 - D2 4 3 - D3 5 4 - D4 6 5 - D5 7 6 - D6 8 7 - D7 9 PORTA+1 e' la porta STATUS ed é in input 3 - ERROR 15 4 - SLCT OUT 13 5 - PO 12 6 - ACK 10 7 - BUSY (negato) 11 PORTA+2 e' la porta CONTROL ed é in output ma si possono anche leggere come input. 0 - STROBE (negato) 1 1 - AUTOFD (negato) 14 2 - RESET 16 3 - SLCTIN (negato) 17 lo stato di questa porta all'accensione e': 1 1 1 0 1 1 0 0 (ottenuta leggendo la porta) Attenzione essendo il bit 4 un IRQ_EN conviene non scriverci 1 i pin da 18 a 25 della CENTRONICS sono GND (massa) CI SONO PARALLELE CHE HANNO GLI INPUT PULL-UP CON DELLE RESISTENZE INTERNE ALMENO PER LA PORTA+1, MENTRE ALTRE SONO APERTI E PERTANTO SE TESTATI NON CONNESSI A PERIFERICHE SONO FLUTTUANTI E NON GARANTISCONO LIVELLO NE 0 NE 1 Per gestire la PARALLELA in BASIC si può usare le istruzioni: INP (ADR) dove adr e` indirizzo e vale 889 per LPT1 e testa i bit dai pin 15-13-12-10-11 (tot. 5 bit) INP (ADR) dove adr e` indirizzo e vale 890 per LPT1 e testa i bit dai pin 1-14-16-17 (tot. 4 bit) Per testare un BYTE (8bit) si può fare: A=INP(889) B=INP(890) VALINPUT=(B-128)-(A-232) Per l'uscita si usa : OUT ADR,NR dove adr e` indirizzo e vale 888 per LPT1 e gestisce i bit d'uscita sui pin 2-3-4-5-6-7-8-9 (NR e` il valore numerico da buttar fuori) Pare che certi BASIC possono accettare anche POKE ADR,VALORE NUMERICO NR e` dato dalla somma del valore che ogni bit possiede se e` messo a livello 1 (uno) : ESEMPIO PIN 9 - 8 - 7 - 6 - 5 - 4 - 3 - 2 2 ELEVATO ALLA 7 6 5 4 3 2 1 0 BIT A " 1 " 0 1 0 1 0 0 0 1 NR = 64 +16 +2 =81 se faccio OUT 888,81 setto i pin 8-6-2 a livello 1 e gli altri a 0 IN ASSEMBLER SIA PER INPUT CHE PER OUT DEVO PRIMA CARICARE NEL REGISTRO dx IL VALORE ADR secondo la LPT usata e poi: con IN al,dx carico nel registro Al il valore di input corrispondente all'indirizzo contenuto in dx esempio : mov dx,889 in al, dx cosí facendo carico in al 8 bit di cui però soltanto i 5 bit più significativi sono quelli riferiti ai pin 11-10-12-13-15 byte al peso bit 7 - 6 - 5 - 4 - 3 - 2 - 1 - 0 pin cor. 11 10 12 13 15 x x x mov dx, 890 in al,dx così facendo carico in al 8 bit di cui però solo i 4 meno significativi sono riferiti ai pin 17-16-14-1 byte al peso bit 7 - 6 - 5 - 4 - 3 - 2 - 1 - 0 pin cor. x x x x 17 16 14 1 Ricordarsi che i bit facenti capo ai pin 1-14-17-11 sono negati rispetto agli altri dei pin 11-10-12-13-15 per prendere un byte dall'input facente capo ai pin 11-10-12-13-15-16-14-1 in cui pin11=bit7 e pin 1=bit0 si farà: mov dx,889 preparo dx per input in al,dx carico al con 8 bit di cui solo 5 utili and al,0f8h elimino i bit che non servono mov variabile,al (variabile dove tenere momentaneamente al) mov dx,890 punto ad altro input in al,dx prendo 8 bit di cui 4 utili-solo tre servono and al,07 elimino i bit che non servono or al,variabile unisco i 5bit di prima con i tre ultimi e in al ho 8 bit che fanno capo ai pin 11-10-12-13-15-16-14-1 PER L'OUT sarà: mov dx,888 (888=LPT1 ) out dx,al così facendo prendo gli 8 bit del registro Al e li "butto" sui pin 9-8-7-6-5-4-3-2 pin 9=bit7 pin 2=bit0 Gli indirizzi PORTA sono: ESADECIMALE DECIMALE OUT IN1 IN2 OUT IN1 IN2 LPT1 378h 379h 37Ah 888 889 890 LPT2 278h 279h 27Ah 632 633 634 LPT3 3BCh 3BDh 4BEh 956 957 958Lo schema elettronico della scheda I/O (32Kb)Vista componenti con piste in trasparenza (47Kb) Foto interfaccia
Schema dell'interfaccia usata per comandare 8 relè temporizzati gestiti dal programma TIMER (tutto il progetto 60KB)
IL PC SIMULA UN PLC
Si e` pensato di fare uso della parallela come INPUT/OUTPUT per tentare di simulare un PLC. All'interno il programma crea un loop multiplexato in cui testa gli otto ingressi della LPT mentre esegue le routines atte a gestire le otto uscite. Le otto uscite possono essere testate come input dal 9 al 16, pertanto gli ingressi in totale sono 16. Per il momento sono state previste 19 procedure in grado di settare le uscite a livello 0 o a livello +5V, eseguendo delle routines tipo MONOSTABILE, ASTABILE, FLIP/FLOP TIPO D, FLIP/FLOP TIPO S-R, SUONERIA piu` tutte le porte OR, NOR, AND, NAND con max. 11 ing. + XOR e XNOR I tempi di ritardo (astabili/monostabili) possono essere impostanti da 1 a 65535 mS, tali tempi sono sufficientemente precisi anche se sono influenzati dal numero delle procedure in atto (non dipendono dal clock del computer avendo una routine che si autoadegua in funzione di questo).L'AUTORE NON SI ASSUME NESSUNA RESPONSABILITA` ESPLICITA O IMPLICITA RIGUARDANTE INCIDENTI O CONSEGUENTI POSSIBILI DANNI DERIVANTI DALL'USO DEL PROGRAMMA.
TESTATO FINO AI PENTIUM 133
CON I PC DELL'ULTIMA GENRAZIONE TROPPO VELOCI NON FUNZIONA
Al lancio del programma I2VIU.EXE si può digitare dopo il nome, spazio 1 o 2 o 3 per configurare la LPT1 o LPT2 o LPT3, se non specifico un numero si configura con la prima LPT che trova partendo dalla LPT1.
Il programma é stato sviluppato in assembler per ambiente DOS e si presenta con un menù di scelta per le varie funzioni con comandi di facile interpretazione, si usa ESC per tornare all'operazione precedente. Chi vuole cimentarsi con il file .ASM lo può scaricare (18 Kb plc.zip).Torna a inizio pagina LINK PER SAPERNE DI PIÙ:
Tutorial di Vincenzo Villa
Uso dell'Interfaccia Parallela
Collezione di file e links sull'argomento porta parallela
Parallela e Visual Basic
Altre info su LPT[ Retunr ]