|
Collegare un 8254 alla LPT 3/4
di Vincenzo Villa
Il software
Per lutilizzo del timer è necessario programmare opportunamente i registri interni, come descritto sui fogli tecnici del produttore
dellintegrato. Per poter scrivere o leggere i registri interno del timer non è però sufficiente utilizzare una sola istruzione
del tipo:
outportb (Registro, dato)
Occorre invece scrivere prima lindirizzo nel registro Address_port della porta EPP e quindi il dato nel registro data_port
della EPP.
outportb (Address_port, Registro)
outportb (Data_port, dato)
Nel caso si voglia scrivere più volte sullo stesso registro dell8254 non è strettamente necessario aggiornare anche lAddres_port.
Analogamente per effettuare la lettura di un registro occorre prima scrivere lindirizzo nella Addres_port e quindi leggere
il data_port. Anche in questo caso non è prevista la scrittura dellindirizzo se non lo si modifica.
Come ho già detto dellindirizzo sono usati solo i due bit meno significativi. I rimanenti sono memorizzati nei registri di uscita
ed utilizzabili come uscite per uso generale.
È fornito il codice C delle funzioni che permettono una gestione semplificata ed un programma di test in ambiente Win9x/NT ed un altro
in ambiente DOS, ovviamente sia come sorgente che come eseguibile.
I due programmi, funzionalmente simili, impostano allinizio i tre contatori in modo 2; viene quindi effettuata la lettura continua
dei tre contatori e visualizzata continuamente fino allinterruzione del programma da parte dellutente (per il programma DOS un tasto
qualunque, per quello Win32 la chiusura della finestra.
Per il funzionamento è richiesta la presenza di un segnale ai tre ingressi di clock. Il modo più semplice per ottenerlo, senza
lausilio di dispositivi esterni, è quello di utilizzate loscillatore quarzato presente sulla scheda, collegandolo al clock
del primo contatore. Luscita di questo contato si collega al clock del secondo contatore e luscita di questo al clock del terzo.
Usando la numerazione delle pagine seguenti:
Clock out |
> |
clock counter 0 |
Output counter 0 |
> |
clock counter 1 |
Output counter 1 |
> |
clock counter 2 |
In questo modo, con un quarzo da 4MHz ed i valori di 40.000, 50 e 50 caricati nei tre registi dai programmi di test, la frequenza di clock
del primo contatore è di 50Hz e quella del secondo di 1 Hz. Con questi valori il conteggio visualizzato è lento per C2, appena
visibile per C1, apparentemente casuale per C0.
I programmi usano anche i sei pin di uscita, generando segnali a varie frequenze una multipla dellaltra (NB. Tali segnali non dipendono
dal quarzo montato sulla scheda ma solo dalla velocità con cui il SW aggiorna i registri di uscita).
Nota by Cat: Tutti i files sorgenti e compilati, compreso la versione pdf originale di questo progetto, sono contenuti nel file 8254_to_parallelport.zip
(200 k)
|