Newsgroup: it.hobby.elettronica.digitale
Titolo: Acquisizione dati da parallela

Vi espongo il problema che devo risolvere e per il quale ho bisogno di
aiuto.
Devo calcolare i numeri di giri che compie un motorino e memorizzare il
tempo che ha impiegato  per compiere ogni giro in modo da poter trovare la
curva velocità angolare-tempo. Come soluzione, prima di utilizzare il bus
ISA di cui non conosco quasi niente, ho pensato alla seguente:
utilizzare un diodo a rifrazione, credo si chiami così, per chiudere il
circuito che dovrà mettere a 1 il bit di  ack della porta parallela e,
scritta la routine di interrupt, memorizzare il tempo in cui è avvenuto.
Ho alcuni dubbi:
1) quanto devono stare di fronte le due parti del diodo per far sì che il
circuito si chiuda?
2) se i due passaggi sono molto vicini la tensione riesce a scendere al
valore 0 e poi risalire a 5V (standard della porta parallela)
3) Qual'è la frequenza massima di acquisizione?
Grazie a tutti coloro che mi hanno letto.
Alessandro.

 3) Qual'è la frequenza massima di acquisizione?
in polling cioe' leggendo continuamente il registro stato si puo'
arrivare facilmente a circa 500.000 letture al secondo chiaramente non
facendo altro che leggere dalla porta di io, tutte la altre attivita'
ralleentano ulteriormente il processo, tentando di gestire la faccenda
in interrupt le cose peggiorano molto, sopratutto non hai un buon
controllo della latenza dell'interrupt stesso ( forse mi sbaglio ma
potrebbe NON essere un problema in quanto tu stai realizzando un
frequenzimetro e non un periodimetro )
P.S. la velocita' non varia moltissimo col variare della CPU in quanto
e' comunque limitata dai wait-state del bus ISA a cui fa capo la
parallela.
ti propongo una alternativa: usa un contatore esterno per accumulare il
conteggio e da leggere per esempio 1 volta al secondo ( questo tempo
stabilito col timer interno del PC ).
Il contatore potrebbe essere sia un normale TTL o anche potrebbe essere
un 8254 ( magari di recupero ) che e' lo stesso contatore/timer
programmabile usato all'interno del PC, in questa maniera puoi
facilmente misurare frequenze dell'ordine del MHz


Ciao Alessandro,
ti consiglio di usare un circuito che converta i bit che provengono dal
diodo in una informazione a 8 bit che rappresenta la velocità angolare; il
traferimento di tale informazione al PC potrà avvenire attraverso un
registro.
In questo modo riduci notevolmente la frequenza di acquisizine dei dati da
parte del processore.
In realtà credo si tratti di una scelta obbligata nel caso in cui usi un
sistema operativo in cui 'girano' altri processi, infatti in tal caso
otterresti delle misure errate.
In ogni modo non è una buona soluzione quella di tartassare direttamente il
processore con tutti i bit che vengono dal diodo a rifrazione.
A proposito, a cosa ti serve monitorare la velocità angolare del motorino
elettrico?
Se è solo per curiosità e non hai la necessità di uno strumento ben fatto (e
soprattutto vuoi spendere pochi soldi e poca fatica) allora puoi fare come
hai detto sopra ma usando necessariamente il DOS
che gestisce un solo processo alla volta.
Facci sapere.
Danilo

 Danilo
Grazie dell'interessamento spero di averti spiegato un po' meglio il tutto
Alessandro.