Carte PULSE et port parallèle
Transcription
Carte PULSE et port parallèle
Carte PULSE et port parallèle François TOUCHARD d'après un travail de F. Chollet, P-Y. Duval, G. Ionescu, A. Masserot ESIL Département Info Mini Carte électronique : Carte Pulse Cette carte a été réalisée par messieurs M.Moynot et H.Bonnefon, électroniciens au LAPP. Cette carte permet de générer un signal périodique de rapport cyclique 0.5 sur l’entrée ACK du port parallèle(Voir A2 Interface parallèle). Le signal ACK peut être ensuite utilisé comme signal d’interruption associé au vecteur 7, ou lu sur le bit 6 du registre d’état du port parallèle. La carte est munie : ● d’un commutateur et d’un témoin (LED) de mise sous-tension ● d’un sélecteur de gamme 1Hz-1KHz , 1KHz-500KHz et d’un sélecteur à choix multiple de fréquence. Le tableau ci-dessous donne les fréquences disponibles en fonction de la gamme et la position du sélecteur à choix multiple. Les périodes et fréquences indiquées sont données avec une précision de 20%. Sélecteur à choix multiple Gamme 1Hz - 1kHz 1kHz - 500kHz Période Fréquence Période Fréquence 8 1s 1Hz 1ms 1kHz 7 100ms 10Hz 100µs 10kHz 6 50ms 20Hz 50µs 20kHz 5 20ms 50Hz 25µs 40kHz 4 10ms 100Hz 12µs 83kHz 3 5ms 200Hz 7µs 143kHz 2 2ms 500Hz 3,5µs 285kHz 1 1ms 1kHz 2,2µs 454kHz Interface parallèle Registres de l’interface parallèle Ce paragraphe se concentre uniquement sur les éléments de l’interface parallèle qui seront utilisés dans ce TP. Le signal d’entrée (signal carré ; PWM = 0.5 ) est connecté au pin 10 (ACK) du connecteur Centronics. En tout moment, en lisant le registre d’état, le programmeur peut savoir l’état du signal d’interruption. Quand l’interruption est autorisée, une interruption hardware du niveau 7 est produite. Port Centronics ● Pin 10 Réception du dernier caractère ACK Adresses de l’imprimante ● Adresse de base 0x378 ● Adresse data Adresse de base 0x378 ● Adresse d’état Adresse de base + 1 0x379 ● Adresse de contrôle Adresse de base + 2 0x37a Registre « data » Paramètres : ● Bit 0-7 (8 bits à l’adresse 0x378) les données en sortie – ne sera pas utilisé Registre d’état Paramètres : (en lecture uniquement ; 8 bits ; adresse 0x379) ● Bit 0 1 = Erreur « time out » ● Bit 3 1 = Erreur de transmission ERROR ● Bit 4 1 = Imprimante ON LINE SLCT ● Bit 5 1 = Plus de papier PE ● Bit 6 1 = Accusé de réception ACK ● Bit 7 0 = Imprimante occupée BUSY Registre de contrôle Paramètres : ● Bit 4 (lecture/écriture ; 8 bits ; adresse 0x37a) 1 = Autoriser l’interruption IRQ 0 = pas d’interruption /IRQ Interruption Paramètres : (type hardware ; niveau 7) ● IRQ écrire 0x10 à l’adresse 0x37a ● IRQ écrire 0x00 à l’adresse 0x37a Aspects software Accéder à un port de l’imprimante ● unsigned char val = inb_p(adresse) Ex : lire l’état de l’imprimante unsigned char status = inb_p(0x379) ● outb_p(val, adresse) Ex : autoriser i’interruption ○ outb_p(0x10, 0x37a) pour pouvoir exécuter cette commande, il faut posséder un niveau de privilèges suffisant, obtenu en appelant la fonction iopl(3)