|
|
LA PROGRAMMATION DU PIT (8254) Le PIT (Programmable Interval Timer) permet de generer une interruption à intervale regulier. Le PIT possede 3 compteurs (de 16 bit)independant les uns des autres , chacun est utilise pour une tache specifique :
Le compteur 0 est utilise pour faire fonctionner le timer systeme
Le compteur 1 est utilise pour envoye un signal periodique au DMA, pour rafraichir la memoire (pour les vieux PC).
Le compteur 2 est utilise pour creer des sons pour le speaker du PC (speaker=haut-parleur).
Le principe de fonctionnement est simple : Chaque compteur est décrémenté de 1 à une frequence de 1.193.181 Hz ($1234DD).C'est à dire qu'il est décrémenté de 1 toute les 838,1 nS (nano second )= 1/1193181 . (1 ns = 10^-9 seconde) Et des qu'un compteur arrive à 0 , il genere une interruption. Le vecteur d'interruption se trouve à l'adresse : 20H (c'est valable uniquement pour le compteur 0 ,le compteur 2 est relié au speaker)
LES PORTS DU PIT : 40H R/W : PIT COMPTEUR 0 (compteur system) ,valeur par defaut =0
MODE 0 : Interrupt on terminal count :
Une fois que le compteur est chargé avec une valeur , Il est decompter et arriver à 0 ,il genere une unique interruption . Quand on charge le compteur avec une valeur pendant le decompte ou apres,le compteur repart avec la nouvelle valeur.
MODE 2 : Rate generator :
C'est presque pareil que le mode 0 ,sauf qu'ici le compteur quand il a atteint 0 ,il genere une interruption et repart avec la valeur charger au depart et continue le cycle indefiniment.
MODE 3 : Square wave generator :
C'est pareil que le mode 2 (en realité ,il y a des petites différences que je ne saurais expliqué ). Sachez que c'est ce mode qui est le plus utilisé .
Je pense que les modes 1,4,5 ne servent pas dans la programmation PC (?)
Pour lire un compteur,il exite 3 façon :
- Soit lire directement le compteur , sur le port correspondant (2 octet ,LO puis HI). Il faut obligatoirement stopper l'horloge pendant la lecture sinon le compteur risque de continuer avec une fausse valeur. (je ne sais pas comment arreter l'horloge ,c'est peut être impossible sur PC ??)
- Soit utiliser le compteur latch : Apres avoir ecrit la commande latch dans le registre de control,la valeur du compteur est maintenu jusqu'a sa lecture (2 octet,LO puis HI) au port correspondant au compteur selectionner. Il n'est pas possible d'envoyer une autre commande latch si le compteur n'a pas était lu auparavent .
- Soit utiliser la commande read back : Bit 7-6 = 11 : Indique que c'est la commande read back
Il est possible de selectionner plusieurs compteurs en même temps. (Il faudra lire les compteurs sur chaque port correspondant) Si la lecture de l'octet d'etat et du compteur (bit 5 et 4) sont selectionner en même temps ,le premier octet qui sera lu (sur le port) sera celui de l' octet d'etat suivit des 2 octets du compteur (LO puis HI). Il n'est pas possible d'envoyer d'autre command read back ,tant que l'octet d'etat ou (et) le compteur n'ont pas etait lu.
STRUCTURE DE L'OCTET D'ETAT : Bit 7 : Etat du signal de sortir
LE SPEAKER :
Le speaker ne connait que 2 etats :
1 : la membrane du haut parleur avance 0 : la membrane du haut parleur recule
C'est en faisant vibrer cette membrane qu'on peut créer des son. L'oreille humaine peut entendre des sons avec frequence situées entre 20 Hz et 20 KHz ,le Hertz (Hz) etant le nombre de vibration pas second .
Le speaker est relié au compteur 2 du PIT ,il y a 2 bit qui permettent de connecter ou deconnecter le speaker . Ces 2 bits se trouvent au port 61h (bit 0 et 1). Il faut les mettre à 1 pour connecter le speaker et les mettre à 0 pour deconecter le speaker .
Programme d'exemple (assembleur 80x86)
Directives de compilation |
|
|
|