Sezione |
Indirizzi Base
Registri Interni
|
Libreria GIOBE.ASM |
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:
|
|
Libreria GiobeASM | DelMicro 2/2 Creare tempi piccoli | |||||||
32 di 54 |
|
|
|
|
Home |
|
|||||||
|
Motore Ricerca |
|