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)