|
 |
Raccolta di Procedure ASM |
DelMicro 2/2 Creare tempi piccoli
[32 di 54] |
| Procedure di ritardo -
Il problema dei tempi di piccola
durata |
|
Come progettare procedure di
ritardo con tempi in µs e ms... |
 | Il
Timer di Sistema
sincronizza
i tempi di lavoro
di un processore interrompendolo circa
18
volte al secondo, cioè ogni
55 ms;
la lettura dei Ticks di sistema,
aggiornati con la stessa cadenza, ci permette di progettare
Procedure di ritardo (come la
Delay) precise,
affidabili e
portabili. |
 | Sfortunatamente la
Delay,
pur garantendo ritardi portabili fino a
1 ora,
non consente di scendere sotto il ritardo minimo, indivisibile, di
55ms, assolutamente
troppo grande per molte applicazioni, per esempio per attendere
che una data linea HW
assuma con certezza (cioè
si assesti) al
livello logico desiderato. |
 |
Il problema della disponibilità di
procedure in grado di garantire
ritardi di
piccola durata è molto sentito
nella programmazione (non solo Assembly)
dei dispositivi HW. |
 | Dunque bisogna cercare una via alternativa! E qui ci
vediamo costretti a versare ulteriori lacrime amare.. |
 | Ancora oggi i Grandi Vecchi narrano di una splendida
struttura di sistema, la
Funzione 86H
dell'INT 15H, in
grado di realizzare ritardi di straordinaria
precisione, dal minimo di 976
ns, cioè circa
1 microsecondo. |
 | Facendo riferimento ai sincronismi interni, legati al Timer di Sistema,
e a partire da un dato a 32 bit (praticamente affidato ai 2 registri
CX
e DX)
era
in grado di procurare
ritardi
precisi,
affidabili e portabili da un
minimo di
1
µs
ad un
massimo
di 232*967ns
= 4294967296*967ns
= 4153233375232ns,
pari a 4153233375µs,
pari a 4153233ms,
pari a 4153s, cioè
circa 69
minuti,
cioè circa 1 ora e
9 minuti! |
 |
Purtroppo l'avvento dei
nuovi Sistemi Operativi (Windows 2000/NT/XP) ha vanificato la soddisfazione di aver
risolto alla grande il
problema. |
 |
Di fatto Windows 2000/NT/XP
non riconoscono più la favolosa
funzione 86H di INT
15H, in grado di realizzare
ritardi di
straordinaria precisione. |
 | Dopo la fase di sconforto è,
naturalmente seguita la luce:
la conoscenza dei segreti del computer mi ha spinto a cercare una soluzione
definitiva, sicura e portabile, anche per tempi minori del
Tick di sistema. |
 | Fatto sta che il Timer di Sistema
contiene 3 temporizzatori, dedicati a
diverse attività; uno di essi può essere controllato pienamente dal
programmatore assembly, per generare effetti sonori
sullo speaker. |
 | Lo speaker è il piccolo
altoparlante inserito nei computer usato
per dare segnalazione acustica in numerose
occasioni; come altri eventi anche i beep di
sistema sono ora soverchiati dai
nuovi Sistemi Operativi (Windows 2000/NT/XP,
...non se ne può più!!), ma pur non potendo godere del loro servizio è
comunque possibile gestire il contatore interno che li genera. |
 |
L'ennesima idea geniale è quella
di obbligare il Canale2
del Timer
a consumare tempo per noi. |
 | Per assicurare ritardi di assoluta precisione
la Libreria
Giobe.ASM/LIB
dispone di:
 | Procedure agganciate al
Canale2 del Timer,
come
DelMicro
(per ritardi multipli di 1 µs),
Del010Mi
(10µs),
Del100Mi
(100µs),
Del200Mi
(200µs),
Del500Mi
(500µs)
e
Del_1
(1ms) |
 | Procedure agganciate ai Ticks di sistema,
come
Delay
(per ritardi multipli di 55 ms),
Del_100
(100ms),
Del_1000
(1s),
Del_1500 (1,5s)
e
Del_2000
(2s) |
|
©
2001-2010 - Studio Tecnico
ing. Giorgio OBER
Tutti i diritti sono riservati
|