Cet ouvrage et des milliers d'autres font partie de la bibliothèque YouScribe
Obtenez un accès à la bibliothèque pour les lire en ligne
En savoir plus

Partagez cette publication

MI43
MI 43 – FINAL
Note: les parties 1 et 2 sont à rédiger sur des copies séparées
Final
Partie 1 : envoi de caractères vers une imprimantes via un port parallèle On souhaite implémenter une fonction qui réalise l'envoie d'un paquet de données vers une imprimante selon le protocole Centronics (SPP).
Description de l'interface du port parallèle Adresse de base :278h Description des registres de l'interface : Décalage RegistreAccès Description 0 Datalecture/ Octetde donnée transféré vers l'imprimante écriture 1 Statuslecture Etatdu port parallèle et de l'imprimante
bits 0 et 1réservé, généralementà 1 bit 2IRQ#, 0: interruption demandée par le port bit 3ERROR#, 0: une erreur est survenue bit 4SELECT, 1: l'imprimante est sélectionnée bit 5PAPER OUT,1 :plus de papier bit 6ACK#, 0: accusé de réception bit 7BUSY, 0: imprimante occupée * 2 Controlde port parallèle de la lignelecture/ Contrôle écriture bit 0STROBE#, 1: active la ligne STROBE ** bit 1Auto LineFeed,1 : autofeed (retour à la ligne automatique) bit 2Init, 0: initialisation de l'imprimante (remettre à un après l'initialisation) bit 3Select In,1 : sélection de l'imprimante (doit être à 1 pour envoyer des données) bit 4Enable IRQ,1 : active les interruptions bit 5Enable bi-direct.,1 : permet la lecture des données sur le port parallèle *** bits 6 et 7réservés, mettreà 1 * inversion matérielle : un 0 dans le registre indique que la ligne est à l'état haut et un 1 indique que la ligne est à l'état bas. ** il est nécessaire de mettre un 1 pour mettre la ligne STROBE à l'état bas (inversion matérielle)… *** utilisé pour utiliser le port parallèle en bidirectionnel (inutilisé ici mettre à 0)
Fonctionnement du dialogue avec l'imprimante Dialogue STROBE# BUSY ACK# DATA
L'hôte place les données sur le port Il vérifie que la ligne BUSY est désactivée Il active la ligne STROBE#, la maintient durant 1µs et la désactive L'imprimante en réponse active la ligne BUSY signalant qu'elle traite l'octet et ne peut en recevoir d'autre (généralement transfert dans un tampon interne) une fois le caractère traité (de quelques microsecondes à quelques secondes selon le remplissage du tampon de l'imprimante) l'imprimante désactive la ligne BUSY et envoie une impulsion sur la ligne ACK# en la mettant brièvement à l'état bas.
UTBM – Printemps 2000
1/2
Nicolas Lacaille